diff --git a/InvenTree/InvenTree/middleware.py b/InvenTree/InvenTree/middleware.py index 8a2c0b17a4..26cbc95bbf 100644 --- a/InvenTree/InvenTree/middleware.py +++ b/InvenTree/InvenTree/middleware.py @@ -1,6 +1,7 @@ from django.shortcuts import HttpResponseRedirect from django.urls import reverse_lazy from django.db import connection +from django.shortcuts import redirect import logging import time import operator @@ -55,7 +56,7 @@ class AuthRequiredMiddleware(object): # Does the provided token match a valid user? if Token.objects.filter(key=token).exists(): - allowed = ['/media/', '/static/'] + allowed = ['/api/', '/media/', '/static/'] # Only allow token-auth for /media/ or /static/ dirs! if any([request.path_info.startswith(a) for a in allowed]): @@ -63,9 +64,17 @@ class AuthRequiredMiddleware(object): # No authorization was found for the request if not authorized: - if not request.path_info == reverse_lazy('login') and not request.path_info.startswith('/api/'): + # A logout request will redirect the user to the login screen + if request.path_info == reverse_lazy('logout'): return HttpResponseRedirect(reverse_lazy('login')) + login = reverse_lazy('login') + + if not request.path_info == login and not request.path_info.startswith('/api/'): + # Save the 'next' parameter to pass through to the login view + + return redirect('%s?next=%s' % (login, request.path)) + # Code to be executed for each request/response after # the view is called. diff --git a/InvenTree/InvenTree/status_codes.py b/InvenTree/InvenTree/status_codes.py index efb76b86fa..2082eac70b 100644 --- a/InvenTree/InvenTree/status_codes.py +++ b/InvenTree/InvenTree/status_codes.py @@ -54,6 +54,10 @@ class StatusCode: return codes + @classmethod + def text(cls, key): + return cls.options.get(key, None) + @classmethod def items(cls): return cls.options.items() @@ -150,6 +154,7 @@ class StockStatus(StatusCode): ATTENTION = 50 # Item requires attention DAMAGED = 55 # Item is damaged DESTROYED = 60 # Item is destroyed + REJECTED = 65 # Item is rejected LOST = 70 # Item has been lost RETURNED = 85 # Item has been returned from a customer @@ -167,6 +172,7 @@ class StockStatus(StatusCode): DAMAGED: _("Damaged"), DESTROYED: _("Destroyed"), LOST: _("Lost"), + REJECTED: _("Rejected"), RETURNED: _("Returned"), SHIPPED: _('Shipped'), ASSIGNED_TO_BUILD: _("Used for Build"), @@ -178,6 +184,7 @@ class StockStatus(StatusCode): ATTENTION: 'yellow', DAMAGED: 'red', DESTROYED: 'red', + REJECTED: 'red', SHIPPED: 'green', ASSIGNED_TO_BUILD: 'blue', ASSIGNED_TO_OTHER_ITEM: 'blue', @@ -195,11 +202,21 @@ class StockStatus(StatusCode): UNAVAILABLE_CODES = [ DESTROYED, LOST, + REJECTED, SHIPPED, ASSIGNED_TO_BUILD, ASSIGNED_TO_OTHER_ITEM, ] + # The following codes are available for receiving goods + RECEIVING_CODES = [ + OK, + ATTENTION, + DAMAGED, + DESTROYED, + REJECTED + ] + class BuildStatus(StatusCode): diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index cf53667fb9..1220f09ddc 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -35,6 +35,7 @@ from rest_framework.documentation import include_docs_urls from .views import IndexView, SearchView, DatabaseStatsView from .views import SettingsView, EditUserView, SetPasswordView +from .views import DynamicJsView from .api import InfoView, BarcodePluginView, ActionPluginView @@ -74,6 +75,12 @@ settings_urls = [ ] dynamic_javascript_urls = [ + url(r'^part.js', DynamicJsView.as_view(template_name='js/part.html'), name='part.js'), + url(r'^stock.js', DynamicJsView.as_view(template_name='js/stock.html'), name='stock.js'), + url(r'^build.js', DynamicJsView.as_view(template_name='js/build.html'), name='build.js'), + url(r'^order.js', DynamicJsView.as_view(template_name='js/order.html'), name='order.js'), + url(r'^company.js', DynamicJsView.as_view(template_name='js/company.html'), name='company.js'), + url(r'^bom.js', DynamicJsView.as_view(template_name='js/bom.html'), name='bom.js'), ] urlpatterns = [ @@ -95,7 +102,7 @@ urlpatterns = [ url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')), - url(r'^login/', auth_views.LoginView.as_view(), name='login'), + url(r'^login/?', auth_views.LoginView.as_view(), name='login'), url(r'^logout/', auth_views.LogoutView.as_view(template_name='registration/logout.html'), name='logout'), url(r'^settings/', include(settings_urls)), diff --git a/InvenTree/InvenTree/views.py b/InvenTree/InvenTree/views.py index 943a18d35c..c988859042 100644 --- a/InvenTree/InvenTree/views.py +++ b/InvenTree/InvenTree/views.py @@ -514,6 +514,17 @@ class SearchView(TemplateView): return super(TemplateView, self).render_to_response(context) +class DynamicJsView(TemplateView): + """ + View for returning javacsript files, + which instead of being served dynamically, + are passed through the django translation engine! + """ + + template_name = "" + content_type = 'text/javascript' + + class SettingsView(TemplateView): """ View for configuring User settings """ diff --git a/InvenTree/locale/de/LC_MESSAGES/django.mo b/InvenTree/locale/de/LC_MESSAGES/django.mo index 84a39a22c6..f7a6d40005 100644 Binary files a/InvenTree/locale/de/LC_MESSAGES/django.mo and b/InvenTree/locale/de/LC_MESSAGES/django.mo differ diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index f4f0d4757d..8ec5d0a027 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-02 04:54+0000\n" -"PO-Revision-Date: 2020-02-02 08:07+0100\n" +"POT-Creation-Date: 2020-05-03 09:34+0000\n" +"PO-Revision-Date: 2020-05-03 11:32+0200\n" "Last-Translator: Christian Schlüter \n" "Language-Team: C \n" "Language: de\n" @@ -18,30 +18,28 @@ msgstr "" "X-Generator: Lokalize 19.12.0\n" #: InvenTree/api.py:61 -#, fuzzy -#| msgid "No lines specified" msgid "No action specified" -msgstr "Keine Zeilen angegeben" +msgstr "Keine Aktion angegeben" #: InvenTree/api.py:75 msgid "No matching action found" -msgstr "" +msgstr "Keine passende Aktion gefunden" #: InvenTree/api.py:106 msgid "No barcode data provided" -msgstr "" +msgstr "Keine Strichcodedaten bereitgestellt" #: InvenTree/api.py:121 msgid "Barcode successfully decoded" -msgstr "" +msgstr "Strichcode erfolgreich dekodiert" #: InvenTree/api.py:124 msgid "Barcode plugin returned incorrect response" -msgstr "" +msgstr "Ungültige Antwort vom Strichcode-Plugin" #: InvenTree/api.py:134 msgid "Unknown barcode format" -msgstr "" +msgstr "Unbekanntes Strichcode-Format" #: InvenTree/helpers.py:258 order/models.py:150 order/models.py:224 msgid "Invalid quantity provided" @@ -81,19 +79,19 @@ msgstr "Datei zum Anhängen auswählen" msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/settings.py:274 +#: InvenTree/settings.py:295 msgid "English" msgstr "Englisch" -#: InvenTree/settings.py:275 +#: InvenTree/settings.py:296 msgid "German" msgstr "Deutsch" -#: InvenTree/settings.py:276 +#: InvenTree/settings.py:297 msgid "French" msgstr "Französisch" -#: InvenTree/settings.py:277 +#: InvenTree/settings.py:298 msgid "Polish" msgstr "Polnisch" @@ -128,7 +126,7 @@ msgstr "Zurückgegeben" #: InvenTree/status_codes.py:132 InvenTree/status_codes.py:171 #: order/templates/order/sales_order_base.html:98 msgid "Shipped" -msgstr "" +msgstr "Versendet" #: InvenTree/status_codes.py:165 msgid "OK" @@ -148,17 +146,15 @@ msgstr "Zerstört" #: InvenTree/status_codes.py:172 msgid "Used for Build" -msgstr "" +msgstr "Verwendet für Bau" #: InvenTree/status_codes.py:173 -#, fuzzy -#| msgid "Edit Stock Item" msgid "Installed in Stock Item" -msgstr "Lagerobjekt bearbeiten" +msgstr "In Lagerobjekt installiert" #: InvenTree/status_codes.py:214 build/templates/build/allocate.html:349 #: order/templates/order/sales_order_detail.html:220 -#: part/templates/part/part_base.html:114 part/templates/part/tabs.html:21 +#: part/templates/part/tabs.html:21 templates/js/build.html:120 msgid "Allocated" msgstr "Zugeordnet" @@ -168,7 +164,7 @@ msgstr "Ungültiger Buchstabe im Teilenamen" #: InvenTree/validators.py:52 msgid "IPN must match regex pattern" -msgstr "" +msgstr "IPN muss zu Regex-Muster passen" #: InvenTree/validators.py:60 #, python-brace-format @@ -187,9 +183,9 @@ msgstr "Überschuss darf 100% nicht überschreiten" msgid "Overage must be an integer value or a percentage" msgstr "Überschuss muss eine Ganzzahl oder ein Prozentwert sein" -#: InvenTree/views.py:536 +#: InvenTree/views.py:547 msgid "Database Statistics" -msgstr "" +msgstr "Datenbankstatistiken" #: build/forms.py:37 msgid "Confirm" @@ -204,24 +200,20 @@ msgid "Confirm build completion" msgstr "Bau-Fertigstellung bestätigen" #: build/models.py:57 build/templates/build/build_base.html:65 -#, fuzzy -#| msgid "Build Notes" msgid "Build Title" -msgstr "Bau-Bemerkungen" +msgstr "Bau-Titel" #: build/models.py:60 msgid "Brief description of the build" msgstr "Kurze Beschreibung des Baus" #: build/models.py:68 build/templates/build/build_base.html:86 -#, fuzzy -#| msgid "Can Build" msgid "Parent Build" -msgstr "Herstellbar?" +msgstr "Eltern-Bau" #: build/models.py:69 msgid "Parent build to which this build is allocated" -msgstr "" +msgstr "Eltern-Bau, dem dieser Bau zugewiesen ist" #: build/models.py:74 build/templates/build/allocate.html:320 #: build/templates/build/auto_allocate.html:18 @@ -230,7 +222,9 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:30 #: order/templates/order/purchase_order_detail.html:145 #: part/templates/part/part_app_base.html:7 -#: part/templates/part/set_category.html:13 +#: part/templates/part/set_category.html:13 templates/js/bom.html:135 +#: templates/js/build.html:41 templates/js/company.html:109 +#: templates/js/part.html:111 templates/js/stock.html:206 msgid "Part" msgstr "Teil" @@ -239,20 +233,16 @@ msgid "Select part to build" msgstr "Teil für den Bau wählen" #: build/models.py:88 -#, fuzzy -#| msgid "Order reference" msgid "Sales Order Reference" -msgstr "Bestell-Referenz" +msgstr "Bestellungsreferenz" #: build/models.py:92 msgid "SalesOrder to which this build is allocated" -msgstr "" +msgstr "Bestellung, die diesem Bau zugwiesen ist" #: build/models.py:97 -#, fuzzy -#| msgid "Stock Locations" msgid "Source Location" -msgstr "Lagerobjekt-Standorte" +msgstr "Quell-Standort" #: build/models.py:101 msgid "" @@ -263,42 +253,36 @@ msgstr "" "beliebigen Lager-Standort)" #: build/models.py:105 -#, fuzzy -#| msgid "Quantity" msgid "Build Quantity" -msgstr "Anzahl" +msgstr "Bau-Anzahl" #: build/models.py:108 msgid "Number of parts to build" msgstr "Anzahl der zu bauenden Teile" -#: build/models.py:112 part/templates/part/part_base.html:131 +#: build/models.py:112 part/templates/part/part_base.html:138 msgid "Build Status" msgstr "Bau-Status" #: build/models.py:116 -#, fuzzy -#| msgid "Build status" msgid "Build status code" -msgstr "Bau-Status" +msgstr "Bau-Statuscode" #: build/models.py:120 stock/models.py:377 -#, fuzzy -#| msgid "Batch" msgid "Batch Code" -msgstr "Los" +msgstr "Losnummer" #: build/models.py:124 msgid "Batch code for this build output" msgstr "Chargennummer für diese Bau-Ausgabe" #: build/models.py:139 build/templates/build/detail.html:55 -#: company/templates/company/supplier_part_base.html:57 +#: company/templates/company/supplier_part_base.html:60 #: company/templates/company/supplier_part_detail.html:24 #: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 #: stock/models.py:371 stock/templates/stock/item_base.html:189 msgid "External Link" -msgstr "" +msgstr "Externer Link" #: build/models.py:140 stock/models.py:373 msgid "Link to external URL" @@ -309,6 +293,7 @@ msgstr "Link zu einer externen URL" #: order/templates/order/purchase_order_detail.html:200 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 #: stock/models.py:439 stock/templates/stock/tabs.html:17 +#: templates/js/bom.html:229 templates/js/stock.html:290 msgid "Notes" msgstr "Notizen" @@ -328,22 +313,16 @@ msgstr "" "zugewiesene Anzahl ({n}) darf nicht die verfügbare ({q}) Anzahl überschreiten" #: build/models.py:460 order/models.py:546 -#, fuzzy -#| msgid "Stock Item to allocate to build" msgid "StockItem is over-allocated" -msgstr "Lagerobjekt dem Bau zuweisen" +msgstr "Zu viele Lagerobjekte zugewiesen" #: build/models.py:463 order/models.py:549 -#, fuzzy -#| msgid "Quantity must be greater than zero" msgid "Allocation quantity must be greater than zero" -msgstr "Anzahl muss größer Null sein" +msgstr "Anzahl muss größer null sein" #: build/models.py:466 -#, fuzzy -#| msgid "Quantity must be 1 for item with a serial number" msgid "Quantity must be 1 for serialized stock" -msgstr "Anzahl muss für Objekte mit Seriennummer \"1\" sein" +msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" #: build/models.py:496 msgid "Build to allocate parts" @@ -363,10 +342,8 @@ msgid "Order Parts" msgstr "Teile bestellen" #: build/templates/build/allocate.html:18 -#, fuzzy -#| msgid "Allocate Stock to Build" msgid "Automatically allocate stock" -msgstr "Lagerbestand dem Bau zuweisen" +msgstr "Lagerbestand automatisch zuweisen" #: build/templates/build/allocate.html:18 msgid "Auto Allocate" @@ -377,10 +354,8 @@ msgid "Unallocate" msgstr "Zuweisung aufheben" #: build/templates/build/allocate.html:78 templates/stock_table.html:8 -#, fuzzy -#| msgid "Stock Item" msgid "New Stock Item" -msgstr "Lagerobjekt" +msgstr "Neues Lagerobjekt" #: build/templates/build/allocate.html:161 #: order/templates/order/sales_order_detail.html:68 @@ -403,47 +378,47 @@ msgstr "Seriennummer" #: stock/templates/stock/item_base.html:20 #: stock/templates/stock/item_base.html:26 #: stock/templates/stock/item_base.html:154 -#: stock/templates/stock/stock_adjust.html:18 +#: stock/templates/stock/stock_adjust.html:18 templates/js/bom.html:172 +#: templates/js/build.html:52 templates/js/stock.html:437 msgid "Quantity" msgstr "Anzahl" #: build/templates/build/allocate.html:177 #: build/templates/build/auto_allocate.html:20 #: stock/templates/stock/item_base.html:134 -#: stock/templates/stock/stock_adjust.html:17 +#: stock/templates/stock/stock_adjust.html:17 templates/js/stock.html:277 msgid "Location" msgstr "Standort" #: build/templates/build/allocate.html:201 -#: order/templates/order/sales_order_detail.html:92 -#, fuzzy -#| msgid "Edit Stock Location" +#: order/templates/order/sales_order_detail.html:92 templates/js/build.html:124 msgid "Edit stock allocation" msgstr "Lagerobjekt-Standort bearbeiten" #: build/templates/build/allocate.html:202 -#: order/templates/order/sales_order_detail.html:93 -#, fuzzy -#| msgid "Delete Stock Location" +#: order/templates/order/sales_order_detail.html:93 templates/js/build.html:125 msgid "Delete stock allocation" -msgstr "Standort löschen" +msgstr "Zuweisung löschen" -#: build/templates/build/allocate.html:229 -#, fuzzy -#| msgid "No serial numbers found" +#: build/templates/build/allocate.html:229 templates/js/bom.html:288 msgid "No BOM items found" -msgstr "Keine Seriennummern gefunden" +msgstr "Keine BOM-Einträge gefunden" #: build/templates/build/allocate.html:328 -#: company/templates/company/supplier_part_base.html:50 +#: company/templates/company/supplier_part_base.html:53 #: company/templates/company/supplier_part_detail.html:27 #: order/templates/order/purchase_order_detail.html:157 #: part/templates/part/detail.html:38 part/templates/part/set_category.html:14 +#: templates/js/bom.html:157 templates/js/company.html:60 +#: templates/js/order.html:157 templates/js/order.html:230 +#: templates/js/part.html:167 templates/js/stock.html:227 +#: templates/js/stock.html:418 msgid "Description" msgstr "Beschreibung" #: build/templates/build/allocate.html:333 #: order/templates/order/purchase_order_detail.html:170 +#: templates/js/bom.html:164 msgid "Reference" msgstr "Referenz" @@ -452,73 +427,57 @@ msgid "Required" msgstr "benötigt" #: build/templates/build/allocate.html:347 -#, fuzzy -#| msgid "Assign Parts" msgid "Assigned" -msgstr "Teile zuweisen" +msgstr "Zugewiesen" #: build/templates/build/allocate.html:385 #: order/templates/order/sales_order_detail.html:270 -#, fuzzy -#| msgid "All parts" msgid "Buy parts" -msgstr "Alle Teile" +msgstr "Teile kaufen" #: build/templates/build/allocate.html:389 #: order/templates/order/sales_order_detail.html:274 -#, fuzzy -#| msgid "Build status" msgid "Build parts" -msgstr "Bau-Status" +msgstr "Bauteile" #: build/templates/build/allocate.html:392 -#, fuzzy -#| msgid "Allocate Stock to Build" msgid "Allocate stock" -msgstr "Lagerbestand dem Bau zuweisen" +msgstr "Lagerbestand zuweisen" #: build/templates/build/auto_allocate.html:8 -#, fuzzy -#| msgid "Allocate Stock to Build" msgid "Automatically Allocate Stock" -msgstr "Lagerbestand dem Bau zuweisen" +msgstr "Lagerbestand automatisch zuweisen" #: build/templates/build/auto_allocate.html:9 msgid "" "Stock Items are selected for automatic allocation if there is only a single " "stock item available." msgstr "" +"Teile werden automatisch zugewiesen, wenn nur ein Lagerobjekt verfügbar ist" #: build/templates/build/auto_allocate.html:10 -#, fuzzy -#| msgid "Stock Item to allocate to build" msgid "The following stock items will be allocated to the build:" -msgstr "Lagerobjekt dem Bau zuweisen" +msgstr "Folgende Lagerobjekte werden dem Bau automatisch zugewiesen:" #: build/templates/build/auto_allocate.html:39 -#, fuzzy -#| msgid "Stock Item to allocate to build" msgid "No stock items found that can be allocated to this build" -msgstr "Lagerobjekt dem Bau zuweisen" +msgstr "Keine Lagerobjekt gefunden, die diesem Bau zugewiesen werden können" #: build/templates/build/build_base.html:8 #: build/templates/build/build_base.html:34 #: build/templates/build/complete.html:6 -#: stock/templates/stock/item_base.html:168 templates/navbar.html:12 +#: stock/templates/stock/item_base.html:168 templates/js/build.html:33 +#: templates/navbar.html:12 msgid "Build" msgstr "Bau" #: build/templates/build/build_base.html:14 -#, fuzzy -#| msgid "Stock Item to allocate to build" msgid "This build is allocated to Sales Order" -msgstr "Lagerobjekt dem Bau zuweisen" +msgstr "Dieser Bau ist der Bestellung zugeordnet" #: build/templates/build/build_base.html:19 -#, fuzzy -#| msgid "Stock Item to allocate to build" msgid "This build is a child of Build" -msgstr "Lagerobjekt dem Bau zuweisen" +msgstr "Dieser Bau ist Kind von Bau" #: build/templates/build/build_base.html:61 build/templates/build/detail.html:9 msgid "Build Details" @@ -526,7 +485,9 @@ msgstr "Bau-Status" #: build/templates/build/build_base.html:80 #: build/templates/build/detail.html:42 -#: stock/templates/stock/item_base.html:221 +#: stock/templates/stock/item_base.html:221 templates/js/build.html:57 +#: templates/js/order.html:162 templates/js/order.html:235 +#: templates/js/stock.html:264 msgid "Status" msgstr "Status" @@ -536,72 +497,61 @@ msgstr "Status" #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 #: part/templates/part/allocation.html:27 -#: stock/templates/stock/item_base.html:122 -#, fuzzy -#| msgid "Sales Orders" +#: stock/templates/stock/item_base.html:122 templates/js/order.html:209 msgid "Sales Order" -msgstr "Bestellungen" +msgstr "Bestellung" #: build/templates/build/build_base.html:99 msgid "BOM Price" -msgstr "" +msgstr "Stücklistenpreis" #: build/templates/build/build_base.html:104 msgid "BOM pricing is incomplete" -msgstr "" +msgstr "Stücklistenbepreisung ist unvollständig" #: build/templates/build/build_base.html:107 -#, fuzzy -#| msgid "Show pricing information" msgid "No pricing information" -msgstr "Kosteninformationen ansehen" +msgstr "Keine Preisinformation" #: build/templates/build/build_output.html:9 build/templates/build/tabs.html:11 -#, fuzzy -#| msgid "Build status" msgid "Build Outputs" -msgstr "Bau-Status" +msgstr "Bau-Ausgabe" #: build/templates/build/complete.html:10 -#, fuzzy -#| msgid "Mark order as complete" msgid "Build order allocation is complete" -msgstr "Bestellung als vollständig markieren" +msgstr "Bau-Zuweisung ist vollständig" #: build/templates/build/complete.html:14 msgid "Warning: Build order allocation is not complete" -msgstr "" +msgstr "Warnung: Bau-Zuweisung ist unvollständig" #: build/templates/build/complete.html:15 msgid "" "Build Order has not been fully allocated. Ensure that all Stock Items have " "been allocated to the Build" msgstr "" +"Bau-Zuweisung ist unvollständig. Sicherstellen, dass alle Lagerobjekte dem " +"Bau zugewiesen wurden" #: build/templates/build/complete.html:20 msgid "The following actions will be performed:" -msgstr "" +msgstr "Die folgenden Aktionen werden ausgeführt:" #: build/templates/build/complete.html:22 -#, fuzzy -#| msgid "Receive parts to this location" msgid "Remove allocated items from stock" -msgstr "Teile in diesen Ort empfangen" +msgstr "Zugewiesene Teile dem Lager entnehmen" #: build/templates/build/complete.html:23 msgid "Add completed items to stock" -msgstr "" +msgstr "Komplettierte Teile dem Lager hinzufügen" #: build/templates/build/complete.html:29 msgid "The following items will be created" -msgstr "" +msgstr "Die folgenden Objekte werden erstellt" #: build/templates/build/delete_build_item.html:6 -#, fuzzy -#| msgid "Are you sure you want to delete the following Supplier Parts?" msgid "Are you sure you want to unallocate these parts?" -msgstr "" -"Sind Sie sicher, dass sie die folgenden Zulieferer-Teile löschen möchten?" +msgstr "Sind Sie sicher, dass sie die folgenden Teile entfernen möchten?" #: build/templates/build/detail.html:17 msgid "Title" @@ -616,13 +566,13 @@ msgid "Stock can be taken from any available location." msgstr "Bestand kann jedem verfügbaren Lagerort entnommen werden." #: build/templates/build/detail.html:48 -#: stock/templates/stock/item_base.html:161 +#: stock/templates/stock/item_base.html:161 templates/js/stock.html:272 msgid "Batch" msgstr "Los" #: build/templates/build/detail.html:61 #: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:92 +#: order/templates/order/sales_order_base.html:92 templates/js/build.html:65 msgid "Created" msgstr "Erstellt" @@ -638,23 +588,19 @@ msgstr "Ja" msgid "No" msgstr "Nein" -#: build/templates/build/detail.html:80 +#: build/templates/build/detail.html:80 templates/js/build.html:70 msgid "Completed" msgstr "Fertig" #: build/templates/build/index.html:6 build/templates/build/index.html:14 #: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 #: part/templates/part/tabs.html:28 -#, fuzzy -#| msgid "Build Notes" msgid "Build Orders" -msgstr "Bau-Bemerkungen" +msgstr "Bauaufträge" #: build/templates/build/index.html:24 -#, fuzzy -#| msgid "Build Notes" msgid "New Build Order" -msgstr "Bau-Bemerkungen" +msgstr "Neuer Bauauftrag" #: build/templates/build/notes.html:13 build/templates/build/notes.html:30 msgid "Build Notes" @@ -680,82 +626,65 @@ msgid "Details" msgstr "Details" #: build/templates/build/tabs.html:8 -#, fuzzy -#| msgid "All parts" msgid "Allocated Parts" -msgstr "Alle Teile" +msgstr "Zugeordnete Teile" #: build/templates/build/unallocate.html:8 msgid "Are you sure you wish to unallocate all stock for this build?" msgstr "" +"Sind Sie sicher, dass sie alle Lagerobjekte von diesem Bau entfernen möchten?" #: build/views.py:56 -#, fuzzy -#| msgid "Can Build" msgid "Cancel Build" -msgstr "Herstellbar?" +msgstr "Bau abbrechen" #: build/views.py:74 -#, fuzzy -#| msgid "Confirm order cancellation" msgid "Confirm build cancellation" -msgstr "Bestell-Stornierung bestätigen" +msgstr "Bauabbruch bestätigen" #: build/views.py:79 msgid "Build was cancelled" -msgstr "" +msgstr "Bau wurde abgebrochen" #: build/views.py:95 -#, fuzzy -#| msgid "Allocate Stock to Build" msgid "Allocate Stock" -msgstr "Lagerbestand dem Bau zuweisen" +msgstr "Lagerbestand zuweisen" #: build/views.py:108 msgid "No matching build found" -msgstr "" +msgstr "Kein passender Bau gefunden" #: build/views.py:127 -#, fuzzy -#| msgid "Confirm order cancellation" msgid "Confirm stock allocation" -msgstr "Bestell-Stornierung bestätigen" +msgstr "Lagerbestandszuordnung bestätigen" #: build/views.py:128 msgid "Check the confirmation box at the bottom of the list" -msgstr "" +msgstr "Bestätigunsbox am Ende der Liste bestätigen" #: build/views.py:148 build/views.py:446 -#, fuzzy -#| msgid "Unallocate" msgid "Unallocate Stock" msgstr "Zuweisung aufheben" #: build/views.py:161 msgid "Confirm unallocation of build stock" -msgstr "" +msgstr "Zuweisungsaufhebung bestätigen" #: build/views.py:162 msgid "Check the confirmation box" -msgstr "" +msgstr "Bestätigungsbox bestätigen" #: build/views.py:185 -#, fuzzy -#| msgid "Completed" msgid "Complete Build" -msgstr "Fertig" +msgstr "Bau fertigstellen" #: build/views.py:258 -#, fuzzy -#| msgid "Confirm build completion" msgid "Confirm completion of build" -msgstr "Bau-Fertigstellung bestätigen" +msgstr "Baufertigstellung bestätigen" #: build/views.py:265 -#, fuzzy -#| msgid "Invalid part selection" msgid "Invalid location selected" -msgstr "Ungültige Teileauswahl" +msgstr "Ungültige Ortsauswahl" #: build/views.py:290 stock/views.py:917 #, python-brace-format @@ -764,55 +693,43 @@ msgstr "Die folgende Seriennummer existiert bereits: ({sn})" #: build/views.py:311 msgid "Build marked as COMPLETE" -msgstr "" +msgstr "Bau als FERTIG markiert" #: build/views.py:387 -#, fuzzy -#| msgid "Can Build" msgid "Start new Build" -msgstr "Herstellbar?" +msgstr "Neuen Bau beginnen" #: build/views.py:412 -#, fuzzy -#| msgid "Created new stock item" msgid "Created new build" -msgstr "Neues Lagerobjekt erstellt" +msgstr "Neuen Bau angelegt" #: build/views.py:422 -#, fuzzy -#| msgid "Build Details" msgid "Edit Build Details" -msgstr "Bau-Status" +msgstr "Baudetails bearbeiten" #: build/views.py:427 msgid "Edited build" -msgstr "" +msgstr "Bau bearbeitet" #: build/views.py:436 msgid "Delete Build" -msgstr "" +msgstr "Bau entfernt" #: build/views.py:451 -#, fuzzy -#| msgid "Receive parts to this location" msgid "Removed parts from build allocation" -msgstr "Teile in diesen Ort empfangen" +msgstr "Teile von Bauzuordnung entfernt" #: build/views.py:461 -#, fuzzy -#| msgid "Create new Stock Item" msgid "Allocate new Part" -msgstr "Neues Lagerobjekt hinzufügen" +msgstr "Neues Teil zuordnen" #: build/views.py:614 -#, fuzzy -#| msgid "Edit Stock Location" msgid "Edit Stock Allocation" -msgstr "Lagerobjekt-Standort bearbeiten" +msgstr "Teilzuordnung bearbeiten" #: build/views.py:618 msgid "Updated Build Item" -msgstr "" +msgstr "Bauobjekt aktualisiert" #: common/models.py:69 msgid "Settings key (must be unique - case insensitive" @@ -853,18 +770,16 @@ msgid "Use this currency as the base currency" msgstr "Benutze diese Währung als Basis-Währung" #: common/views.py:21 -#, fuzzy -#| msgid "Create new Stock Item" msgid "Create new Currency" -msgstr "Neues Lagerobjekt hinzufügen" +msgstr "Neues Währung hinzufügen" #: common/views.py:29 msgid "Edit Currency" -msgstr "" +msgstr "Währung bearbeiten" #: common/views.py:36 msgid "Delete Currency" -msgstr "" +msgstr "Währung entfernen" #: company/models.py:83 msgid "Company name" @@ -907,10 +822,8 @@ msgid "Do you purchase items from this company?" msgstr "Kaufen Sie Teile von dieser Firma?" #: company/models.py:116 -#, fuzzy -#| msgid "Is this part a template part?" msgid "Does this company manufacture parts?" -msgstr "Ist dieses Teil eine Vorlage?" +msgstr "Produziert diese Firma Teile?" #: company/models.py:276 msgid "Select part" @@ -925,10 +838,8 @@ msgid "Supplier stock keeping unit" msgstr "Stock Keeping Units (SKU) des Zulieferers" #: company/models.py:292 -#, fuzzy -#| msgid "Manufacturer" msgid "Select manufacturer" -msgstr "Hersteller" +msgstr "Hersteller auswählen" #: company/models.py:296 msgid "Manufacturer part number" @@ -951,54 +862,55 @@ msgid "Part packaging" msgstr "Teile-Packaging" #: company/templates/company/company_base.html:7 -#: company/templates/company/company_base.html:22 +#: company/templates/company/company_base.html:22 templates/js/company.html:38 msgid "Company" msgstr "Firma" #: company/templates/company/company_base.html:42 #: company/templates/company/detail.html:8 -#, fuzzy -#| msgid "Company Notes" msgid "Company Details" -msgstr "Firmenbemerkungen" +msgstr "Firmendetails" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:48 templates/js/company.html:65 msgid "Website" -msgstr "" +msgstr "Website" #: company/templates/company/company_base.html:55 msgid "Address" -msgstr "" +msgstr "Adresse" #: company/templates/company/company_base.html:62 msgid "Phone" -msgstr "" +msgstr "Telefon" #: company/templates/company/company_base.html:69 msgid "Email" -msgstr "" +msgstr "Email" #: company/templates/company/company_base.html:76 msgid "Contact" -msgstr "" +msgstr "Kontakt" #: company/templates/company/detail.html:16 -#: company/templates/company/supplier_part_base.html:73 +#: company/templates/company/supplier_part_base.html:76 #: company/templates/company/supplier_part_detail.html:30 +#: templates/js/company.html:48 templates/js/company.html:158 msgid "Manufacturer" msgstr "Hersteller" #: company/templates/company/detail.html:21 -#: company/templates/company/supplier_part_base.html:63 +#: company/templates/company/supplier_part_base.html:66 #: company/templates/company/supplier_part_detail.html:21 order/models.py:111 #: order/templates/order/order_base.html:74 #: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:196 templates/js/company.html:52 +#: templates/js/company.html:134 templates/js/order.html:144 msgid "Supplier" msgstr "Zulieferer" #: company/templates/company/detail.html:26 order/models.py:275 -#: order/templates/order/sales_order_base.html:73 +#: order/templates/order/sales_order_base.html:73 templates/js/company.html:44 +#: templates/js/order.html:217 msgid "Customer" msgstr "Kunde" @@ -1009,75 +921,55 @@ msgstr "Zulieferer-Teile" #: company/templates/company/detail_part.html:13 #: order/templates/order/purchase_order_detail.html:67 #: part/templates/part/stock.html:82 -#, fuzzy -#| msgid "Supplier Part" msgid "New Supplier Part" -msgstr "Zulieferer-Teil" +msgstr "Neues Zulieferer-Teil" #: company/templates/company/detail_part.html:15 templates/stock_table.html:10 msgid "Options" -msgstr "" +msgstr "Optionen" #: company/templates/company/detail_part.html:19 -#, fuzzy -#| msgid "Delete attachment" msgid "Delete Parts" -msgstr "Anhang löschen" +msgstr "Teile löschen" #: company/templates/company/detail_part.html:43 #: part/templates/part/stock.html:76 -#, fuzzy -#| msgid "Part" msgid "New Part" -msgstr "Teil" +msgstr "Neues Teil" #: company/templates/company/detail_part.html:44 -#, fuzzy -#| msgid "Create new Stock Item" msgid "Create new Part" -msgstr "Neues Lagerobjekt hinzufügen" +msgstr "Neues Teil hinzufügen" #: company/templates/company/detail_part.html:49 company/views.py:51 -#, fuzzy -#| msgid "Supplier" msgid "New Supplier" -msgstr "Zulieferer" +msgstr "Neuer Zulieferer" #: company/templates/company/detail_part.html:50 company/views.py:182 -#, fuzzy -#| msgid "Supplier Part" msgid "Create new Supplier" -msgstr "Zulieferer-Teil" +msgstr "Neuen Zulieferer anlegen" #: company/templates/company/detail_part.html:55 company/views.py:57 -#, fuzzy -#| msgid "Manufacturer" msgid "New Manufacturer" -msgstr "Hersteller" +msgstr "Neuer Hersteller" #: company/templates/company/detail_part.html:56 company/views.py:185 -#, fuzzy -#| msgid "Manufacturer" msgid "Create new Manufacturer" -msgstr "Hersteller" +msgstr "Neuen Hersteller anlegen" #: company/templates/company/detail_stock.html:9 -#, fuzzy -#| msgid "Supplier part" msgid "Supplier Stock" -msgstr "Zulieferer-Teil" +msgstr "Zuliefererbestand" #: company/templates/company/detail_stock.html:34 #: company/templates/company/supplier_part_stock.html:38 #: part/templates/part/stock.html:54 templates/stock_table.html:5 msgid "Export" -msgstr "" +msgstr "Exportieren" #: company/templates/company/index.html:7 -#, fuzzy -#| msgid "Suppliers" msgid "Supplier List" -msgstr "Zulieferer" +msgstr "Zuliefererliste" #: company/templates/company/notes.html:10 #: company/templates/company/notes.html:27 @@ -1100,17 +992,13 @@ msgstr "Bestellungen" #: company/templates/company/purchase_orders.html:14 #: order/templates/order/purchase_orders.html:17 -#, fuzzy -#| msgid "Purchase Order" msgid "Create new purchase order" -msgstr "Kaufvertrag" +msgstr "Neue Bestellung anlegen" #: company/templates/company/purchase_orders.html:14 #: order/templates/order/purchase_orders.html:17 -#, fuzzy -#| msgid "Purchase Order" msgid "New Purchase Order" -msgstr "Kaufvertrag" +msgstr "Neue Bestellung" #: company/templates/company/sales_orders.html:9 #: company/templates/company/tabs.html:22 @@ -1123,144 +1011,122 @@ msgstr "Bestellungen" #: company/templates/company/sales_orders.html:14 #: order/templates/order/sales_orders.html:17 -#, fuzzy -#| msgid "Create new Stock Item" msgid "Create new sales order" -msgstr "Neues Lagerobjekt hinzufügen" +msgstr "Neuen Auftrag anlegen" #: company/templates/company/sales_orders.html:14 #: order/templates/order/sales_orders.html:17 -#, fuzzy -#| msgid "Sales Orders" msgid "New Sales Order" -msgstr "Bestellungen" +msgstr "Neuer Auftrag" #: company/templates/company/supplier_part_base.html:6 #: company/templates/company/supplier_part_base.html:19 stock/models.py:344 -#: stock/templates/stock/item_base.html:201 +#: stock/templates/stock/item_base.html:201 templates/js/company.html:150 msgid "Supplier Part" msgstr "Zulieferer-Teil" #: company/templates/company/supplier_part_base.html:23 -#, fuzzy -#| msgid "Supplier Part" -msgid "Edit supplier part" -msgstr "Zulieferer-Teil" +#: part/templates/part/orders.html:14 +msgid "Order part" +msgstr "Teil bestellen" #: company/templates/company/supplier_part_base.html:26 -#, fuzzy -#| msgid "Supplier Part" +msgid "Edit supplier part" +msgstr "Zuliefererteil bearbeiten" + +#: company/templates/company/supplier_part_base.html:29 msgid "Delete supplier part" -msgstr "Zulieferer-Teil" +msgstr "Zuliefererteil entfernen" -#: company/templates/company/supplier_part_base.html:35 +#: company/templates/company/supplier_part_base.html:38 #: company/templates/company/supplier_part_detail.html:11 -#, fuzzy -#| msgid "Supplier Parts" msgid "Supplier Part Details" -msgstr "Zulieferer-Teile" +msgstr "Zuliefererteildetails" -#: company/templates/company/supplier_part_base.html:40 +#: company/templates/company/supplier_part_base.html:43 #: company/templates/company/supplier_part_detail.html:14 -#, fuzzy -#| msgid "Internal Part Number" msgid "Internal Part" -msgstr "Interne Teilenummer" +msgstr "Internes Teil" -#: company/templates/company/supplier_part_base.html:67 +#: company/templates/company/supplier_part_base.html:70 #: company/templates/company/supplier_part_detail.html:22 msgid "SKU" -msgstr "" +msgstr "SKU" -#: company/templates/company/supplier_part_base.html:77 +#: company/templates/company/supplier_part_base.html:80 #: company/templates/company/supplier_part_detail.html:31 -#, fuzzy -#| msgid "IPN" +#: templates/js/company.html:174 msgid "MPN" -msgstr "IPN (Interne Produktnummer)" +msgstr "MPN" -#: company/templates/company/supplier_part_base.html:84 +#: company/templates/company/supplier_part_base.html:87 #: company/templates/company/supplier_part_detail.html:34 msgid "Note" msgstr "Notiz" #: company/templates/company/supplier_part_orders.html:11 -#, fuzzy -#| msgid "Supplier Parts" msgid "Supplier Part Orders" -msgstr "Zulieferer-Teile" +msgstr "Zuliefererbestellungen" #: company/templates/company/supplier_part_pricing.html:12 -#, fuzzy -#| msgid "Show pricing information" msgid "Pricing Information" -msgstr "Kosteninformationen ansehen" +msgstr "Preisinformationen ansehen" #: company/templates/company/supplier_part_pricing.html:14 -#, fuzzy -#| msgid "Order notes" msgid "Order Multiple" -msgstr "Bestell-Notizen" +msgstr "Bestellvielfaches" #: company/templates/company/supplier_part_pricing.html:16 msgid "Base Price (Flat Fee)" -msgstr "" +msgstr "Grundpreis" #: company/templates/company/supplier_part_pricing.html:19 msgid "Price Breaks" -msgstr "" +msgstr "Preisstaffelung" #: company/templates/company/supplier_part_pricing.html:22 msgid "New Price Break" -msgstr "" +msgstr "Neue Preisstaffelung" #: company/templates/company/supplier_part_pricing.html:28 +#: templates/js/bom.html:213 msgid "Price" -msgstr "" +msgstr "Preis" #: company/templates/company/supplier_part_pricing.html:48 msgid "No price breaks have been added for this part" -msgstr "" +msgstr "Keine Preisstaffelung für dieses Teil" #: company/templates/company/supplier_part_stock.html:11 -#, fuzzy -#| msgid "Supplier part" msgid "Supplier Part Stock" -msgstr "Zulieferer-Teil" +msgstr "Zuliefererbestand" #: company/templates/company/supplier_part_stock.html:61 #: order/templates/order/purchase_order_detail.html:38 #: order/templates/order/purchase_order_detail.html:118 #: part/templates/part/stock.html:91 -#, fuzzy -#| msgid "Location" msgid "New Location" -msgstr "Standort" +msgstr "Neuer Standort" #: company/templates/company/supplier_part_stock.html:62 #: part/templates/part/stock.html:92 -#, fuzzy -#| msgid "Create new Stock Location" msgid "Create New Location" -msgstr "Neuen Lager-Standort erstellen" +msgstr "Neuen Standort anlegen" #: company/templates/company/supplier_part_tabs.html:5 -#, fuzzy -#| msgid "Part packaging" msgid "Pricing" -msgstr "Teile-Packaging" +msgstr "Bepreisung" #: company/templates/company/supplier_part_tabs.html:8 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 -#: stock/templates/stock/location.html:12 templates/navbar.html:11 +#: stock/templates/stock/location.html:12 templates/js/part.html:194 +#: templates/js/stock.html:235 templates/navbar.html:11 msgid "Stock" msgstr "Lagerbestand" #: company/templates/company/supplier_part_tabs.html:11 -#, fuzzy -#| msgid "On Order" msgid "Orders" -msgstr "bestellt" +msgstr "Bestellungen" #: company/templates/company/tabs.html:9 part/templates/part/category.html:83 #: templates/navbar.html:10 templates/stats.html:8 templates/stats.html:17 @@ -1273,118 +1139,84 @@ msgid "Suppliers" msgstr "Zulieferer" #: company/views.py:56 templates/navbar.html:17 -#, fuzzy -#| msgid "Manufacturer" msgid "Manufacturers" msgstr "Hersteller" #: company/views.py:62 templates/navbar.html:24 -#, fuzzy -#| msgid "Customer" msgid "Customers" -msgstr "Kunde" +msgstr "Kunden" #: company/views.py:63 -#, fuzzy -#| msgid "Customer" msgid "New Customer" -msgstr "Kunde" +msgstr "Neuer Kunde" #: company/views.py:70 -#, fuzzy -#| msgid "Company" msgid "Companies" -msgstr "Firma" +msgstr "Firmen" #: company/views.py:71 -#, fuzzy -#| msgid "Company" msgid "New Company" -msgstr "Firma" +msgstr "Neue Firma" #: company/views.py:147 -#, fuzzy -#| msgid "Company name" msgid "Update Company Image" -msgstr "Firmenname" +msgstr "Firmenbild aktualisieren" #: company/views.py:152 msgid "Updated company image" -msgstr "" +msgstr "Aktualisiertes Firmenbild" #: company/views.py:162 -#, fuzzy -#| msgid "Company" msgid "Edit Company" -msgstr "Firma" +msgstr "Firma bearbeiten" #: company/views.py:166 -#, fuzzy -#| msgid "Link to external company information" msgid "Edited company information" -msgstr "Link auf externe Firmeninformation" +msgstr "Firmeninformation bearbeitet" #: company/views.py:188 -#, fuzzy -#| msgid "Create new Stock Item" msgid "Create new Customer" -msgstr "Neues Lagerobjekt hinzufügen" +msgstr "Neuen Kunden anlegen" #: company/views.py:190 -#, fuzzy -#| msgid "Create new Stock Item" msgid "Create new Company" -msgstr "Neues Lagerobjekt hinzufügen" +msgstr "Neue Firma anlegen" #: company/views.py:217 -#, fuzzy -#| msgid "Created new stock item" msgid "Created new company" -msgstr "Neues Lagerobjekt erstellt" +msgstr "Neue Firma angelegt" #: company/views.py:227 -#, fuzzy -#| msgid "Company" msgid "Delete Company" -msgstr "Firma" +msgstr "Firma löschen" #: company/views.py:232 -#, fuzzy -#| msgid "Company address" msgid "Company was deleted" -msgstr "Firmenadresse" +msgstr "Firma gelöscht" #: company/views.py:256 -#, fuzzy -#| msgid "Supplier Part" msgid "Edit Supplier Part" -msgstr "Zulieferer-Teil" +msgstr "Zuliefererteil bearbeiten" #: company/views.py:265 part/templates/part/stock.html:83 -#, fuzzy -#| msgid "Supplier Part" msgid "Create new Supplier Part" -msgstr "Zulieferer-Teil" +msgstr "Neues Zuliefererteil anlegen" #: company/views.py:325 -#, fuzzy -#| msgid "Supplier Part" msgid "Delete Supplier Part" -msgstr "Zulieferer-Teil" +msgstr "Zuliefererteil entfernen" #: company/views.py:395 msgid "Add Price Break" -msgstr "" +msgstr "Preisstaffel hinzufügen" #: company/views.py:437 msgid "Edit Price Break" -msgstr "" +msgstr "Preisstaffel bearbeiten" #: company/views.py:452 -#, fuzzy -#| msgid "Delete attachment" msgid "Delete Price Break" -msgstr "Anhang löschen" +msgstr "Preisstaffel löschen" #: order/forms.py:24 msgid "Place order" @@ -1401,7 +1233,7 @@ msgstr "Bestellung stornieren" #: order/forms.py:68 order/templates/order/sales_order_base.html:46 msgid "Ship order" -msgstr "" +msgstr "Bestellung versenden" #: order/forms.py:79 msgid "Receive parts to this location" @@ -1424,10 +1256,8 @@ msgid "Order notes" msgstr "Bestell-Notizen" #: order/models.py:114 -#, fuzzy -#| msgid "Order reference" msgid "Supplier order reference code" -msgstr "Bestell-Referenz" +msgstr "Bestellreferenz" #: order/models.py:148 order/models.py:222 part/views.py:1113 #: stock/models.py:607 @@ -1443,14 +1273,12 @@ msgid "Lines can only be received against an order marked as 'Placed'" msgstr "Nur Teile aufgegebener Bestllungen können empfangen werden" #: order/models.py:281 -#, fuzzy -#| msgid "Order reference" msgid "Customer order reference code" -msgstr "Bestell-Referenz" +msgstr "Bestellreferenz" #: order/models.py:320 msgid "SalesOrder cannot be shipped as it is not currently pending" -msgstr "" +msgstr "Bestellung kann nicht versendet werden weil sie nicht anhängig ist" #: order/models.py:397 msgid "Item quantity" @@ -1466,7 +1294,7 @@ msgstr "Position - Notizen" #: order/models.py:427 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:175 +#: stock/templates/stock/item_base.html:175 templates/js/order.html:136 msgid "Purchase Order" msgstr "Kaufvertrag" @@ -1480,44 +1308,32 @@ msgstr "Empfangene Objekt-Anzahl" #: order/models.py:537 msgid "Cannot allocate stock item to a line with a different part" -msgstr "" +msgstr "Kann Lagerobjekt keiner Zeile mit einem anderen Teil hinzufügen" #: order/models.py:539 msgid "Cannot allocate stock to a line without a part" -msgstr "" +msgstr "Kann Lagerobjekt keiner Zeile ohne Teil hinzufügen" #: order/models.py:542 -#, fuzzy -#| msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgid "Allocation quantity cannot exceed stock quantity" -msgstr "" -"zugewiesene Anzahl ({n}) darf nicht die verfügbare ({q}) Anzahl überschreiten" +msgstr "zugewiesene Anzahl darf nicht die verfügbare Anzahl überschreiten" #: order/models.py:552 -#, fuzzy -#| msgid "Quantity must be 1 for item with a serial number" msgid "Quantity must be 1 for serialized stock item" -msgstr "Anzahl muss für Objekte mit Seriennummer \"1\" sein" +msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" #: order/models.py:569 -#, fuzzy -#| msgid "Stock Item to allocate to build" msgid "Select stock item to allocate" -msgstr "Lagerobjekt dem Bau zuweisen" +msgstr "Lagerobjekt für Zuordnung auswählen" #: order/models.py:572 -#, fuzzy -#| msgid "Enter a valid quantity" msgid "Enter stock allocation quantity" -msgstr "Bitte eine gültige Anzahl eingeben" +msgstr "Zuordnungsanzahl eingeben" #: order/templates/order/delete_attachment.html:5 #: part/templates/part/attachment_delete.html:5 -#, fuzzy -#| msgid "Are you sure you want to delete the following Supplier Parts?" msgid "Are you sure you want to delete this attachment?" -msgstr "" -"Sind Sie sicher, dass sie die folgenden Zulieferer-Teile löschen möchten?" +msgstr "Sind Sie sicher, dass Sie diesen Anhang löschen wollen?" #: order/templates/order/order_base.html:59 msgid "Purchase Order Details" @@ -1525,23 +1341,17 @@ msgstr "Bestelldetails" #: order/templates/order/order_base.html:64 #: order/templates/order/sales_order_base.html:63 -#, fuzzy -#| msgid "Order reference" msgid "Order Reference" -msgstr "Bestell-Referenz" +msgstr "Bestellreferenz" #: order/templates/order/order_base.html:69 #: order/templates/order/sales_order_base.html:68 -#, fuzzy -#| msgid "Order Parts" msgid "Order Status" -msgstr "Teile bestellen" +msgstr "Bestellstatus" -#: order/templates/order/order_base.html:80 -#, fuzzy -#| msgid "Reference" +#: order/templates/order/order_base.html:80 templates/js/order.html:151 msgid "Supplier Reference" -msgstr "Referenz" +msgstr "Zuliefererreferenz" #: order/templates/order/order_base.html:99 msgid "Issued" @@ -1557,6 +1367,7 @@ msgstr "Empfangen" #: order/templates/order/sales_order_cancel.html:9 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" +"Abbruch dieser Bestellung bedeutet, dass sie nicht länger bearbeitbar ist." #: order/templates/order/order_notes.html:13 #: order/templates/order/order_notes.html:29 @@ -1567,62 +1378,49 @@ msgstr "Bestellungsbemerkungen" #: order/templates/order/order_wizard/select_parts.html:9 msgid "Step 1 of 2 - Select Part Suppliers" -msgstr "" +msgstr "Schritt 1 von 2 - Zulieferer auswählen" #: order/templates/order/order_wizard/select_parts.html:14 -#, fuzzy -#| msgid "Select supplier" msgid "Select suppliers." -msgstr "Zulieferer auswählen" +msgstr "Zulieferer auswählen." #: order/templates/order/order_wizard/select_parts.html:18 -#, fuzzy -#| msgid "Duplicate part selected" msgid "No purchaseable parts selected." -msgstr "Teil doppelt ausgewählt" +msgstr "Keine kaufbaren Teile ausgewählt." #: order/templates/order/order_wizard/select_parts.html:31 -#, fuzzy -#| msgid "Select supplier" msgid "Select Supplier" msgstr "Zulieferer auswählen" #: order/templates/order/order_wizard/select_parts.html:57 -#, fuzzy -#| msgid "Select supplier" msgid "Select a supplier for" -msgstr "Zulieferer auswählen" +msgstr "Zulieferer auswählen für" #: order/templates/order/order_wizard/select_pos.html:8 msgid "Step 2 of 2 - Select Purchase Orders" -msgstr "" +msgstr "Schritt 2 von 2 - Bestellung auswählen" #: order/templates/order/order_wizard/select_pos.html:12 msgid "Select existing purchase orders, or create new orders." -msgstr "" +msgstr "Bestellungen auswählen oder anlegen." #: order/templates/order/order_wizard/select_pos.html:31 -#: order/templates/order/po_tabs.html:5 +#: order/templates/order/po_tabs.html:5 templates/js/order.html:175 +#: templates/js/order.html:253 msgid "Items" msgstr "Positionen" #: order/templates/order/order_wizard/select_pos.html:32 -#, fuzzy -#| msgid "Purchase Order" msgid "Select Purchase Order" -msgstr "Kaufvertrag" +msgstr "Bestellung auswählen" #: order/templates/order/order_wizard/select_pos.html:67 -#, fuzzy -#| msgid "Purchase Order" msgid "Select a purchase order for" -msgstr "Kaufvertrag" +msgstr "Bestellung auswählen für" #: order/templates/order/po_attachments.html:11 -#, fuzzy -#| msgid "Purchase Order Details" msgid "Purchase Order Attachments" -msgstr "Bestelldetails" +msgstr "Bestellanhänge" #: order/templates/order/po_attachments.html:17 #: order/templates/order/so_attachments.html:17 @@ -1660,36 +1458,28 @@ msgid "Attachments" msgstr "Anhänge" #: order/templates/order/purchase_order_detail.html:16 -#: order/templates/order/sales_order_detail.html:17 order/views.py:1042 -#: order/views.py:1156 +#: order/templates/order/sales_order_detail.html:17 order/views.py:1051 +#: order/views.py:1165 msgid "Add Line Item" msgstr "Position hinzufügen" #: order/templates/order/purchase_order_detail.html:20 -#, fuzzy -#| msgid "Purchase Orders" msgid "Purchase Order Items" -msgstr "Bestellungen" +msgstr "Bestellpositionen" #: order/templates/order/purchase_order_detail.html:39 #: order/templates/order/purchase_order_detail.html:119 #: stock/templates/stock/location.html:17 -#, fuzzy -#| msgid "Create new Stock Location" msgid "Create new stock location" -msgstr "Neuen Lager-Standort erstellen" +msgstr "Neuen Lagerort anlegen" #: order/templates/order/purchase_order_detail.html:68 -#, fuzzy -#| msgid "Supplier Part" msgid "Create new supplier part" -msgstr "Zulieferer-Teil" +msgstr "Neues Zuliefererteil anlegen" #: order/templates/order/purchase_order_detail.html:130 -#, fuzzy -#| msgid "No serial numbers found" msgid "No line items found" -msgstr "Keine Seriennummern gefunden" +msgstr "Keine Positionen gefunden" #: order/templates/order/purchase_order_detail.html:162 msgid "Order Code" @@ -1697,240 +1487,183 @@ msgstr "Bestellnummer" #: order/templates/order/purchase_order_detail.html:211 #: order/templates/order/sales_order_detail.html:280 -#, fuzzy -#| msgid "Add Line Item" msgid "Edit line item" -msgstr "Position hinzufügen" +msgstr "Position bearbeiten" #: order/templates/order/purchase_order_detail.html:212 -#, fuzzy -#| msgid "Deleted {n} stock items" msgid "Delete line item" -msgstr "{n} Teile im Lager gelöscht" +msgstr "Position löschen" #: order/templates/order/purchase_order_detail.html:217 -#, fuzzy -#| msgid "Deleted {n} stock items" msgid "Receive line item" -msgstr "{n} Teile im Lager gelöscht" +msgstr "Position empfangen" #: order/templates/order/sales_order_base.html:15 msgid "This SalesOrder has not been fully allocated" -msgstr "" +msgstr "Dieser Auftrag ist nicht vollständig zugeordnet" #: order/templates/order/sales_order_base.html:42 -#, fuzzy -#| msgid "Parts" msgid "Packing List" -msgstr "Teile" +msgstr "Packliste" #: order/templates/order/sales_order_base.html:58 -#, fuzzy -#| msgid "Purchase Order Details" msgid "Sales Order Details" -msgstr "Bestelldetails" +msgstr "Auftragsdetails" -#: order/templates/order/sales_order_base.html:79 -#, fuzzy -#| msgid "Reference" +#: order/templates/order/sales_order_base.html:79 templates/js/order.html:224 msgid "Customer Reference" -msgstr "Referenz" +msgstr "Kundenreferenz" #: order/templates/order/sales_order_cancel.html:8 #: order/templates/order/sales_order_ship.html:9 msgid "Warning" -msgstr "" +msgstr "Warnung" #: order/templates/order/sales_order_detail.html:14 -#, fuzzy -#| msgid "Sales Orders" msgid "Sales Order Items" -msgstr "Bestellungen" +msgstr "Auftragspositionen" #: order/templates/order/sales_order_detail.html:222 msgid "Fulfilled" -msgstr "" +msgstr "Erledigt" #: order/templates/order/sales_order_detail.html:277 -#, fuzzy -#| msgid "All parts" msgid "Allocate parts" -msgstr "Alle Teile" +msgstr "Teile zuordnen" #: order/templates/order/sales_order_detail.html:281 -#, fuzzy -#| msgid "Deleted {n} stock items" msgid "Delete line item " -msgstr "{n} Teile im Lager gelöscht" +msgstr "Position löschen" #: order/templates/order/sales_order_ship.html:10 msgid "" "This order has not been fully allocated. If the order is marked as shipped, " "it can no longer be adjusted." msgstr "" +"Dieser Auftrag ist nicht vollständig zugeordnet. Wenn der Auftrag als " +"versendet markiert wird, kann er nicht mehr geändert werden." #: order/templates/order/sales_order_ship.html:12 msgid "Ensure that the order allocation is correct before shipping the order." -msgstr "" +msgstr "Vor dem Versand sicherstellen, dass die Zuordnung richtig ist." #: order/templates/order/sales_order_ship.html:18 msgid "Some line items in this order have been over-allocated" -msgstr "" +msgstr "Einige Positionen dieses Auftrags sind überzugeordnet" #: order/templates/order/sales_order_ship.html:20 msgid "Ensure that this is correct before shipping the order." -msgstr "" +msgstr "Vor dem Versand sicherstellen, dass dies richtig ist" #: order/templates/order/sales_order_ship.html:27 msgid "Shipping this order means that the order will no longer be editable." msgstr "" +"Versenden dieses Auftrags bedeutet, dass der Auftrag nicht mehr bearbeitbar " +"ist." #: order/templates/order/so_allocation_delete.html:7 msgid "This action will unallocate the following stock from the Sales Order" -msgstr "" +msgstr "Diese Aktion wird die folgenden Lagerobjekte vom Auftrag entfernen" #: order/templates/order/so_attachments.html:11 -#, fuzzy -#| msgid "Purchase Order Details" msgid "Sales Order Attachments" -msgstr "Bestelldetails" +msgstr "Auftragsanhänge" #: order/templates/order/so_lineitem_delete.html:5 -#, fuzzy -#| msgid "Are you sure you want to delete the following Supplier Parts?" msgid "Are you sure you wish to delete this line item?" -msgstr "" -"Sind Sie sicher, dass sie die folgenden Zulieferer-Teile löschen möchten?" +msgstr "Sind Sie sicher, dass Sie diese Position löschen möchten?" #: order/templates/order/so_tabs.html:5 msgid "Order Items" msgstr "Bestellungspositionen" #: order/views.py:93 -#, fuzzy -#| msgid "Purchase Order Details" msgid "Add Purchase Order Attachment" -msgstr "Bestelldetails" +msgstr "Bestellanhang hinzufügen" #: order/views.py:98 order/views.py:138 part/views.py:79 -#, fuzzy -#| msgid "Add Attachment" msgid "Added attachment" -msgstr "Anhang hinzufügen" +msgstr "Anhang hinzugefügt" #: order/views.py:134 -#, fuzzy -#| msgid "Purchase Order Details" msgid "Add Sales Order Attachment" -msgstr "Bestelldetails" +msgstr "Auftragsanhang hinzufügen" #: order/views.py:162 order/views.py:183 -#, fuzzy -#| msgid "Edit attachment" msgid "Edit Attachment" msgstr "Anhang bearbeiten" #: order/views.py:166 order/views.py:187 -#, fuzzy -#| msgid "Part Attachments" msgid "Attachment updated" -msgstr "Anhänge" +msgstr "Anhang aktualisiert" #: order/views.py:202 order/views.py:216 -#, fuzzy -#| msgid "Delete attachment" msgid "Delete Attachment" msgstr "Anhang löschen" #: order/views.py:208 order/views.py:222 -#, fuzzy -#| msgid "Delete attachment" msgid "Deleted attachment" -msgstr "Anhang löschen" +msgstr "Anhang gelöscht" #: order/views.py:273 -#, fuzzy -#| msgid "Purchase Order" msgid "Create Purchase Order" -msgstr "Kaufvertrag" +msgstr "Bestellung anlegen" #: order/views.py:303 -#, fuzzy -#| msgid "Purchase Order" msgid "Create Sales Order" -msgstr "Kaufvertrag" +msgstr "Auftrag anlegen" #: order/views.py:332 -#, fuzzy -#| msgid "Purchase Order" msgid "Edit Purchase Order" -msgstr "Kaufvertrag" +msgstr "Bestellung bearbeiten" #: order/views.py:352 -#, fuzzy -#| msgid "Sales Orders" msgid "Edit Sales Order" -msgstr "Bestellungen" +msgstr "Auftrag bearbeiten" #: order/views.py:368 -#, fuzzy -#| msgid "Cancel order" msgid "Cancel Order" msgstr "Bestellung stornieren" #: order/views.py:383 order/views.py:415 msgid "Confirm order cancellation" -msgstr "Bestell-Stornierung bestätigen" +msgstr "Bestellstornierung bestätigen" #: order/views.py:401 -#, fuzzy -#| msgid "Create new Stock Item" msgid "Cancel sales order" -msgstr "Neues Lagerobjekt hinzufügen" +msgstr "Auftrag stornieren" #: order/views.py:421 -#, fuzzy -#| msgid "Cancel order" msgid "Could not cancel order" -msgstr "Bestellung stornieren" +msgstr "Stornierung fehlgeschlagen" #: order/views.py:435 -#, fuzzy -#| msgid "Issued" msgid "Issue Order" -msgstr "Aufgegeben" +msgstr "Bestellung aufgeben" #: order/views.py:450 msgid "Confirm order placement" msgstr "Bestellungstätigung bestätigen" #: order/views.py:471 -#, fuzzy -#| msgid "Completed" msgid "Complete Order" -msgstr "Fertig" +msgstr "Auftrag fertigstellen" #: order/views.py:506 -#, fuzzy -#| msgid "On Order" msgid "Ship Order" -msgstr "bestellt" +msgstr "Versenden" #: order/views.py:522 -#, fuzzy -#| msgid "Confirm order placement" msgid "Confirm order shipment" -msgstr "Bestellungstätigung bestätigen" +msgstr "Versand bestätigen" #: order/views.py:528 msgid "Could not ship order" -msgstr "" +msgstr "Versand fehlgeschlagen" #: order/views.py:579 -#, fuzzy -#| msgid "Required Parts" msgid "Receive Parts" -msgstr "benötigte Teile" +msgstr "Teile empfangen" #: order/views.py:646 msgid "Items received" @@ -1952,53 +1685,41 @@ msgstr "Anzahl kleiner null empfangen" msgid "No lines specified" msgstr "Keine Zeilen angegeben" -#: order/views.py:1062 +#: order/views.py:1071 msgid "Invalid Purchase Order" msgstr "Ungültige Bestellung" -#: order/views.py:1070 +#: order/views.py:1079 msgid "Supplier must match for Part and Order" msgstr "Zulieferer muss zum Teil und zur Bestellung passen" -#: order/views.py:1075 +#: order/views.py:1084 msgid "Invalid SupplierPart selection" msgstr "Ungültige Wahl des Zulieferer-Teils" -#: order/views.py:1207 order/views.py:1225 -#, fuzzy -#| msgid "Add Line Item" +#: order/views.py:1216 order/views.py:1234 msgid "Edit Line Item" -msgstr "Position hinzufügen" +msgstr "Position bearbeiten" -#: order/views.py:1241 order/views.py:1253 -#, fuzzy -#| msgid "Delete Stock Item" +#: order/views.py:1250 order/views.py:1262 msgid "Delete Line Item" -msgstr "Lagerobjekt löschen" +msgstr "Position löschen" -#: order/views.py:1246 order/views.py:1258 -#, fuzzy -#| msgid "Deleted {n} stock items" +#: order/views.py:1255 order/views.py:1267 msgid "Deleted line item" -msgstr "{n} Teile im Lager gelöscht" +msgstr "Position gelöscht" -#: order/views.py:1267 -#, fuzzy -#| msgid "Allocate Stock to Build" +#: order/views.py:1276 msgid "Allocate Stock to Order" -msgstr "Lagerbestand dem Bau zuweisen" +msgstr "Lagerbestand dem Auftrag zuweisen" -#: order/views.py:1336 -#, fuzzy -#| msgid "Edit Stock Location" +#: order/views.py:1345 msgid "Edit Allocation Quantity" -msgstr "Lagerobjekt-Standort bearbeiten" +msgstr "Zuordnung bearbeiten" -#: order/views.py:1351 -#, fuzzy -#| msgid "Receive parts to this location" +#: order/views.py:1360 msgid "Remove allocation" -msgstr "Teile in diesen Ort empfangen" +msgstr "Zuordnung entfernen" #: part/bom.py:140 #, python-brace-format @@ -2023,11 +1744,11 @@ msgstr "Ausgabe-Dateiformat auswählen" #: part/forms.py:39 msgid "Cascading" -msgstr "" +msgstr "Kaskadierend" #: part/forms.py:39 msgid "Download cascading / multi-level BOM" -msgstr "" +msgstr "Kaskadierende Stückliste herunterladen" #: part/forms.py:58 msgid "Confirm that the BOM is correct" @@ -2231,17 +1952,13 @@ msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)" #: part/templates/part/allocation.html:10 -#, fuzzy -#| msgid "Edit Stock Location" msgid "Part Stock Allocations" -msgstr "Lagerobjekt-Standort bearbeiten" +msgstr "Teilbestandszuordnungen" #: part/templates/part/allocation.html:14 #: part/templates/part/allocation.html:41 -#, fuzzy -#| msgid "On Order" msgid "Order" -msgstr "bestellt" +msgstr "Bestellung" #: part/templates/part/allocation.html:15 #: part/templates/part/allocation.html:21 @@ -2250,16 +1967,15 @@ msgstr "bestellt" #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:52 #: stock/templates/stock/item_base.html:183 -#: stock/templates/stock/stock_adjust.html:16 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:106 +#: templates/js/stock.html:407 msgid "Stock Item" msgstr "Lagerobjekt" #: part/templates/part/allocation.html:20 #: stock/templates/stock/item_base.html:128 -#, fuzzy -#| msgid "Build Notes" msgid "Build Order" -msgstr "Bau-Bemerkungen" +msgstr "Bauauftrag" #: part/templates/part/attachments.html:8 msgid "Part Attachments" @@ -2267,41 +1983,35 @@ msgstr "Anhänge" #: part/templates/part/bom.html:13 msgid "Bill of Materials" -msgstr "" +msgstr "Stückliste" #: part/templates/part/bom.html:37 -#, fuzzy -#| msgid "Removed stock from {n} items" msgid "Remove selected BOM items" -msgstr "Vorrat von {n} Lagerobjekten entfernt" +msgstr "Ausgewählte Stücklistenpositionen entfernen" #: part/templates/part/bom.html:38 msgid "Import BOM data" -msgstr "" +msgstr "Stückliste importieren" #: part/templates/part/bom.html:39 -#, fuzzy -#| msgid "Stock Item" msgid "New BOM Item" -msgstr "Lagerobjekt" +msgstr "Neue Stücklistenposition" #: part/templates/part/bom.html:40 msgid "Finish Editing" -msgstr "" +msgstr "Bearbeitung beenden" #: part/templates/part/bom.html:42 -#, fuzzy -#| msgid "Edit Stock Item" msgid "Edit BOM" -msgstr "Lagerobjekt bearbeiten" +msgstr "Stückliste bearbeiten" #: part/templates/part/bom.html:44 msgid "Validate Bill of Materials" -msgstr "" +msgstr "Stückliste validieren" #: part/templates/part/bom.html:46 part/views.py:1358 msgid "Export Bill of Materials" -msgstr "" +msgstr "Stückliste exportieren" #: part/templates/part/category.html:13 part/templates/part/category.html:78 #: templates/stats.html:12 @@ -2357,6 +2067,7 @@ msgid "Variant Of" msgstr "Variante von" #: part/templates/part/detail.html:57 part/templates/part/set_category.html:15 +#: templates/js/part.html:181 msgid "Category" msgstr "Kategorie" @@ -2372,21 +2083,17 @@ msgstr "Einheiten" msgid "Minimum Stock" msgstr "Minimaler Lagerbestand" -#: part/templates/part/detail.html:101 -#, fuzzy -#| msgid "Create new Stock Item" +#: part/templates/part/detail.html:101 templates/js/order.html:243 msgid "Creation Date" -msgstr "Neues Lagerobjekt hinzufügen" +msgstr "Erstelldatum" #: part/templates/part/detail.html:107 -#, fuzzy -#| msgid "Created" msgid "Created By" -msgstr "Erstellt" +msgstr "Erstellt von" #: part/templates/part/detail.html:114 msgid "Responsible User" -msgstr "" +msgstr "Verantwortlicher Benutzer" #: part/templates/part/detail.html:123 msgid "Virtual" @@ -2445,10 +2152,8 @@ msgid "Part can be purchased from external suppliers" msgstr "Teil kann von externen Zulieferern gekauft werden" #: part/templates/part/detail.html:168 templates/table_filters.html:111 -#, fuzzy -#| msgid "Sellable" msgid "Salable" -msgstr "Verkaufbar" +msgstr "Verkäuflich" #: part/templates/part/detail.html:171 msgid "Part can be sold to customers" @@ -2463,84 +2168,62 @@ msgid "Part Notes" msgstr "Teil-Bemerkungen" #: part/templates/part/orders.html:14 -#, fuzzy -#| msgid "Order Parts" -msgid "Order part" -msgstr "Teile bestellen" - -#: part/templates/part/orders.html:14 -#, fuzzy -#| msgid "Order Parts" msgid "Order Part" -msgstr "Teile bestellen" +msgstr "Teil bestellen" #: part/templates/part/params.html:8 -#, fuzzy -#| msgid "Edit attachment" msgid "Part Parameters" -msgstr "Anhang bearbeiten" +msgstr "Teilparameter" #: part/templates/part/params.html:13 -#, fuzzy -#| msgid "Edit attachment" msgid "Add new parameter" -msgstr "Anhang bearbeiten" +msgstr "Parameter hinzufügen" #: part/templates/part/params.html:13 templates/InvenTree/settings/part.html:12 -#, fuzzy -#| msgid "Parameters" msgid "New Parameter" -msgstr "Parameter" +msgstr "Neuer Parameter" #: part/templates/part/params.html:20 msgid "Name" -msgstr "" +msgstr "Name" #: part/templates/part/params.html:21 msgid "Value" -msgstr "" +msgstr "Wert" #: part/templates/part/params.html:33 msgid "Edit" -msgstr "" +msgstr "Bearbeiten" #: part/templates/part/params.html:34 -#, fuzzy -#| msgid "Delete attachment" msgid "Delete" -msgstr "Anhang löschen" +msgstr "Löschen" #: part/templates/part/part_app_base.html:9 -#, fuzzy -#| msgid "Part category" msgid "Part Category" -msgstr "Teile-Kategorie" +msgstr "Teilkategorie" #: part/templates/part/part_app_base.html:11 -#, fuzzy -#| msgid "Parts" msgid "Part List" -msgstr "Teile" +msgstr "Teileliste" #: part/templates/part/part_base.html:11 -#, fuzzy -#| msgid "Is this part a template part?" msgid "This part is a template part." -msgstr "Ist dieses Teil eine Vorlage?" +msgstr "Dieses Teil ist eine Vorlage." #: part/templates/part/part_base.html:13 msgid "It is not a real part, but real parts can be based on this template." msgstr "" +"Es ist kein echtes Teil, aber echte Teile können auf dieser Vorlage basieren." #: part/templates/part/part_base.html:18 -#, fuzzy -#| msgid "This part is not active" msgid "This part is a variant of" -msgstr "Dieses Teil ist nicht aktiv" +msgstr "Dieses Teil ist eine Variante von" -#: part/templates/part/part_base.html:30 +#: part/templates/part/part_base.html:30 templates/js/company.html:125 +#: templates/js/part.html:158 msgid "Inactive" -msgstr "" +msgstr "Inaktiv" #: part/templates/part/part_base.html:38 msgid "Star this part" @@ -2558,75 +2241,66 @@ msgstr "Verfügbarer Lagerbestand" msgid "In Stock" msgstr "Auf Lager" +#: part/templates/part/part_base.html:114 +msgid "Allocated to Build Orders" +msgstr "Zu Bauaufträgen zugeordnet" + #: part/templates/part/part_base.html:121 +msgid "Allocated to Sales Orders" +msgstr "Zu Aufträgen zugeordnet" + +#: part/templates/part/part_base.html:128 templates/js/part.html:210 msgid "On Order" msgstr "bestellt" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:143 msgid "Can Build" msgstr "Herstellbar?" -#: part/templates/part/part_base.html:142 +#: part/templates/part/part_base.html:149 msgid "Underway" msgstr "unterwegs" #: part/templates/part/part_thumb.html:16 -#, fuzzy -#| msgid "Select part" msgid "Select from existing images" -msgstr "Teil auswählen" +msgstr "Aus vorhandenen Bildern auswählen" #: part/templates/part/part_thumb.html:17 msgid "Upload new image" -msgstr "" +msgstr "Neues Bild hochladen" #: part/templates/part/sales_orders.html:14 -#, fuzzy -#| msgid "Sales Orders" msgid "New sales order" -msgstr "Bestellungen" +msgstr "Neuer Auftrag" #: part/templates/part/sales_orders.html:14 -#, fuzzy -#| msgid "On Order" msgid "New Order" -msgstr "bestellt" +msgstr "Neue Bestellung" #: part/templates/part/set_category.html:9 -#, fuzzy -#| msgid "Set category for {n} parts" msgid "Set category for the following parts" -msgstr "Kategorie für {n} Teile setzen" +msgstr "Kategorie für Teile setzen" #: part/templates/part/set_category.html:32 -#, fuzzy -#| msgid "Remove From Stock" msgid "Remove part" -msgstr "Aus Lagerbestand entfernen" +msgstr "Teil entfernen" #: part/templates/part/stock.html:8 -#, fuzzy -#| msgid "Supplier part" msgid "Part Stock" -msgstr "Zulieferer-Teil" +msgstr "Teilbestand" #: part/templates/part/stock.html:77 -#, fuzzy -#| msgid "Create new Stock Item" msgid "Create New Part" -msgstr "Neues Lagerobjekt hinzufügen" +msgstr "Neues Teil anlegen" -#: part/templates/part/stock_count.html:7 -#, fuzzy -#| msgid "Stock" +#: part/templates/part/stock_count.html:7 templates/js/bom.html:203 +#: templates/js/part.html:218 msgid "No Stock" -msgstr "Lagerbestand" +msgstr "Kein Bestand" #: part/templates/part/stock_count.html:9 templates/InvenTree/low_stock.html:7 -#, fuzzy -#| msgid "Stock" msgid "Low Stock" -msgstr "Lagerbestand" +msgstr "Niedriger Bestand" #: part/templates/part/tabs.html:9 msgid "Parameters" @@ -2649,50 +2323,36 @@ msgid "Tracking" msgstr "Tracking" #: part/templates/part/track.html:8 -#, fuzzy -#| msgid "Part packaging" msgid "Part Tracking" -msgstr "Teile-Packaging" +msgstr "Teilverfolgung" #: part/templates/part/used_in.html:7 -#, fuzzy -#| msgid "Assembly" msgid "Assemblies" -msgstr "Baugruppe" +msgstr "Baugruppen" #: part/templates/part/used_in.html:42 msgid "INACTIVE" -msgstr "" +msgstr "INAKTIV" #: part/views.py:74 -#, fuzzy -#| msgid "Add Attachment" msgid "Add part attachment" -msgstr "Anhang hinzufügen" +msgstr "Teilanhang hinzufügen" #: part/views.py:122 -#, fuzzy -#| msgid "Part Attachments" msgid "Part attachment updated" -msgstr "Anhänge" +msgstr "Teilanhang aktualisiert" #: part/views.py:137 -#, fuzzy -#| msgid "Delete attachment" msgid "Delete Part Attachment" -msgstr "Anhang löschen" +msgstr "Teilanhang löschen" #: part/views.py:143 -#, fuzzy -#| msgid "Delete attachment" msgid "Deleted part attachment" -msgstr "Anhang löschen" +msgstr "Teilanhang gelöscht" #: part/views.py:151 -#, fuzzy -#| msgid "Select part category" msgid "Set Part Category" -msgstr "Teilekategorie wählen" +msgstr "Teilkategorie auswählen" #: part/views.py:199 #, python-brace-format @@ -2700,68 +2360,52 @@ msgid "Set category for {n} parts" msgstr "Kategorie für {n} Teile setzen" #: part/views.py:234 -#, fuzzy -#| msgid "Create new Stock Item" msgid "Create Variant" -msgstr "Neues Lagerobjekt hinzufügen" +msgstr "Variante anlegen" #: part/views.py:304 -#, fuzzy -#| msgid "Supplier Part" msgid "Duplicate Part" -msgstr "Zulieferer-Teil" +msgstr "Teil duplizieren" #: part/views.py:309 -#, fuzzy -#| msgid "Supplier part" msgid "Copied part" -msgstr "Zulieferer-Teil" +msgstr "Teil kopiert" #: part/views.py:420 -#, fuzzy -#| msgid "Create new Stock Item" msgid "Create new part" -msgstr "Neues Lagerobjekt hinzufügen" +msgstr "Neues Teil anlegen" #: part/views.py:425 -#, fuzzy -#| msgid "Created new stock item" msgid "Created new part" -msgstr "Neues Lagerobjekt erstellt" +msgstr "Neues Teil angelegt" #: part/views.py:599 -#, fuzzy -#| msgid "Part Notes" msgid "Part QR Code" -msgstr "Teil-Bemerkungen" +msgstr "Teil-QR-Code" #: part/views.py:616 msgid "Upload Part Image" -msgstr "" +msgstr "Teilbild hochladen" #: part/views.py:621 part/views.py:656 msgid "Updated part image" -msgstr "" +msgstr "Teilbild aktualisiert" #: part/views.py:630 -#, fuzzy -#| msgid "Select part" msgid "Select Part Image" -msgstr "Teil auswählen" +msgstr "Teilbild auswählen" #: part/views.py:659 msgid "Part image not found" -msgstr "" +msgstr "Teilbild nicht gefunden" #: part/views.py:670 -#, fuzzy -#| msgid "Edit notes" msgid "Edit Part Properties" -msgstr "Bermerkungen bearbeiten" +msgstr "Teileigenschaften bearbeiten" #: part/views.py:692 msgid "Validate BOM" -msgstr "" +msgstr "BOM validieren" #: part/views.py:854 msgid "No BOM file provided" @@ -2788,118 +2432,84 @@ msgid "Specify quantity" msgstr "Anzahl angeben" #: part/views.py:1396 -#, fuzzy -#| msgid "Confirm part creation" msgid "Confirm Part Deletion" -msgstr "Erstellen des Teils bestätigen" +msgstr "Löschen des Teils bestätigen" #: part/views.py:1403 msgid "Part was deleted" -msgstr "" +msgstr "Teil wurde gelöscht" #: part/views.py:1412 -#, fuzzy -#| msgid "Part packaging" msgid "Part Pricing" -msgstr "Teile-Packaging" +msgstr "Teilbepreisung" #: part/views.py:1534 -#, fuzzy -#| msgid "Parameter Template" msgid "Create Part Parameter Template" -msgstr "Parameter Vorlage" +msgstr "Teilparametervorlage anlegen" #: part/views.py:1542 -#, fuzzy -#| msgid "Parameter Template" msgid "Edit Part Parameter Template" -msgstr "Parameter Vorlage" +msgstr "Teilparametervorlage bearbeiten" #: part/views.py:1549 -#, fuzzy -#| msgid "Parameter Template" msgid "Delete Part Parameter Template" -msgstr "Parameter Vorlage" +msgstr "Teilparametervorlage löschen" #: part/views.py:1557 msgid "Create Part Parameter" -msgstr "" +msgstr "Teilparameter anlegen" #: part/views.py:1607 -#, fuzzy -#| msgid "Edit attachment" msgid "Edit Part Parameter" -msgstr "Anhang bearbeiten" +msgstr "Teilparameter bearbeiten" #: part/views.py:1621 -#, fuzzy -#| msgid "Delete attachment" msgid "Delete Part Parameter" -msgstr "Anhang löschen" +msgstr "Teilparameter löschen" #: part/views.py:1637 -#, fuzzy -#| msgid "Part category" msgid "Edit Part Category" -msgstr "Teile-Kategorie" +msgstr "Teilkategorie bearbeiten" #: part/views.py:1672 -#, fuzzy -#| msgid "Select part category" msgid "Delete Part Category" -msgstr "Teilekategorie wählen" +msgstr "Teilkategorie löschen" #: part/views.py:1678 -#, fuzzy -#| msgid "Part category" msgid "Part category was deleted" -msgstr "Teile-Kategorie" +msgstr "Teilekategorie wurde gelöscht" #: part/views.py:1686 -#, fuzzy -#| msgid "Select part category" msgid "Create new part category" -msgstr "Teilekategorie wählen" +msgstr "Teilkategorie anlegen" #: part/views.py:1737 -#, fuzzy -#| msgid "Created new stock item" msgid "Create BOM item" -msgstr "Neues Lagerobjekt erstellt" +msgstr "BOM-Position anlegen" #: part/views.py:1803 -#, fuzzy -#| msgid "Edit Stock Item" msgid "Edit BOM item" -msgstr "Lagerobjekt bearbeiten" +msgstr "BOM-Position beaarbeiten" #: part/views.py:1851 -#, fuzzy -#| msgid "Confirm build completion" msgid "Confim BOM item deletion" -msgstr "Bau-Fertigstellung bestätigen" +msgstr "Löschung von BOM-Position bestätigen" #: plugins/barcode/inventree.py:70 -#, fuzzy -#| msgid "Part Notes" msgid "Part does not exist" -msgstr "Teil-Bemerkungen" +msgstr "Teil existiert nicht" #: plugins/barcode/inventree.py:79 -#, fuzzy -#| msgid "Stock Location QR code" msgid "StockLocation does not exist" -msgstr "QR-Code für diesen Standort" +msgstr "Lagerort existiert nicht" #: plugins/barcode/inventree.py:89 -#, fuzzy -#| msgid "Stock Item Notes" msgid "StockItem does not exist" -msgstr "Lagerobjekt-Notizen" +msgstr "Lagerobjekt existiert nicht" #: plugins/barcode/inventree.py:92 msgid "No matching data" -msgstr "" +msgstr "Keine passenden Daten" #: stock/forms.py:93 msgid "Include stock items in sub locations" @@ -2952,16 +2562,12 @@ msgid "Item cannot belong to itself" msgstr "Teil kann nicht zu sich selbst gehören" #: stock/models.py:326 -#, fuzzy -#| msgid "Stock Item" msgid "Parent Stock Item" -msgstr "Lagerobjekt" +msgstr "Eltern-Lagerobjekt" #: stock/models.py:334 stock/templates/stock/item_base.html:108 -#, fuzzy -#| msgid "Base part" msgid "Base Part" -msgstr "Basis-Teil" +msgstr "Basisteil" #: stock/models.py:335 msgid "Base part" @@ -2972,20 +2578,16 @@ msgid "Select a matching supplier part for this stock item" msgstr "Passenden Zulieferer für dieses Lagerobjekt auswählen" #: stock/models.py:350 stock/templates/stock/stock_app_base.html:7 -#, fuzzy -#| msgid "Stock Locations" msgid "Stock Location" -msgstr "Lagerobjekt-Standorte" +msgstr "Lagerort" #: stock/models.py:353 msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" #: stock/models.py:358 -#, fuzzy -#| msgid "Used In" msgid "Installed In" -msgstr "Benutzt in" +msgstr "Installiert in" #: stock/models.py:361 msgid "Is this item installed in another item?" @@ -3000,40 +2602,32 @@ msgid "Batch code for this stock item" msgstr "Losnummer für dieses Lagerobjekt" #: stock/models.py:383 -#, fuzzy -#| msgid "Quantity" msgid "Stock Quantity" -msgstr "Anzahl" +msgstr "Bestand" #: stock/models.py:392 -#, fuzzy -#| msgid "Can Build" msgid "Source Build" -msgstr "Herstellbar?" +msgstr "Quellbau" #: stock/models.py:394 msgid "Build for this stock item" msgstr "Bau für dieses Lagerobjekt" #: stock/models.py:401 -#, fuzzy -#| msgid "Purchase Order" msgid "Source Purchase Order" -msgstr "Kaufvertrag" +msgstr "Quellbestellung" #: stock/models.py:404 msgid "Purchase order for this stock item" msgstr "Bestellung für dieses Teil" #: stock/models.py:410 -#, fuzzy -#| msgid "Purchase Order" msgid "Destination Sales Order" -msgstr "Kaufvertrag" +msgstr "Zielauftrag" #: stock/models.py:417 msgid "Destination Build Order" -msgstr "" +msgstr "Zielbauauftrag" #: stock/models.py:430 msgid "Delete this Stock Item when stock is depleted" @@ -3075,10 +2669,8 @@ msgid "Serialized {n} items" msgstr "{n} Teile serialisiert" #: stock/models.py:751 -#, fuzzy -#| msgid "Stock item cannot be created for a template Part" msgid "StockItem cannot be moved as it is not in stock" -msgstr "Lagerobjekt kann nicht für Vorlagen-Teile angelegt werden" +msgstr "Lagerobjekt kann nicht bewegt werden, da kein Bestand vorhanden ist" #: stock/models.py:960 msgid "Tracking entry title" @@ -3097,16 +2689,12 @@ msgid "Stock Tracking Information" msgstr "Informationen zum Lagerbestands-Tracking" #: stock/templates/stock/item_base.html:20 -#, fuzzy -#| msgid "Stock Item to allocate to build" msgid "This stock item is allocated to Sales Order" -msgstr "Lagerobjekt dem Bau zuweisen" +msgstr "Dieses Lagerobjekt ist dem Auftrag zugewiesen" #: stock/templates/stock/item_base.html:26 -#, fuzzy -#| msgid "Stock Item to allocate to build" msgid "This stock item is allocated to Build" -msgstr "Lagerobjekt dem Bau zuweisen" +msgstr "Dieses Lagerobjekt ist dem Bau zugewiesen" #: stock/templates/stock/item_base.html:32 msgid "" @@ -3117,10 +2705,8 @@ msgstr "" "die Anzahl kann nicht angepasst werden." #: stock/templates/stock/item_base.html:36 -#, fuzzy -#| msgid "Stock item cannot be created for a template Part" msgid "This stock item cannot be deleted as it has child items" -msgstr "Lagerobjekt kann nicht für Vorlagen-Teile angelegt werden" +msgstr "Dieses Lagerobjekt kann nicht gelöscht werden, da es Kinder besitzt" #: stock/templates/stock/item_base.html:40 msgid "" @@ -3139,13 +2725,11 @@ msgstr "Gehört zu" #: stock/templates/stock/item_base.html:141 msgid "Unique Identifier" -msgstr "" +msgstr "Eindeutiger Bezeichner" #: stock/templates/stock/item_base.html:182 -#, fuzzy -#| msgid "Parent Part" msgid "Parent Item" -msgstr "Ausgangsteil" +msgstr "Elternposition" #: stock/templates/stock/item_base.html:207 msgid "Last Updated" @@ -3160,38 +2744,28 @@ msgid "No stocktake performed" msgstr "Keine Inventur ausgeführt" #: stock/templates/stock/item_childs.html:12 -#, fuzzy -#| msgid "Add Stock Items" msgid "Child Stock Items" -msgstr "Lagerobjekte hinzufügen" +msgstr "Kind-Lagerobjekte" #: stock/templates/stock/item_childs.html:18 msgid "This stock item does not have any child items" -msgstr "" +msgstr "Dieses Lagerobjekt hat keine Kinder" #: stock/templates/stock/location.html:13 -#, fuzzy -#| msgid "Add Stock Items" msgid "All stock items" -msgstr "Lagerobjekte hinzufügen" +msgstr "Alle Lagerobjekte" #: stock/templates/stock/location.html:22 -#, fuzzy -#| msgid "Count Stock Items" msgid "Count stock items" msgstr "Lagerobjekte zählen" #: stock/templates/stock/location.html:25 -#, fuzzy -#| msgid "Edit Stock Location" msgid "Edit stock location" -msgstr "Lagerobjekt-Standort bearbeiten" +msgstr "Lagerort bearbeiten" #: stock/templates/stock/location.html:28 -#, fuzzy -#| msgid "Delete Stock Location" msgid "Delete stock location" -msgstr "Standort löschen" +msgstr "Lagerort löschen" #: stock/templates/stock/location.html:37 msgid "Location Details" @@ -3226,7 +2800,7 @@ msgstr "Lagerobjekt-Standorte" #: stock/templates/stock/tabs.html:8 msgid "Children" -msgstr "" +msgstr "Kinder" #: stock/templates/stock/tabs.html:13 msgid "Builds" @@ -3347,10 +2921,9 @@ msgid "Invalid part selection" msgstr "Ungültige Teileauswahl" #: stock/views.py:943 -#, fuzzy, python-brace-format -#| msgid "Created new stock item" +#, python-brace-format msgid "Created {n} new stock items" -msgstr "Neues Lagerobjekt erstellt" +msgstr "{n} neue Lagerobjekte erstellt" #: stock/views.py:960 stock/views.py:973 msgid "Created new stock item" @@ -3378,37 +2951,27 @@ msgstr "Lagerbestands-Tracking-Eintrag hinzufügen" #: templates/InvenTree/search.html:7 templates/InvenTree/search.html:12 msgid "Search Results" -msgstr "" +msgstr "Suchergebnisse" #: templates/InvenTree/search.html:22 -#, fuzzy -#| msgid "No serial numbers found" msgid "No results found" -msgstr "Keine Seriennummern gefunden" +msgstr "Keine Ergebnisse gefunden" #: templates/InvenTree/settings/part.html:28 -#, fuzzy -#| msgid "Parameter Template" msgid "No part parameter templates found" -msgstr "Parameter Vorlage" +msgstr "Keine Teilparametervorlagen gefunden" #: templates/InvenTree/settings/part.html:47 -#, fuzzy -#| msgid "Parameter Template" msgid "Edit Template" -msgstr "Parameter Vorlage" +msgstr "Vorlage bearbeiten" #: templates/InvenTree/settings/part.html:48 -#, fuzzy -#| msgid "Parameter Template" msgid "Delete Template" -msgstr "Parameter Vorlage" +msgstr "Vorlage löschen" #: templates/InvenTree/starred_parts.html:7 -#, fuzzy -#| msgid "Required Parts" msgid "Starred Parts" -msgstr "benötigte Teile" +msgstr "Teilfavoriten" #: templates/about.html:13 msgid "InvenTree Version Information" @@ -3416,19 +2979,15 @@ msgstr "InvenTree-Versionsinformationen" #: templates/about.html:21 msgid "Instance Name" -msgstr "" +msgstr "Instanzname" #: templates/about.html:26 -#, fuzzy -#| msgid "InvenTree Version Information" msgid "InvenTree Version" -msgstr "InvenTree-Versionsinformationen" +msgstr "InvenTree-Version" #: templates/about.html:30 -#, fuzzy -#| msgid "Version" msgid "Django Version" -msgstr "Version" +msgstr "Django-Version" #: templates/about.html:34 msgid "Commit Hash" @@ -3448,190 +3007,263 @@ msgstr "Code auf GitHub ansehen" #: templates/about.html:51 msgid "Submit Bug Report" -msgstr "" +msgstr "Fehlerbericht senden" + +#: templates/js/bom.html:143 +msgid "Open subassembly" +msgstr "Unterbaugruppe öffnen" + +#: templates/js/bom.html:194 templates/js/build.html:113 +msgid "Available" +msgstr "verfügbar" + +#: templates/js/bom.html:219 +msgid "No pricing available" +msgstr "Keine Preisinformation verfügbar" + +#: templates/js/bom.html:239 +msgid "Validate BOM Item" +msgstr "BOM-Position validieren" + +#: templates/js/bom.html:240 +msgid "This line has been validated" +msgstr "Diese Position wurde validiert" + +#: templates/js/bom.html:242 +msgid "Edit BOM Item" +msgstr "BOM-Position bearbeiten" + +#: templates/js/bom.html:243 +msgid "Delete BOM Item" +msgstr "BOM-Position löschen" + +#: templates/js/build.html:19 +msgid "No builds matching query" +msgstr "Keine Baue passen zur Anfrage" + +#: templates/js/build.html:102 +msgid "No parts allocated for" +msgstr "Keine Teile zugeordnet zu" + +#: templates/js/company.html:29 +msgid "No company information found" +msgstr "Keine Firmeninformation gefunden" + +#: templates/js/company.html:101 +msgid "No supplier parts found" +msgstr "Keine Zuliefererteile gefunden" + +#: templates/js/company.html:117 templates/js/part.html:136 +msgid "Template part" +msgstr "Vorlagenteil" + +#: templates/js/company.html:121 templates/js/part.html:140 +msgid "Assembled part" +msgstr "Baugruppe" + +#: templates/js/company.html:178 +msgid "Link" +msgstr "Link" + +#: templates/js/order.html:126 +msgid "No purchase orders found" +msgstr "Keine Bestellungen gefunden" + +#: templates/js/order.html:170 templates/js/stock.html:389 +msgid "Date" +msgstr "Datum" + +#: templates/js/order.html:199 +msgid "No sales orders found" +msgstr "Keine Aufträge gefunden" + +#: templates/js/order.html:248 +msgid "Shipment Date" +msgstr "Versanddatum" + +#: templates/js/part.html:104 templates/js/stock.html:196 +msgid "Select" +msgstr "Auswählen" + +#: templates/js/part.html:144 +msgid "Starred part" +msgstr "Favoritenteil" + +#: templates/js/part.html:148 +msgid "Salable part" +msgstr "Verkäufliches Teil" + +#: templates/js/part.html:187 +msgid "No category" +msgstr "Keine Kategorie" + +#: templates/js/part.html:205 templates/table_filters.html:95 +msgid "Low stock" +msgstr "Bestand niedrig" + +#: templates/js/part.html:214 +msgid "Building" +msgstr "Im Bau" + +#: templates/js/part.html:232 +msgid "No parts found" +msgstr "Keine Teile gefunden" + +#: templates/js/stock.html:66 +msgid "No stock items matching query" +msgstr "Keine zur Anfrage passenden Lagerobjekte" + +#: templates/js/stock.html:251 +msgid "StockItem has been allocated" +msgstr "Lagerobjekt wurde zugewiesen" + +#: templates/js/stock.html:256 +msgid "StockItem is lost" +msgstr "Lagerobjekt verloren" + +#: templates/js/stock.html:284 +msgid "No stock location set" +msgstr "Kein Lagerort gesetzt" + +#: templates/js/stock.html:446 +msgid "User" +msgstr "Benutzer" + +#: templates/js/stock.html:455 +msgid "No user information" +msgstr "Keine Benutzerinformation" #: templates/navbar.html:14 msgid "Buy" -msgstr "" +msgstr "Kaufen" #: templates/navbar.html:22 -#, fuzzy -#| msgid "Sellable" msgid "Sell" -msgstr "Verkaufbar" +msgstr "Verkaufen" #: templates/navbar.html:36 msgid "Admin" -msgstr "" +msgstr "Admin" #: templates/navbar.html:39 -#, fuzzy -#| msgid "Settings value" msgid "Settings" -msgstr "Einstellungs-Wert" +msgstr "Einstellungen" #: templates/navbar.html:40 msgid "Logout" -msgstr "" +msgstr "Ausloggen" #: templates/navbar.html:42 msgid "Login" -msgstr "" +msgstr "Einloggen" #: templates/navbar.html:45 msgid "About InvenTree" -msgstr "" +msgstr "Über InvenBaum" #: templates/navbar.html:46 -#, fuzzy -#| msgid "Status" msgid "Statistics" -msgstr "Status" +msgstr "Statistiken" #: templates/search_form.html:6 msgid "Search" -msgstr "" +msgstr "Suche" #: templates/stock_table.html:12 -#, fuzzy -#| msgid "Add Stock Items" msgid "Add stock" -msgstr "Lagerobjekte hinzufügen" +msgstr "Bestand hinzufügen" #: templates/stock_table.html:13 -#, fuzzy -#| msgid "Remove From Stock" msgid "Remove stock" -msgstr "Aus Lagerbestand entfernen" +msgstr "Bestand entfernen" #: templates/stock_table.html:14 -#, fuzzy -#| msgid "Count Stock Items" msgid "Count stock" -msgstr "Lagerobjekte zählen" +msgstr "Bestand zählen" #: templates/stock_table.html:15 -#, fuzzy -#| msgid "Move Stock Items" msgid "Move stock" -msgstr "Lagerobjekte bewegen" +msgstr "Bestand bewegen" #: templates/stock_table.html:16 -#, fuzzy -#| msgid "On Order" msgid "Order stock" -msgstr "bestellt" +msgstr "Bestand bestellen" #: templates/stock_table.html:17 -#, fuzzy -#| msgid "Delete Stock Item" msgid "Delete Stock" -msgstr "Lagerobjekt löschen" +msgstr "Bestand löschen" #: templates/table_filters.html:21 -#, fuzzy -#| msgid "Include stock items in sub locations" msgid "Include sublocations" -msgstr "Lagerobjekte in untergeordneten Lagerorten einschließen" +msgstr "Unterlagerorte einschließen" #: templates/table_filters.html:22 -#, fuzzy -#| msgid "Include stock items in sub locations" msgid "Include stock in sublocations" -msgstr "Lagerobjekte in untergeordneten Lagerorten einschließen" +msgstr "Bestand in Unterlagerorten einschließen" #: templates/table_filters.html:26 -#, fuzzy -#| msgid "Required Parts" msgid "Active parts" -msgstr "benötigte Teile" +msgstr "Aktive Teile" #: templates/table_filters.html:27 msgid "Show stock for active parts" -msgstr "" +msgstr "Bestand aktiver Teile anzeigen" #: templates/table_filters.html:31 templates/table_filters.html:32 -#, fuzzy -#| msgid "Stock Details" msgid "Stock status" -msgstr "Objekt-Details" +msgstr "Bestandsstatus" #: templates/table_filters.html:36 -#, fuzzy -#| msgid "Allocated" msgid "Is allocated" -msgstr "Zugeordnet" +msgstr "Ist zugeordnet" #: templates/table_filters.html:37 msgid "Item has been alloacted" -msgstr "" +msgstr "Position wurde zugeordnet" #: templates/table_filters.html:46 msgid "Build status" msgstr "Bau-Status" #: templates/table_filters.html:57 templates/table_filters.html:66 -#, fuzzy -#| msgid "Order Parts" msgid "Order status" -msgstr "Teile bestellen" +msgstr "Bestellstatus" #: templates/table_filters.html:77 -#, fuzzy -#| msgid "Parts (Including subcategories)" msgid "Include subcategories" -msgstr "Teile (inklusive Unter-Kategorien)" +msgstr "Unterkategorien einschließen" #: templates/table_filters.html:78 -#, fuzzy -#| msgid "Parts (Including subcategories)" msgid "Include parts in subcategories" -msgstr "Teile (inklusive Unter-Kategorien)" +msgstr "Teile in Unterkategorien einschließen" #: templates/table_filters.html:82 msgid "Active" -msgstr "" +msgstr "Aktiv" #: templates/table_filters.html:83 -#, fuzzy -#| msgid "Build to allocate parts" msgid "Show active parts" -msgstr "Bau starten um Teile zuzuweisen" +msgstr "Aktive Teile anzeigen" #: templates/table_filters.html:87 -#, fuzzy -#| msgid "Parameter Template" msgid "Template" -msgstr "Parameter Vorlage" +msgstr "Vorlage" #: templates/table_filters.html:91 -#, fuzzy -#| msgid "Available" msgid "Stock available" -msgstr "verfügbar" - -#: templates/table_filters.html:95 -#, fuzzy -#| msgid "Stock" -msgid "Low stock" -msgstr "Lagerbestand" +msgstr "Bestand verfügbar" #: templates/table_filters.html:107 msgid "Starred" -msgstr "" +msgstr "Favorit" #: templates/table_filters.html:115 -#, fuzzy -#| msgid "Purchaseable" msgid "Purchasable" -msgstr "Kaufbar" +msgstr "Käuflich" #~ msgid "Allocate Stock to Build" #~ msgstr "Lagerbestand dem Bau zuweisen" -#~ msgid "Available" -#~ msgstr "verfügbar" - #~ msgid "Required Parts" #~ msgstr "benötigte Teile" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index a5073b2006..3a084556d8 100644 --- a/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/InvenTree/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-02 04:54+0000\n" +"POT-Creation-Date: 2020-05-03 09:34+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -78,19 +78,19 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/settings.py:274 +#: InvenTree/settings.py:295 msgid "English" msgstr "" -#: InvenTree/settings.py:275 +#: InvenTree/settings.py:296 msgid "German" msgstr "" -#: InvenTree/settings.py:276 +#: InvenTree/settings.py:297 msgid "French" msgstr "" -#: InvenTree/settings.py:277 +#: InvenTree/settings.py:298 msgid "Polish" msgstr "" @@ -153,7 +153,7 @@ msgstr "" #: InvenTree/status_codes.py:214 build/templates/build/allocate.html:349 #: order/templates/order/sales_order_detail.html:220 -#: part/templates/part/part_base.html:114 part/templates/part/tabs.html:21 +#: part/templates/part/tabs.html:21 templates/js/build.html:120 msgid "Allocated" msgstr "" @@ -182,7 +182,7 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:536 +#: InvenTree/views.py:547 msgid "Database Statistics" msgstr "" @@ -221,7 +221,9 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:30 #: order/templates/order/purchase_order_detail.html:145 #: part/templates/part/part_app_base.html:7 -#: part/templates/part/set_category.html:13 +#: part/templates/part/set_category.html:13 templates/js/bom.html:135 +#: templates/js/build.html:41 templates/js/company.html:109 +#: templates/js/part.html:111 templates/js/stock.html:206 msgid "Part" msgstr "" @@ -255,7 +257,7 @@ msgstr "" msgid "Number of parts to build" msgstr "" -#: build/models.py:112 part/templates/part/part_base.html:131 +#: build/models.py:112 part/templates/part/part_base.html:138 msgid "Build Status" msgstr "" @@ -272,7 +274,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:139 build/templates/build/detail.html:55 -#: company/templates/company/supplier_part_base.html:57 +#: company/templates/company/supplier_part_base.html:60 #: company/templates/company/supplier_part_detail.html:24 #: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 #: stock/models.py:371 stock/templates/stock/item_base.html:189 @@ -288,6 +290,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:200 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 #: stock/models.py:439 stock/templates/stock/tabs.html:17 +#: templates/js/bom.html:229 templates/js/stock.html:290 msgid "Notes" msgstr "" @@ -371,41 +374,47 @@ msgstr "" #: stock/templates/stock/item_base.html:20 #: stock/templates/stock/item_base.html:26 #: stock/templates/stock/item_base.html:154 -#: stock/templates/stock/stock_adjust.html:18 +#: stock/templates/stock/stock_adjust.html:18 templates/js/bom.html:172 +#: templates/js/build.html:52 templates/js/stock.html:437 msgid "Quantity" msgstr "" #: build/templates/build/allocate.html:177 #: build/templates/build/auto_allocate.html:20 #: stock/templates/stock/item_base.html:134 -#: stock/templates/stock/stock_adjust.html:17 +#: stock/templates/stock/stock_adjust.html:17 templates/js/stock.html:277 msgid "Location" msgstr "" #: build/templates/build/allocate.html:201 -#: order/templates/order/sales_order_detail.html:92 +#: order/templates/order/sales_order_detail.html:92 templates/js/build.html:124 msgid "Edit stock allocation" msgstr "" #: build/templates/build/allocate.html:202 -#: order/templates/order/sales_order_detail.html:93 +#: order/templates/order/sales_order_detail.html:93 templates/js/build.html:125 msgid "Delete stock allocation" msgstr "" -#: build/templates/build/allocate.html:229 +#: build/templates/build/allocate.html:229 templates/js/bom.html:288 msgid "No BOM items found" msgstr "" #: build/templates/build/allocate.html:328 -#: company/templates/company/supplier_part_base.html:50 +#: company/templates/company/supplier_part_base.html:53 #: company/templates/company/supplier_part_detail.html:27 #: order/templates/order/purchase_order_detail.html:157 #: part/templates/part/detail.html:38 part/templates/part/set_category.html:14 +#: templates/js/bom.html:157 templates/js/company.html:60 +#: templates/js/order.html:157 templates/js/order.html:230 +#: templates/js/part.html:167 templates/js/stock.html:227 +#: templates/js/stock.html:418 msgid "Description" msgstr "" #: build/templates/build/allocate.html:333 #: order/templates/order/purchase_order_detail.html:170 +#: templates/js/bom.html:164 msgid "Reference" msgstr "" @@ -452,7 +461,8 @@ msgstr "" #: build/templates/build/build_base.html:8 #: build/templates/build/build_base.html:34 #: build/templates/build/complete.html:6 -#: stock/templates/stock/item_base.html:168 templates/navbar.html:12 +#: stock/templates/stock/item_base.html:168 templates/js/build.html:33 +#: templates/navbar.html:12 msgid "Build" msgstr "" @@ -470,7 +480,9 @@ msgstr "" #: build/templates/build/build_base.html:80 #: build/templates/build/detail.html:42 -#: stock/templates/stock/item_base.html:221 +#: stock/templates/stock/item_base.html:221 templates/js/build.html:57 +#: templates/js/order.html:162 templates/js/order.html:235 +#: templates/js/stock.html:264 msgid "Status" msgstr "" @@ -480,7 +492,7 @@ msgstr "" #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 #: part/templates/part/allocation.html:27 -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:122 templates/js/order.html:209 msgid "Sales Order" msgstr "" @@ -547,13 +559,13 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:48 -#: stock/templates/stock/item_base.html:161 +#: stock/templates/stock/item_base.html:161 templates/js/stock.html:272 msgid "Batch" msgstr "" #: build/templates/build/detail.html:61 #: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:92 +#: order/templates/order/sales_order_base.html:92 templates/js/build.html:65 msgid "Created" msgstr "" @@ -569,7 +581,7 @@ msgstr "" msgid "No" msgstr "" -#: build/templates/build/detail.html:80 +#: build/templates/build/detail.html:80 templates/js/build.html:70 msgid "Completed" msgstr "" @@ -840,7 +852,7 @@ msgid "Part packaging" msgstr "" #: company/templates/company/company_base.html:7 -#: company/templates/company/company_base.html:22 +#: company/templates/company/company_base.html:22 templates/js/company.html:38 msgid "Company" msgstr "" @@ -849,7 +861,7 @@ msgstr "" msgid "Company Details" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:48 templates/js/company.html:65 msgid "Website" msgstr "" @@ -870,22 +882,25 @@ msgid "Contact" msgstr "" #: company/templates/company/detail.html:16 -#: company/templates/company/supplier_part_base.html:73 +#: company/templates/company/supplier_part_base.html:76 #: company/templates/company/supplier_part_detail.html:30 +#: templates/js/company.html:48 templates/js/company.html:158 msgid "Manufacturer" msgstr "" #: company/templates/company/detail.html:21 -#: company/templates/company/supplier_part_base.html:63 +#: company/templates/company/supplier_part_base.html:66 #: company/templates/company/supplier_part_detail.html:21 order/models.py:111 #: order/templates/order/order_base.html:74 #: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:196 templates/js/company.html:52 +#: templates/js/company.html:134 templates/js/order.html:144 msgid "Supplier" msgstr "" #: company/templates/company/detail.html:26 order/models.py:275 -#: order/templates/order/sales_order_base.html:73 +#: order/templates/order/sales_order_base.html:73 templates/js/company.html:44 +#: templates/js/order.html:217 msgid "Customer" msgstr "" @@ -995,39 +1010,45 @@ msgstr "" #: company/templates/company/supplier_part_base.html:6 #: company/templates/company/supplier_part_base.html:19 stock/models.py:344 -#: stock/templates/stock/item_base.html:201 +#: stock/templates/stock/item_base.html:201 templates/js/company.html:150 msgid "Supplier Part" msgstr "" #: company/templates/company/supplier_part_base.html:23 -msgid "Edit supplier part" +#: part/templates/part/orders.html:14 +msgid "Order part" msgstr "" #: company/templates/company/supplier_part_base.html:26 +msgid "Edit supplier part" +msgstr "" + +#: company/templates/company/supplier_part_base.html:29 msgid "Delete supplier part" msgstr "" -#: company/templates/company/supplier_part_base.html:35 +#: company/templates/company/supplier_part_base.html:38 #: company/templates/company/supplier_part_detail.html:11 msgid "Supplier Part Details" msgstr "" -#: company/templates/company/supplier_part_base.html:40 +#: company/templates/company/supplier_part_base.html:43 #: company/templates/company/supplier_part_detail.html:14 msgid "Internal Part" msgstr "" -#: company/templates/company/supplier_part_base.html:67 +#: company/templates/company/supplier_part_base.html:70 #: company/templates/company/supplier_part_detail.html:22 msgid "SKU" msgstr "" -#: company/templates/company/supplier_part_base.html:77 +#: company/templates/company/supplier_part_base.html:80 #: company/templates/company/supplier_part_detail.html:31 +#: templates/js/company.html:174 msgid "MPN" msgstr "" -#: company/templates/company/supplier_part_base.html:84 +#: company/templates/company/supplier_part_base.html:87 #: company/templates/company/supplier_part_detail.html:34 msgid "Note" msgstr "" @@ -1057,6 +1078,7 @@ msgid "New Price Break" msgstr "" #: company/templates/company/supplier_part_pricing.html:28 +#: templates/js/bom.html:213 msgid "Price" msgstr "" @@ -1086,7 +1108,8 @@ msgstr "" #: company/templates/company/supplier_part_tabs.html:8 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 -#: stock/templates/stock/location.html:12 templates/navbar.html:11 +#: stock/templates/stock/location.html:12 templates/js/part.html:194 +#: templates/js/stock.html:235 templates/navbar.html:11 msgid "Stock" msgstr "" @@ -1260,7 +1283,7 @@ msgstr "" #: order/models.py:427 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:175 +#: stock/templates/stock/item_base.html:175 templates/js/order.html:136 msgid "Purchase Order" msgstr "" @@ -1315,7 +1338,7 @@ msgstr "" msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:80 +#: order/templates/order/order_base.html:80 templates/js/order.html:151 msgid "Supplier Reference" msgstr "" @@ -1370,7 +1393,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: order/templates/order/po_tabs.html:5 +#: order/templates/order/po_tabs.html:5 templates/js/order.html:175 +#: templates/js/order.html:253 msgid "Items" msgstr "" @@ -1422,8 +1446,8 @@ msgid "Attachments" msgstr "" #: order/templates/order/purchase_order_detail.html:16 -#: order/templates/order/sales_order_detail.html:17 order/views.py:1042 -#: order/views.py:1156 +#: order/templates/order/sales_order_detail.html:17 order/views.py:1051 +#: order/views.py:1165 msgid "Add Line Item" msgstr "" @@ -1474,7 +1498,7 @@ msgstr "" msgid "Sales Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:79 +#: order/templates/order/sales_order_base.html:79 templates/js/order.html:224 msgid "Customer Reference" msgstr "" @@ -1645,39 +1669,39 @@ msgstr "" msgid "No lines specified" msgstr "" -#: order/views.py:1062 +#: order/views.py:1071 msgid "Invalid Purchase Order" msgstr "" -#: order/views.py:1070 +#: order/views.py:1079 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1075 +#: order/views.py:1084 msgid "Invalid SupplierPart selection" msgstr "" -#: order/views.py:1207 order/views.py:1225 +#: order/views.py:1216 order/views.py:1234 msgid "Edit Line Item" msgstr "" -#: order/views.py:1241 order/views.py:1253 +#: order/views.py:1250 order/views.py:1262 msgid "Delete Line Item" msgstr "" -#: order/views.py:1246 order/views.py:1258 +#: order/views.py:1255 order/views.py:1267 msgid "Deleted line item" msgstr "" -#: order/views.py:1267 +#: order/views.py:1276 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1336 +#: order/views.py:1345 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1351 +#: order/views.py:1360 msgid "Remove allocation" msgstr "" @@ -1923,7 +1947,8 @@ msgstr "" #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:52 #: stock/templates/stock/item_base.html:183 -#: stock/templates/stock/stock_adjust.html:16 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:106 +#: templates/js/stock.html:407 msgid "Stock Item" msgstr "" @@ -2022,6 +2047,7 @@ msgid "Variant Of" msgstr "" #: part/templates/part/detail.html:57 part/templates/part/set_category.html:15 +#: templates/js/part.html:181 msgid "Category" msgstr "" @@ -2037,7 +2063,7 @@ msgstr "" msgid "Minimum Stock" msgstr "" -#: part/templates/part/detail.html:101 +#: part/templates/part/detail.html:101 templates/js/order.html:243 msgid "Creation Date" msgstr "" @@ -2121,10 +2147,6 @@ msgstr "" msgid "Part Notes" msgstr "" -#: part/templates/part/orders.html:14 -msgid "Order part" -msgstr "" - #: part/templates/part/orders.html:14 msgid "Order Part" msgstr "" @@ -2177,7 +2199,8 @@ msgstr "" msgid "This part is a variant of" msgstr "" -#: part/templates/part/part_base.html:30 +#: part/templates/part/part_base.html:30 templates/js/company.html:125 +#: templates/js/part.html:158 msgid "Inactive" msgstr "" @@ -2197,15 +2220,23 @@ msgstr "" msgid "In Stock" msgstr "" +#: part/templates/part/part_base.html:114 +msgid "Allocated to Build Orders" +msgstr "" + #: part/templates/part/part_base.html:121 +msgid "Allocated to Sales Orders" +msgstr "" + +#: part/templates/part/part_base.html:128 templates/js/part.html:210 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:143 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:142 +#: part/templates/part/part_base.html:149 msgid "Underway" msgstr "" @@ -2241,7 +2272,8 @@ msgstr "" msgid "Create New Part" msgstr "" -#: part/templates/part/stock_count.html:7 +#: part/templates/part/stock_count.html:7 templates/js/bom.html:203 +#: templates/js/part.html:218 msgid "No Stock" msgstr "" @@ -2949,6 +2981,130 @@ msgstr "" msgid "Submit Bug Report" msgstr "" +#: templates/js/bom.html:143 +msgid "Open subassembly" +msgstr "" + +#: templates/js/bom.html:194 templates/js/build.html:113 +msgid "Available" +msgstr "" + +#: templates/js/bom.html:219 +msgid "No pricing available" +msgstr "" + +#: templates/js/bom.html:239 +msgid "Validate BOM Item" +msgstr "" + +#: templates/js/bom.html:240 +msgid "This line has been validated" +msgstr "" + +#: templates/js/bom.html:242 +msgid "Edit BOM Item" +msgstr "" + +#: templates/js/bom.html:243 +msgid "Delete BOM Item" +msgstr "" + +#: templates/js/build.html:19 +msgid "No builds matching query" +msgstr "" + +#: templates/js/build.html:102 +msgid "No parts allocated for" +msgstr "" + +#: templates/js/company.html:29 +msgid "No company information found" +msgstr "" + +#: templates/js/company.html:101 +msgid "No supplier parts found" +msgstr "" + +#: templates/js/company.html:117 templates/js/part.html:136 +msgid "Template part" +msgstr "" + +#: templates/js/company.html:121 templates/js/part.html:140 +msgid "Assembled part" +msgstr "" + +#: templates/js/company.html:178 +msgid "Link" +msgstr "" + +#: templates/js/order.html:126 +msgid "No purchase orders found" +msgstr "" + +#: templates/js/order.html:170 templates/js/stock.html:389 +msgid "Date" +msgstr "" + +#: templates/js/order.html:199 +msgid "No sales orders found" +msgstr "" + +#: templates/js/order.html:248 +msgid "Shipment Date" +msgstr "" + +#: templates/js/part.html:104 templates/js/stock.html:196 +msgid "Select" +msgstr "" + +#: templates/js/part.html:144 +msgid "Starred part" +msgstr "" + +#: templates/js/part.html:148 +msgid "Salable part" +msgstr "" + +#: templates/js/part.html:187 +msgid "No category" +msgstr "" + +#: templates/js/part.html:205 templates/table_filters.html:95 +msgid "Low stock" +msgstr "" + +#: templates/js/part.html:214 +msgid "Building" +msgstr "" + +#: templates/js/part.html:232 +msgid "No parts found" +msgstr "" + +#: templates/js/stock.html:66 +msgid "No stock items matching query" +msgstr "" + +#: templates/js/stock.html:251 +msgid "StockItem has been allocated" +msgstr "" + +#: templates/js/stock.html:256 +msgid "StockItem is lost" +msgstr "" + +#: templates/js/stock.html:284 +msgid "No stock location set" +msgstr "" + +#: templates/js/stock.html:446 +msgid "User" +msgstr "" + +#: templates/js/stock.html:455 +msgid "No user information" +msgstr "" + #: templates/navbar.html:14 msgid "Buy" msgstr "" @@ -3069,10 +3225,6 @@ msgstr "" msgid "Stock available" msgstr "" -#: templates/table_filters.html:95 -msgid "Low stock" -msgstr "" - #: templates/table_filters.html:107 msgid "Starred" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index a5073b2006..3a084556d8 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-02 04:54+0000\n" +"POT-Creation-Date: 2020-05-03 09:34+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -78,19 +78,19 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/settings.py:274 +#: InvenTree/settings.py:295 msgid "English" msgstr "" -#: InvenTree/settings.py:275 +#: InvenTree/settings.py:296 msgid "German" msgstr "" -#: InvenTree/settings.py:276 +#: InvenTree/settings.py:297 msgid "French" msgstr "" -#: InvenTree/settings.py:277 +#: InvenTree/settings.py:298 msgid "Polish" msgstr "" @@ -153,7 +153,7 @@ msgstr "" #: InvenTree/status_codes.py:214 build/templates/build/allocate.html:349 #: order/templates/order/sales_order_detail.html:220 -#: part/templates/part/part_base.html:114 part/templates/part/tabs.html:21 +#: part/templates/part/tabs.html:21 templates/js/build.html:120 msgid "Allocated" msgstr "" @@ -182,7 +182,7 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:536 +#: InvenTree/views.py:547 msgid "Database Statistics" msgstr "" @@ -221,7 +221,9 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:30 #: order/templates/order/purchase_order_detail.html:145 #: part/templates/part/part_app_base.html:7 -#: part/templates/part/set_category.html:13 +#: part/templates/part/set_category.html:13 templates/js/bom.html:135 +#: templates/js/build.html:41 templates/js/company.html:109 +#: templates/js/part.html:111 templates/js/stock.html:206 msgid "Part" msgstr "" @@ -255,7 +257,7 @@ msgstr "" msgid "Number of parts to build" msgstr "" -#: build/models.py:112 part/templates/part/part_base.html:131 +#: build/models.py:112 part/templates/part/part_base.html:138 msgid "Build Status" msgstr "" @@ -272,7 +274,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:139 build/templates/build/detail.html:55 -#: company/templates/company/supplier_part_base.html:57 +#: company/templates/company/supplier_part_base.html:60 #: company/templates/company/supplier_part_detail.html:24 #: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 #: stock/models.py:371 stock/templates/stock/item_base.html:189 @@ -288,6 +290,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:200 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 #: stock/models.py:439 stock/templates/stock/tabs.html:17 +#: templates/js/bom.html:229 templates/js/stock.html:290 msgid "Notes" msgstr "" @@ -371,41 +374,47 @@ msgstr "" #: stock/templates/stock/item_base.html:20 #: stock/templates/stock/item_base.html:26 #: stock/templates/stock/item_base.html:154 -#: stock/templates/stock/stock_adjust.html:18 +#: stock/templates/stock/stock_adjust.html:18 templates/js/bom.html:172 +#: templates/js/build.html:52 templates/js/stock.html:437 msgid "Quantity" msgstr "" #: build/templates/build/allocate.html:177 #: build/templates/build/auto_allocate.html:20 #: stock/templates/stock/item_base.html:134 -#: stock/templates/stock/stock_adjust.html:17 +#: stock/templates/stock/stock_adjust.html:17 templates/js/stock.html:277 msgid "Location" msgstr "" #: build/templates/build/allocate.html:201 -#: order/templates/order/sales_order_detail.html:92 +#: order/templates/order/sales_order_detail.html:92 templates/js/build.html:124 msgid "Edit stock allocation" msgstr "" #: build/templates/build/allocate.html:202 -#: order/templates/order/sales_order_detail.html:93 +#: order/templates/order/sales_order_detail.html:93 templates/js/build.html:125 msgid "Delete stock allocation" msgstr "" -#: build/templates/build/allocate.html:229 +#: build/templates/build/allocate.html:229 templates/js/bom.html:288 msgid "No BOM items found" msgstr "" #: build/templates/build/allocate.html:328 -#: company/templates/company/supplier_part_base.html:50 +#: company/templates/company/supplier_part_base.html:53 #: company/templates/company/supplier_part_detail.html:27 #: order/templates/order/purchase_order_detail.html:157 #: part/templates/part/detail.html:38 part/templates/part/set_category.html:14 +#: templates/js/bom.html:157 templates/js/company.html:60 +#: templates/js/order.html:157 templates/js/order.html:230 +#: templates/js/part.html:167 templates/js/stock.html:227 +#: templates/js/stock.html:418 msgid "Description" msgstr "" #: build/templates/build/allocate.html:333 #: order/templates/order/purchase_order_detail.html:170 +#: templates/js/bom.html:164 msgid "Reference" msgstr "" @@ -452,7 +461,8 @@ msgstr "" #: build/templates/build/build_base.html:8 #: build/templates/build/build_base.html:34 #: build/templates/build/complete.html:6 -#: stock/templates/stock/item_base.html:168 templates/navbar.html:12 +#: stock/templates/stock/item_base.html:168 templates/js/build.html:33 +#: templates/navbar.html:12 msgid "Build" msgstr "" @@ -470,7 +480,9 @@ msgstr "" #: build/templates/build/build_base.html:80 #: build/templates/build/detail.html:42 -#: stock/templates/stock/item_base.html:221 +#: stock/templates/stock/item_base.html:221 templates/js/build.html:57 +#: templates/js/order.html:162 templates/js/order.html:235 +#: templates/js/stock.html:264 msgid "Status" msgstr "" @@ -480,7 +492,7 @@ msgstr "" #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 #: part/templates/part/allocation.html:27 -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:122 templates/js/order.html:209 msgid "Sales Order" msgstr "" @@ -547,13 +559,13 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:48 -#: stock/templates/stock/item_base.html:161 +#: stock/templates/stock/item_base.html:161 templates/js/stock.html:272 msgid "Batch" msgstr "" #: build/templates/build/detail.html:61 #: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:92 +#: order/templates/order/sales_order_base.html:92 templates/js/build.html:65 msgid "Created" msgstr "" @@ -569,7 +581,7 @@ msgstr "" msgid "No" msgstr "" -#: build/templates/build/detail.html:80 +#: build/templates/build/detail.html:80 templates/js/build.html:70 msgid "Completed" msgstr "" @@ -840,7 +852,7 @@ msgid "Part packaging" msgstr "" #: company/templates/company/company_base.html:7 -#: company/templates/company/company_base.html:22 +#: company/templates/company/company_base.html:22 templates/js/company.html:38 msgid "Company" msgstr "" @@ -849,7 +861,7 @@ msgstr "" msgid "Company Details" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:48 templates/js/company.html:65 msgid "Website" msgstr "" @@ -870,22 +882,25 @@ msgid "Contact" msgstr "" #: company/templates/company/detail.html:16 -#: company/templates/company/supplier_part_base.html:73 +#: company/templates/company/supplier_part_base.html:76 #: company/templates/company/supplier_part_detail.html:30 +#: templates/js/company.html:48 templates/js/company.html:158 msgid "Manufacturer" msgstr "" #: company/templates/company/detail.html:21 -#: company/templates/company/supplier_part_base.html:63 +#: company/templates/company/supplier_part_base.html:66 #: company/templates/company/supplier_part_detail.html:21 order/models.py:111 #: order/templates/order/order_base.html:74 #: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:196 templates/js/company.html:52 +#: templates/js/company.html:134 templates/js/order.html:144 msgid "Supplier" msgstr "" #: company/templates/company/detail.html:26 order/models.py:275 -#: order/templates/order/sales_order_base.html:73 +#: order/templates/order/sales_order_base.html:73 templates/js/company.html:44 +#: templates/js/order.html:217 msgid "Customer" msgstr "" @@ -995,39 +1010,45 @@ msgstr "" #: company/templates/company/supplier_part_base.html:6 #: company/templates/company/supplier_part_base.html:19 stock/models.py:344 -#: stock/templates/stock/item_base.html:201 +#: stock/templates/stock/item_base.html:201 templates/js/company.html:150 msgid "Supplier Part" msgstr "" #: company/templates/company/supplier_part_base.html:23 -msgid "Edit supplier part" +#: part/templates/part/orders.html:14 +msgid "Order part" msgstr "" #: company/templates/company/supplier_part_base.html:26 +msgid "Edit supplier part" +msgstr "" + +#: company/templates/company/supplier_part_base.html:29 msgid "Delete supplier part" msgstr "" -#: company/templates/company/supplier_part_base.html:35 +#: company/templates/company/supplier_part_base.html:38 #: company/templates/company/supplier_part_detail.html:11 msgid "Supplier Part Details" msgstr "" -#: company/templates/company/supplier_part_base.html:40 +#: company/templates/company/supplier_part_base.html:43 #: company/templates/company/supplier_part_detail.html:14 msgid "Internal Part" msgstr "" -#: company/templates/company/supplier_part_base.html:67 +#: company/templates/company/supplier_part_base.html:70 #: company/templates/company/supplier_part_detail.html:22 msgid "SKU" msgstr "" -#: company/templates/company/supplier_part_base.html:77 +#: company/templates/company/supplier_part_base.html:80 #: company/templates/company/supplier_part_detail.html:31 +#: templates/js/company.html:174 msgid "MPN" msgstr "" -#: company/templates/company/supplier_part_base.html:84 +#: company/templates/company/supplier_part_base.html:87 #: company/templates/company/supplier_part_detail.html:34 msgid "Note" msgstr "" @@ -1057,6 +1078,7 @@ msgid "New Price Break" msgstr "" #: company/templates/company/supplier_part_pricing.html:28 +#: templates/js/bom.html:213 msgid "Price" msgstr "" @@ -1086,7 +1108,8 @@ msgstr "" #: company/templates/company/supplier_part_tabs.html:8 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 -#: stock/templates/stock/location.html:12 templates/navbar.html:11 +#: stock/templates/stock/location.html:12 templates/js/part.html:194 +#: templates/js/stock.html:235 templates/navbar.html:11 msgid "Stock" msgstr "" @@ -1260,7 +1283,7 @@ msgstr "" #: order/models.py:427 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:175 +#: stock/templates/stock/item_base.html:175 templates/js/order.html:136 msgid "Purchase Order" msgstr "" @@ -1315,7 +1338,7 @@ msgstr "" msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:80 +#: order/templates/order/order_base.html:80 templates/js/order.html:151 msgid "Supplier Reference" msgstr "" @@ -1370,7 +1393,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: order/templates/order/po_tabs.html:5 +#: order/templates/order/po_tabs.html:5 templates/js/order.html:175 +#: templates/js/order.html:253 msgid "Items" msgstr "" @@ -1422,8 +1446,8 @@ msgid "Attachments" msgstr "" #: order/templates/order/purchase_order_detail.html:16 -#: order/templates/order/sales_order_detail.html:17 order/views.py:1042 -#: order/views.py:1156 +#: order/templates/order/sales_order_detail.html:17 order/views.py:1051 +#: order/views.py:1165 msgid "Add Line Item" msgstr "" @@ -1474,7 +1498,7 @@ msgstr "" msgid "Sales Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:79 +#: order/templates/order/sales_order_base.html:79 templates/js/order.html:224 msgid "Customer Reference" msgstr "" @@ -1645,39 +1669,39 @@ msgstr "" msgid "No lines specified" msgstr "" -#: order/views.py:1062 +#: order/views.py:1071 msgid "Invalid Purchase Order" msgstr "" -#: order/views.py:1070 +#: order/views.py:1079 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1075 +#: order/views.py:1084 msgid "Invalid SupplierPart selection" msgstr "" -#: order/views.py:1207 order/views.py:1225 +#: order/views.py:1216 order/views.py:1234 msgid "Edit Line Item" msgstr "" -#: order/views.py:1241 order/views.py:1253 +#: order/views.py:1250 order/views.py:1262 msgid "Delete Line Item" msgstr "" -#: order/views.py:1246 order/views.py:1258 +#: order/views.py:1255 order/views.py:1267 msgid "Deleted line item" msgstr "" -#: order/views.py:1267 +#: order/views.py:1276 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1336 +#: order/views.py:1345 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1351 +#: order/views.py:1360 msgid "Remove allocation" msgstr "" @@ -1923,7 +1947,8 @@ msgstr "" #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:52 #: stock/templates/stock/item_base.html:183 -#: stock/templates/stock/stock_adjust.html:16 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:106 +#: templates/js/stock.html:407 msgid "Stock Item" msgstr "" @@ -2022,6 +2047,7 @@ msgid "Variant Of" msgstr "" #: part/templates/part/detail.html:57 part/templates/part/set_category.html:15 +#: templates/js/part.html:181 msgid "Category" msgstr "" @@ -2037,7 +2063,7 @@ msgstr "" msgid "Minimum Stock" msgstr "" -#: part/templates/part/detail.html:101 +#: part/templates/part/detail.html:101 templates/js/order.html:243 msgid "Creation Date" msgstr "" @@ -2121,10 +2147,6 @@ msgstr "" msgid "Part Notes" msgstr "" -#: part/templates/part/orders.html:14 -msgid "Order part" -msgstr "" - #: part/templates/part/orders.html:14 msgid "Order Part" msgstr "" @@ -2177,7 +2199,8 @@ msgstr "" msgid "This part is a variant of" msgstr "" -#: part/templates/part/part_base.html:30 +#: part/templates/part/part_base.html:30 templates/js/company.html:125 +#: templates/js/part.html:158 msgid "Inactive" msgstr "" @@ -2197,15 +2220,23 @@ msgstr "" msgid "In Stock" msgstr "" +#: part/templates/part/part_base.html:114 +msgid "Allocated to Build Orders" +msgstr "" + #: part/templates/part/part_base.html:121 +msgid "Allocated to Sales Orders" +msgstr "" + +#: part/templates/part/part_base.html:128 templates/js/part.html:210 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:143 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:142 +#: part/templates/part/part_base.html:149 msgid "Underway" msgstr "" @@ -2241,7 +2272,8 @@ msgstr "" msgid "Create New Part" msgstr "" -#: part/templates/part/stock_count.html:7 +#: part/templates/part/stock_count.html:7 templates/js/bom.html:203 +#: templates/js/part.html:218 msgid "No Stock" msgstr "" @@ -2949,6 +2981,130 @@ msgstr "" msgid "Submit Bug Report" msgstr "" +#: templates/js/bom.html:143 +msgid "Open subassembly" +msgstr "" + +#: templates/js/bom.html:194 templates/js/build.html:113 +msgid "Available" +msgstr "" + +#: templates/js/bom.html:219 +msgid "No pricing available" +msgstr "" + +#: templates/js/bom.html:239 +msgid "Validate BOM Item" +msgstr "" + +#: templates/js/bom.html:240 +msgid "This line has been validated" +msgstr "" + +#: templates/js/bom.html:242 +msgid "Edit BOM Item" +msgstr "" + +#: templates/js/bom.html:243 +msgid "Delete BOM Item" +msgstr "" + +#: templates/js/build.html:19 +msgid "No builds matching query" +msgstr "" + +#: templates/js/build.html:102 +msgid "No parts allocated for" +msgstr "" + +#: templates/js/company.html:29 +msgid "No company information found" +msgstr "" + +#: templates/js/company.html:101 +msgid "No supplier parts found" +msgstr "" + +#: templates/js/company.html:117 templates/js/part.html:136 +msgid "Template part" +msgstr "" + +#: templates/js/company.html:121 templates/js/part.html:140 +msgid "Assembled part" +msgstr "" + +#: templates/js/company.html:178 +msgid "Link" +msgstr "" + +#: templates/js/order.html:126 +msgid "No purchase orders found" +msgstr "" + +#: templates/js/order.html:170 templates/js/stock.html:389 +msgid "Date" +msgstr "" + +#: templates/js/order.html:199 +msgid "No sales orders found" +msgstr "" + +#: templates/js/order.html:248 +msgid "Shipment Date" +msgstr "" + +#: templates/js/part.html:104 templates/js/stock.html:196 +msgid "Select" +msgstr "" + +#: templates/js/part.html:144 +msgid "Starred part" +msgstr "" + +#: templates/js/part.html:148 +msgid "Salable part" +msgstr "" + +#: templates/js/part.html:187 +msgid "No category" +msgstr "" + +#: templates/js/part.html:205 templates/table_filters.html:95 +msgid "Low stock" +msgstr "" + +#: templates/js/part.html:214 +msgid "Building" +msgstr "" + +#: templates/js/part.html:232 +msgid "No parts found" +msgstr "" + +#: templates/js/stock.html:66 +msgid "No stock items matching query" +msgstr "" + +#: templates/js/stock.html:251 +msgid "StockItem has been allocated" +msgstr "" + +#: templates/js/stock.html:256 +msgid "StockItem is lost" +msgstr "" + +#: templates/js/stock.html:284 +msgid "No stock location set" +msgstr "" + +#: templates/js/stock.html:446 +msgid "User" +msgstr "" + +#: templates/js/stock.html:455 +msgid "No user information" +msgstr "" + #: templates/navbar.html:14 msgid "Buy" msgstr "" @@ -3069,10 +3225,6 @@ msgstr "" msgid "Stock available" msgstr "" -#: templates/table_filters.html:95 -msgid "Low stock" -msgstr "" - #: templates/table_filters.html:107 msgid "Starred" msgstr "" diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 6198eb16bc..56da6c783d 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -209,7 +209,7 @@ class PurchaseOrder(Order): return self.pending_line_items().count() == 0 @transaction.atomic - def receive_line_item(self, line, location, quantity, user): + def receive_line_item(self, line, location, quantity, user, status=StockStatus.OK): """ Receive a line item (or partial line item) against this PO """ @@ -230,7 +230,9 @@ class PurchaseOrder(Order): supplier_part=line.part, location=location, quantity=quantity, - purchase_order=self) + purchase_order=self, + status=status + ) stock.save() diff --git a/InvenTree/order/templates/order/purchase_order_detail.html b/InvenTree/order/templates/order/purchase_order_detail.html index 73c794126c..eb796b2ec1 100644 --- a/InvenTree/order/templates/order/purchase_order_detail.html +++ b/InvenTree/order/templates/order/purchase_order_detail.html @@ -145,7 +145,7 @@ $("#po-table").inventreeTable({ title: '{% trans "Part" %}', formatter: function(value, row, index, field) { if (row.part) { - return imageHoverIcon(row.part_detail.thumbnail) + renderLink(row.part_detail.full_name, `/part/${value}/`); + return imageHoverIcon(row.part_detail.thumbnail) + renderLink(row.part_detail.full_name, `/part/${row.part_detail.pk}/`); } else { return '-'; } diff --git a/InvenTree/order/templates/order/receive_parts.html b/InvenTree/order/templates/order/receive_parts.html index f71959cdc0..082fe083b9 100644 --- a/InvenTree/order/templates/order/receive_parts.html +++ b/InvenTree/order/templates/order/receive_parts.html @@ -1,23 +1,28 @@ {% extends "modal_form.html" %} +{% load i18n %} +{% load inventree_extras %} +{% load status_codes %} {% block form %} -Receive outstanding parts for {{ order }} - {{ order.description }} +{% trans "Receive outstanding parts for" %} {{ order }} - {{ order.description }}
{% csrf_token %} {% load crispy_forms_tags %} - -

Select parts to receive against this order.

+ +

{% trans "Select parts to receive against this order" %}

- - - - - + + + + + + + {% for line in lines %} @@ -28,20 +33,29 @@ Receive outstanding parts for {{ order }} - {{ order.description }} {% else %} - + {% endif %} - - + + + diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index 2459f83abf..02132d34cc 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -29,7 +29,7 @@ from . import forms as order_forms from InvenTree.views import AjaxView, AjaxCreateView, AjaxUpdateView, AjaxDeleteView from InvenTree.helpers import DownloadFile, str2bool -from InvenTree.status_codes import PurchaseOrderStatus +from InvenTree.status_codes import PurchaseOrderStatus, StockStatus logger = logging.getLogger(__name__) @@ -669,6 +669,20 @@ class PurchaseOrderReceive(AjaxUpdateView): except (PurchaseOrderLineItem.DoesNotExist, ValueError): continue + # Check that the StockStatus was set + status_key = 'status-{pk}'.format(pk=pk) + status = request.POST.get(status_key, StockStatus.OK) + + try: + status = int(status) + except ValueError: + status = StockStatus.OK + + if status in StockStatus.RECEIVING_CODES: + line.status_code = status + else: + line.status_code = StockStatus.OK + # Check that line matches the order if not line.order == self.order: # TODO - Display a non-field error? @@ -725,7 +739,13 @@ class PurchaseOrderReceive(AjaxUpdateView): if not line.part: continue - self.order.receive_line_item(line, self.destination, line.receive_quantity, self.request.user) + self.order.receive_line_item( + line, + self.destination, + line.receive_quantity, + self.request.user, + status=line.status_code, + ) class OrderParts(AjaxView): diff --git a/InvenTree/part/templatetags/status_codes.py b/InvenTree/part/templatetags/status_codes.py index 2d4dc77113..ea334970c2 100644 --- a/InvenTree/part/templatetags/status_codes.py +++ b/InvenTree/part/templatetags/status_codes.py @@ -28,6 +28,11 @@ def stock_status_label(key, *args, **kwargs): return mark_safe(StockStatus.render(key, large=kwargs.get('large', False))) +@register.simple_tag +def stock_status_text(key, *args, **kwargs): + return mark_safe(StockStatus.text(key)) + + @register.simple_tag def build_status_label(key, *args, **kwargs): """ Render a Build status label """ diff --git a/InvenTree/script/translate.py b/InvenTree/script/translate.py new file mode 100644 index 0000000000..407acb93c8 --- /dev/null +++ b/InvenTree/script/translate.py @@ -0,0 +1,111 @@ +""" +This script is used to simplify the translation process. + +Django provides a framework for working out which strings are "translatable", +and these strings are then dumped in a file under InvenTree/locale//LC_MESSAGES/django.po + +This script presents the translator with a list of strings which have not yet been translated, +allowing for a simpler and quicker translation process. + +If a string translation needs to be updated, this will still need to be done manually, +by editing the appropriate .po file. + +""" + +import argparse +import os +import sys + + +def manually_translate_file(filename, save=False): + """ + Manually translate a .po file. + Present any missing translation strings to the translator, + and write their responses back to the file. + """ + + print("Add manual translations to '{f}'".format(f=filename)) + print("For each missing translation:") + print("a) Directly enter a new tranlation in the target language") + print("b) Leave empty to skip") + + input("Press to continue") + print("") + + with open(filename, 'r') as f: + lines = f.readlines() + + out = [] + + # Context data + source_line = '' + msgid = '' + + for num, line in enumerate(lines): + # Keep track of context data BEFORE an empty msgstr object + line = line.strip() + + if line.startswith("#: "): + source_line = line.replace("#: ", "") + + elif line.startswith("msgid "): + msgid = line.replace("msgid ", "") + + if line.strip() == 'msgstr ""': + # We have found an empty translation! + + if msgid and len(msgid) > 0 and not msgid == '""': + print("Source:", source_line) + print("Enter translation for {t}".format(t=msgid)) + + translation = str(input(">")) + + if translation and len(translation) > 0: + # Update the line with the new translation + line = 'msgstr "{msg}"'.format(msg=translation) + + out.append(line + "\r\n") + + if save: + with open(filename, 'w') as output_file: + output_file.writelines(out) + + print("Translation done: written to", filename) + print("Run 'make translate' to rebuild translation data") + + +if __name__ == '__main__': + + MY_DIR = os.path.dirname(os.path.realpath(__file__)) + LOCALE_DIR = os.path.join(MY_DIR, '..', 'locale') + + if not os.path.exists(LOCALE_DIR): + print("Error: {d} does not exist!".format(d=LOCALE_DIR)) + sys.exit(1) + + parser = argparse.ArgumentParser(description="InvenTree Translation Helper") + + parser.add_argument('language', help='Language code', action='store') + + parser.add_argument('--fake', help="Do not save updated translations", action='store_true') + + args = parser.parse_args() + + language = args.language + + LANGUAGE_DIR = os.path.abspath(os.path.join(LOCALE_DIR, language)) + + # Check that a locale directory exists for the given language! + if not os.path.exists(LANGUAGE_DIR): + print("Error: Locale directory for language '{l}' does not exist".format(l=language)) + sys.exit(1) + + # Check that a .po file exists for the given language! + PO_FILE = os.path.join(LANGUAGE_DIR, 'LC_MESSAGES', 'django.po') + + if not os.path.exists(PO_FILE): + print("Error: File '{f}' does not exist".format(f=PO_FILE)) + sys.exit(1) + + # Ok, now we run the user through the translation file + manually_translate_file(PO_FILE, save=args.fake is not True) diff --git a/InvenTree/stock/migrations/0035_auto_20200502_2308.py b/InvenTree/stock/migrations/0035_auto_20200502_2308.py new file mode 100644 index 0000000000..8cf02481e5 --- /dev/null +++ b/InvenTree/stock/migrations/0035_auto_20200502_2308.py @@ -0,0 +1,19 @@ +# Generated by Django 3.0.5 on 2020-05-02 23:08 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('stock', '0034_auto_20200426_0602'), + ] + + operations = [ + migrations.AlterField( + model_name='stockitem', + name='status', + field=models.PositiveIntegerField(choices=[(10, 'OK'), (50, 'Attention needed'), (55, 'Damaged'), (60, 'Destroyed'), (70, 'Lost'), (65, 'Rejected'), (85, 'Returned'), (110, 'Shipped'), (120, 'Used for Build'), (130, 'Installed in Stock Item')], default=10, validators=[django.core.validators.MinValueValidator(0)]), + ), + ] diff --git a/InvenTree/templates/base.html b/InvenTree/templates/base.html index bf5fa4a1c3..fbe8398f27 100644 --- a/InvenTree/templates/base.html +++ b/InvenTree/templates/base.html @@ -102,18 +102,19 @@ InvenTree - - - - - - + + + + + + + diff --git a/InvenTree/InvenTree/static/script/inventree/bom.js b/InvenTree/templates/js/bom.html similarity index 83% rename from InvenTree/InvenTree/static/script/inventree/bom.js rename to InvenTree/templates/js/bom.html index e4b90a9f26..518df74d61 100644 --- a/InvenTree/InvenTree/static/script/inventree/bom.js +++ b/InvenTree/templates/js/bom.html @@ -1,3 +1,5 @@ +{% load i18n %} + /* BOM management functions. * Requires follwing files to be loaded first: * - api.js @@ -130,7 +132,7 @@ function loadBomTable(table, options) { cols.push( { field: 'sub_part_detail.full_name', - title: 'Part', + title: '{% trans "Part" %}', sortable: true, formatter: function(value, row, index, field) { var url = `/part/${row.sub_part}/`; @@ -138,7 +140,7 @@ function loadBomTable(table, options) { // Display an extra icon if this part is an assembly if (row.sub_part_detail.assembly) { - var text = ``; + var text = ``; html += renderLink(text, `/part/${row.sub_part}/bom/`); } @@ -152,14 +154,14 @@ function loadBomTable(table, options) { cols.push( { field: 'sub_part_detail.description', - title: 'Description', + title: '{% trans "Description" %}', } ); // Part reference cols.push({ field: 'reference', - title: 'Reference', + title: '{% trans "Reference" %}', searchable: true, sortable: true, }); @@ -167,7 +169,7 @@ function loadBomTable(table, options) { // Part quantity cols.push({ field: 'quantity', - title: 'Quantity', + title: '{% trans "Quantity" %}', searchable: false, sortable: true, formatter: function(value, row, index, field) { @@ -189,7 +191,7 @@ function loadBomTable(table, options) { cols.push( { field: 'sub_part_detail.stock', - title: 'Available', + title: '{% trans "Available" %}', searchable: false, sortable: true, formatter: function(value, row, index, field) { @@ -198,7 +200,7 @@ function loadBomTable(table, options) { var text = value; if (value == null || value <= 0) { - text = `No Stock`; + text = `{% trans "No Stock" %}`; } return renderLink(text, url); @@ -208,13 +210,13 @@ function loadBomTable(table, options) { cols.push( { field: 'price_range', - title: 'Price', + title: '{% trans "Price" %}', sortable: true, formatter: function(value, row, index, field) { if (value) { return value; } else { - return "No pricing available"; + return "{% trans "No pricing available" %}"; } } }); @@ -224,7 +226,7 @@ function loadBomTable(table, options) { cols.push( { field: 'note', - title: 'Notes', + title: '{% trans "Notes" %}', searchable: true, sortable: true, } @@ -234,11 +236,11 @@ function loadBomTable(table, options) { cols.push({ formatter: function(value, row, index, field) { - var bValidate = ""; - var bValid = ""; + var bValidate = ""; + var bValid = ""; - var bEdit = ""; - var bDelt = ""; + var bEdit = ""; + var bDelt = ""; var html = "
"; @@ -283,7 +285,7 @@ function loadBomTable(table, options) { return {classes: 'rowinvalid'}; } }, - formatNoMatches: function() { return "No BOM items found"; }, + formatNoMatches: function() { return "{% trans "No BOM items found" %}"; }, clickToSelect: true, queryParams: function(p) { return params; diff --git a/InvenTree/InvenTree/static/script/inventree/build.js b/InvenTree/templates/js/build.html similarity index 83% rename from InvenTree/InvenTree/static/script/inventree/build.js rename to InvenTree/templates/js/build.html index bb2de7fb81..b48e6a2a09 100644 --- a/InvenTree/InvenTree/static/script/inventree/build.js +++ b/InvenTree/templates/js/build.html @@ -1,3 +1,5 @@ +{% load i18n %} + function loadBuildTable(table, options) { // Display a table of Build objects @@ -14,7 +16,7 @@ function loadBuildTable(table, options) { table.inventreeTable({ method: 'get', formatNoMatches: function() { - return "No builds matching query"; + return "{% trans "No builds matching query" %}"; }, url: options.url, queryParams: filters, @@ -28,7 +30,7 @@ function loadBuildTable(table, options) { }, { field: 'title', - title: 'Build', + title: '{% trans "Build" %}', sortable: true, formatter: function(value, row, index, field) { return renderLink(value, '/build/' + row.pk + '/'); @@ -36,7 +38,7 @@ function loadBuildTable(table, options) { }, { field: 'part', - title: 'Part', + title: '{% trans "Part" %}', sortable: true, formatter: function(value, row, index, field) { @@ -47,12 +49,12 @@ function loadBuildTable(table, options) { }, { field: 'quantity', - title: 'Quantity', + title: '{% trans "Quantity" %}', sortable: true, }, { field: 'status', - title: 'Status', + title: '{% trans "Status" %}', sortable: true, formatter: function(value, row, index, field) { return buildStatusDisplay(value); @@ -60,12 +62,12 @@ function loadBuildTable(table, options) { }, { field: 'creation_date', - title: 'Created', + title: '{% trans "Created" %}', sortable: true, }, { field: 'completion_date', - title: 'Completed', + title: '{% trans "Completed" %}', sortable: true, }, ], @@ -97,30 +99,30 @@ function loadAllocationTable(table, part_id, part, url, required, button) { table.bootstrapTable({ url: url, sortable: false, - formatNoMatches: function() { return 'No parts allocated for ' + part; }, + formatNoMatches: function() { return '{% trans "No parts allocated for" %} ' + part; }, columns: [ { field: 'stock_item_detail', - title: 'Stock Item', + title: '{% trans "Stock Item" %}', formatter: function(value, row, index, field) { return '' + parseFloat(value.quantity) + ' x ' + value.part_name + ' @ ' + value.location_name; } }, { field: 'stock_item_detail.quantity', - title: 'Available', + title: '{% trans "Available" %}', formatter: function(value, row, index, field) { return parseFloat(value); } }, { field: 'quantity', - title: 'Allocated', + title: '{% trans "Allocated" %}', formatter: function(value, row, index, field) { var html = parseFloat(value); - var bEdit = ""; - var bDel = ""; + var bEdit = ""; + var bDel = ""; html += "
" + bEdit + bDel + "
"; diff --git a/InvenTree/InvenTree/static/script/inventree/company.js b/InvenTree/templates/js/company.html similarity index 80% rename from InvenTree/InvenTree/static/script/inventree/company.js rename to InvenTree/templates/js/company.html index d5c37ce363..8b278e2a21 100644 --- a/InvenTree/InvenTree/static/script/inventree/company.js +++ b/InvenTree/templates/js/company.html @@ -1,3 +1,4 @@ +{% load i18n %} function loadCompanyTable(table, url, options={}) { /* @@ -25,7 +26,7 @@ function loadCompanyTable(table, url, options={}) { method: 'get', queryParams: filters, groupBy: false, - formatNoMatches: function() { return "No company information found"; }, + formatNoMatches: function() { return "{% trans "No company information found" %}"; }, columns: [ { field: 'pk', @@ -34,21 +35,21 @@ function loadCompanyTable(table, url, options={}) { }, { field: 'name', - title: 'Company', + title: '{% trans "Company" %}', sortable: true, formatter: function(value, row, index, field) { 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; @@ -56,12 +57,12 @@ function loadCompanyTable(table, url, options={}) { }, { field: 'description', - title: 'Description', + title: '{% trans "Description" %}', sortable: true, }, { field: 'website', - title: 'Website', + title: '{% trans "Website" %}', formatter: function(value, row, index, field) { if (value) { return renderLink(value, value); @@ -97,7 +98,7 @@ function loadSupplierPartTable(table, url, options) { method: 'get', queryParams: filters, groupBy: false, - formatNoMatches: function() { return "No supplier parts found"; }, + formatNoMatches: function() { return "{% trans "No supplier parts found" %}"; }, columns: [ { checkbox: true, @@ -105,7 +106,7 @@ function loadSupplierPartTable(table, url, options) { { sortable: true, field: 'part_detail.full_name', - title: 'Part', + title: '{% trans "Part" %}', formatter: function(value, row, index, field) { var url = `/part/${row.part}/`; @@ -113,15 +114,15 @@ function loadSupplierPartTable(table, url, options) { var html = imageHoverIcon(row.part_detail.thumbnail) + renderLink(value, url); if (row.part_detail.is_template) { - html += ``; + html += ``; } if (row.part_detail.assembly) { - html += ``; + html += ``; } if (!row.part_detail.active) { - html += `INACTIVE`; + html += `{% trans "Inactive" %}`; } return html; @@ -130,7 +131,7 @@ function loadSupplierPartTable(table, url, options) { { sortable: true, field: 'supplier', - title: "Supplier", + title: "{% trans "Supplier" %}", formatter: function(value, row, index, field) { if (value) { var name = row.supplier_detail.name; @@ -146,7 +147,7 @@ function loadSupplierPartTable(table, url, options) { { sortable: true, field: 'SKU', - title: "Supplier Part", + title: "{% trans "Supplier Part" %}", formatter: function(value, row, index, field) { return renderLink(value, `/supplier-part/${row.pk}/`); } @@ -154,7 +155,7 @@ function loadSupplierPartTable(table, url, options) { { sortable: true, field: 'manufacturer', - title: 'Manufacturer', + title: '{% trans "Manufacturer" %}', formatter: function(value, row, index, field) { if (value) { var name = row.manufacturer_detail.name; @@ -170,11 +171,11 @@ function loadSupplierPartTable(table, url, options) { { sortable: true, field: 'MPN', - title: 'MPN', + title: '{% trans "MPN" %}', }, { field: 'link', - title: 'Link', + title: '{% trans "Link" %}', formatter: function(value, row, index, field) { if (value) { return renderLink(value, value); diff --git a/InvenTree/InvenTree/static/script/inventree/order.js b/InvenTree/templates/js/order.html similarity index 86% rename from InvenTree/InvenTree/static/script/inventree/order.js rename to InvenTree/templates/js/order.html index c4e39d9e1d..17bd67cabb 100644 --- a/InvenTree/InvenTree/static/script/inventree/order.js +++ b/InvenTree/templates/js/order.html @@ -1,3 +1,5 @@ +{% load i18n %} + function removeOrderRowFromOrderWizard(e) { /* Remove a part selection from an order form. */ @@ -121,7 +123,7 @@ function loadPurchaseOrderTable(table, options) { queryParams: filters, groupBy: false, original: options.params, - formatNoMatches: function() { return "No purchase orders found"; }, + formatNoMatches: function() { return "{% trans "No purchase orders found" %}"; }, columns: [ { field: 'pk', @@ -131,7 +133,7 @@ function loadPurchaseOrderTable(table, options) { { sortable: true, field: 'reference', - title: 'Purchase Order', + title: '{% trans "Purchase Order" %}', formatter: function(value, row, index, field) { return renderLink(value, `/order/purchase-order/${row.pk}/`); } @@ -139,25 +141,25 @@ function loadPurchaseOrderTable(table, options) { { sortable: true, field: 'supplier_detail', - title: 'Supplier', + title: '{% trans "Supplier" %}', formatter: function(value, row, index, field) { return imageHoverIcon(row.supplier_detail.image) + renderLink(row.supplier_detail.name, `/company/${row.supplier}/purchase-orders/`); } }, { field: 'supplier_reference', - title: 'Supplier Reference', + title: '{% trans "Supplier Reference" %}', sortable: true, }, { sortable: true, field: 'description', - title: 'Description', + title: '{% trans "Description" %}', }, { sortable: true, field: 'status', - title: 'Status', + title: '{% trans "Status" %}', formatter: function(value, row, index, field) { return purchaseOrderStatusDisplay(row.status, row.status_text); } @@ -165,12 +167,12 @@ function loadPurchaseOrderTable(table, options) { { sortable: true, field: 'creation_date', - title: 'Date', + title: '{% trans "Date" %}', }, { sortable: true, field: 'line_items', - title: 'Items' + title: '{% trans "Items" %}' }, ], }); @@ -194,7 +196,7 @@ function loadSalesOrderTable(table, options) { queryParams: filters, groupBy: false, original: options.params, - formatNoMatches: function() { return "No sales orders found"; }, + formatNoMatches: function() { return "{% trans "No sales orders found" %}"; }, columns: [ { field: 'pk', @@ -204,7 +206,7 @@ function loadSalesOrderTable(table, options) { { sortable: true, field: 'reference', - title: 'Sales Order', + title: '{% trans "Sales Order" %}', formatter: function(value, row, index, field) { return renderLink(value, `/order/sales-order/${row.pk}/`); }, @@ -212,25 +214,25 @@ function loadSalesOrderTable(table, options) { { sortable: true, field: 'customer_detail', - title: 'Customer', + title: '{% trans "Customer" %}', formatter: function(value, row, index, field) { return imageHoverIcon(row.customer_detail.image) + renderLink(row.customer_detail.name, `/company/${row.customer}/sales-orders/`); } }, { field: 'customer_reference', - title: 'Customer Reference', + title: '{% trans "Customer Reference" %}', sotrable: true, }, { sortable: true, field: 'description', - title: 'Description', + title: '{% trans "Description" %}', }, { sortable: true, field: 'status', - title: 'Status', + title: '{% trans "Status" %}', formatter: function(value, row, index, field) { return salesOrderStatusDisplay(row.status, row.status_text); } @@ -238,17 +240,17 @@ function loadSalesOrderTable(table, options) { { sortable: true, field: 'creation_date', - title: 'Creation Date', + title: '{% trans "Creation Date" %}', }, { sortable: true, field: 'shipment_date', - title: "Shipment Date", + title: "{% trans "Shipment Date" %}", }, { sortable: true, field: 'line_items', - title: 'Items' + title: '{% trans "Items" %}' }, ], }); diff --git a/InvenTree/InvenTree/static/script/inventree/part.js b/InvenTree/templates/js/part.html similarity index 88% rename from InvenTree/InvenTree/static/script/inventree/part.js rename to InvenTree/templates/js/part.html index 92460a51a7..57e7fa5798 100644 --- a/InvenTree/InvenTree/static/script/inventree/part.js +++ b/InvenTree/templates/js/part.html @@ -1,23 +1,9 @@ +{% load i18n %} + /* Part API functions * Requires api.js to be loaded first */ -function getPartCategoryList(filters={}, options={}) { - return inventreeGet('/api/part/category/', filters, options); -} - -function getSupplierPartList(filters={}, options={}) { - return inventreeGet('/api/part/supplier/', filters, options); -} - -function getPartList(filters={}, options={}) { - return inventreeGet('/api/part/', filters, options); -} - -function getBomList(filters={}, options={}) { - return inventreeGet('/api/bom/', filters, options); -} - function toggleStar(options) { /* Toggle the 'starred' status of a part. * Performs AJAX queries and updates the display on the button. @@ -115,14 +101,14 @@ function loadPartTable(table, url, options={}) { if (options.checkbox) { columns.push({ checkbox: true, - title: 'Select', + title: '{% trans 'Select' %}', searchable: false, }); } columns.push({ field: 'name', - title: 'Part', + title: '{% trans 'Part' %}', sortable: true, formatter: function(value, row, index, field) { @@ -147,19 +133,19 @@ function loadPartTable(table, url, options={}) { var display = imageHoverIcon(row.thumbnail) + renderLink(name, '/part/' + row.pk + '/'); if (row.is_template) { - display += ``; + display += ``; } if (row.assembly) { - display += ``; + display += ``; } if (row.starred) { - display += ``; + display += ``; } if (row.salable) { - display += ``; + display += ``; } /* @@ -169,7 +155,7 @@ function loadPartTable(table, url, options={}) { */ if (!row.active) { - display += `INACTIVE`; + display += `{% trans "Inactive" %}`; } return display; } @@ -178,7 +164,7 @@ function loadPartTable(table, url, options={}) { columns.push({ sortable: true, field: 'description', - title: 'Description', + title: '{% trans 'Description' %}', formatter: function(value, row, index, field) { if (row.is_template) { @@ -192,20 +178,20 @@ function loadPartTable(table, url, options={}) { columns.push({ sortable: true, field: 'category_detail', - title: 'Category', + title: '{% trans 'Category' %}', formatter: function(value, row, index, field) { if (row.category) { return renderLink(value.pathstring, "/part/category/" + row.category + "/"); } else { - return 'No category'; + return '{% trans "No category" %}'; } } }); columns.push({ field: 'in_stock', - title: 'Stock', + title: '{% trans "Stock" %}', searchable: false, sortable: true, formatter: function(value, row, index, field) { @@ -216,20 +202,20 @@ function loadPartTable(table, url, options={}) { // Is stock "low" (below the 'minimum_stock' quantity)? if (row.minimum_stock && row.minimum_stock > value) { - value += "Low stock"; + value += "{% trans "Low stock" %}"; } } else if (row.on_order) { // There is no stock available, but stock is on order - value = "0On Order : " + row.on_order + ""; + value = "0{% trans "On Order" %}: " + row.on_order + ""; link = "orders"; } else if (row.building) { // There is no stock available, but stock is being built - value = "0Building : " + row.building + ""; + value = "0{% trans "Building" %}: " + row.building + ""; link = "builds"; } else { // There is no stock available - value = "0No Stock"; + value = "0{% trans "No Stock" %}"; } return renderLink(value, '/part/' + row.pk + "/" + link + "/"); @@ -243,7 +229,7 @@ function loadPartTable(table, url, options={}) { queryParams: filters, groupBy: false, original: params, - formatNoMatches: function() { return "No parts found"; }, + formatNoMatches: function() { return "{% trans "No parts found" %}"; }, columns: columns, }); diff --git a/InvenTree/InvenTree/static/script/inventree/stock.js b/InvenTree/templates/js/stock.html similarity index 93% rename from InvenTree/InvenTree/static/script/inventree/stock.js rename to InvenTree/templates/js/stock.html index 4e4b61aa93..5645f9aa9c 100644 --- a/InvenTree/InvenTree/static/script/inventree/stock.js +++ b/InvenTree/templates/js/stock.html @@ -1,20 +1,9 @@ +{% load i18n %} + /* Stock API functions * Requires api.js to be loaded first */ -function getStockList(filters={}, options={}) { - return inventreeGet('/api/stock/', filters, options); -} - -function getStockDetail(pk, options={}) { - return inventreeGet('/api/stock/' + pk + '/', {}, options) -} - -function getStockLocations(filters={}, options={}) { - return inventreeGet('/api/stock/location/', filters, options) -} - - /* Functions for interacting with stock management forms */ @@ -29,7 +18,6 @@ function removeStockRow(e) { $('#' + row).remove(); } - function loadStockTable(table, options) { /* Load data into a stock table with adjustable options. * Fetches data (via AJAX) and loads into a bootstrap table. @@ -75,7 +63,7 @@ function loadStockTable(table, options) { table.inventreeTable({ method: 'get', formatNoMatches: function() { - return 'No stock items matching query'; + return '{% trans "No stock items matching query" %}'; }, url: options.url, queryParams: filters, @@ -205,7 +193,7 @@ function loadStockTable(table, options) { columns: [ { checkbox: true, - title: 'Select', + title: '{% trans "Select" %}', searchable: false, }, { @@ -215,7 +203,7 @@ function loadStockTable(table, options) { }, { field: 'part_name', - title: 'Part', + title: '{% trans "Part" %}', sortable: true, formatter: function(value, row, index, field) { @@ -236,7 +224,7 @@ function loadStockTable(table, options) { }, { field: 'part_description', - title: 'Description', + title: '{% trans "Description" %}', sortable: true, formatter: function(value, row, index, field) { return row.part_detail.description; @@ -244,7 +232,7 @@ function loadStockTable(table, options) { }, { field: 'quantity', - title: 'Stock', + title: '{% trans "Stock" %}', sortable: true, formatter: function(value, row, index, field) { @@ -260,12 +248,12 @@ function loadStockTable(table, options) { var html = renderLink(val, `/stock/item/${row.pk}/`); if (row.allocated) { - html += ``; + html += ``; } // 70 = "LOST" if (row.status == 70) { - html += ``; + html += ``; } return html; @@ -273,7 +261,7 @@ function loadStockTable(table, options) { }, { field: 'status', - title: 'Status', + title: '{% trans "Status" %}', sortable: 'true', formatter: function(value, row, index, field) { return stockStatusDisplay(value); @@ -281,25 +269,25 @@ function loadStockTable(table, options) { }, { field: 'batch', - title: 'Batch', + title: '{% trans "Batch" %}', sortable: true, }, { field: 'location_detail.pathstring', - title: 'Location', + title: '{% trans "Location" %}', sortable: true, formatter: function(value, row, index, field) { if (value) { return renderLink(value, '/stock/location/' + row.location + '/'); } else { - return 'No stock location set'; + return '{% trans "No stock location set" %}'; } } }, { field: 'notes', - title: 'Notes', + title: '{% trans "Notes" %}', } ], }); @@ -389,7 +377,6 @@ function loadStockTable(table, options) { }); } - function loadStockTrackingTable(table, options) { var cols = [ @@ -399,7 +386,7 @@ function loadStockTrackingTable(table, options) { }, { field: 'date', - title: 'Date', + title: '{% trans "Date" %}', sortable: true, formatter: function(value, row, index, field) { var m = moment(value); @@ -417,7 +404,7 @@ function loadStockTrackingTable(table, options) { if (options.partColumn) { cols.push({ field: 'item', - title: 'Stock Item', + title: '{% trans "Stock Item" %}', sortable: true, formatter: function(value, row, index, field) { return renderLink(value.part_name, value.url); @@ -428,7 +415,7 @@ function loadStockTrackingTable(table, options) { // Stock transaction description cols.push({ field: 'title', - title: 'Description', + title: '{% trans "Description" %}', sortable: true, formatter: function(value, row, index, field) { var html = "" + value + ""; @@ -447,7 +434,7 @@ function loadStockTrackingTable(table, options) { cols.push({ field: 'quantity', - title: 'Quantity', + title: '{% trans "Quantity" %}', formatter: function(value, row, index, field) { return parseFloat(value); }, @@ -456,7 +443,7 @@ function loadStockTrackingTable(table, options) { cols.push({ sortable: true, field: 'user', - title: 'User', + title: '{% trans "User" %}', formatter: function(value, row, index, field) { if (value) { @@ -465,7 +452,7 @@ function loadStockTrackingTable(table, options) { } else { - return "No user information"; + return "{% trans "No user information" %}"; } } });
PartOrder CodeOn OrderReceivedReceive{% trans "Part" %}{% trans "Order Code" %}{% trans "On Order" %}{% trans "Received" %}{% trans "Receive" %}{% trans "Status" %}
{{ line.part.SKU }}Referenced part has been removed{% trans "Error: Referenced part has been removed" %}{{ line.quantity }}{{ line.received }}{% decimal line.quantity %}{% decimal line.received %}
- +
+
+ +
+