diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index e5368acac8..ee34b015ea 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-11 22:07+0000\n"
+"POT-Creation-Date: 2021-04-15 10:07+0000\n"
"PO-Revision-Date: 2021-03-28 17:47+0200\n"
"Last-Translator: Andreas Kaiser , Matthias "
"MAIR\n"
@@ -190,11 +190,15 @@ msgstr "Polnisch"
msgid "Turkish"
msgstr "Türkisch"
-#: InvenTree/status.py:57
+#: InvenTree/status.py:84
msgid "Background worker check failed"
msgstr "Hintergrund-Prozess-Kontrolle fehlgeschlagen"
-#: InvenTree/status.py:60
+#: InvenTree/status.py:88
+msgid "Email backend not configured"
+msgstr ""
+
+#: InvenTree/status.py:91
msgid "InvenTree system health checks failed"
msgstr "InvenTree Status-Überprüfung fehlgeschlagen"
@@ -2045,28 +2049,29 @@ msgid "Supplied Parts"
msgstr "Zulieferer-Teile"
#: company/templates/company/navbar.html:23
-#: order/templates/order/receive_parts.html:14 part/models.py:322
-#: part/templates/part/cat_link.html:7 part/templates/part/category.html:95
+#: order/templates/order/receive_parts.html:14 part/api.py:40
+#: part/models.py:322 part/templates/part/cat_link.html:7
+#: part/templates/part/category.html:95
#: part/templates/part/category_navbar.html:11
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_partlist.html:10
#: templates/InvenTree/index.html:96 templates/InvenTree/search.html:113
#: templates/InvenTree/settings/tabs.html:25 templates/navbar.html:23
-#: templates/stats.html:48 templates/stats.html:57 users/models.py:38
+#: templates/stats.html:59 templates/stats.html:68 users/models.py:38
msgid "Parts"
msgstr "Teile"
#: company/templates/company/navbar.html:27 part/templates/part/navbar.html:33
#: stock/templates/stock/location.html:100
#: stock/templates/stock/location.html:115 templates/InvenTree/search.html:182
-#: templates/stats.html:61 templates/stats.html:70 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
msgid "Stock Items"
msgstr "BestandsObjekte"
#: company/templates/company/navbar.html:30
#: company/templates/company/part_navbar.html:14
-#: part/templates/part/navbar.html:36 stock/templates/stock/loc_link.html:7
-#: stock/templates/stock/location.html:29
+#: part/templates/part/navbar.html:36 stock/api.py:51
+#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:29
#: stock/templates/stock/stock_app_base.html:9
#: templates/InvenTree/index.html:127 templates/InvenTree/search.html:180
#: templates/InvenTree/search.html:216
@@ -3274,7 +3279,7 @@ msgstr "Teil-Kategorie"
#: part/models.py:83 part/templates/part/category.html:19
#: part/templates/part/category.html:90 part/templates/part/category.html:141
-#: templates/InvenTree/search.html:126 templates/stats.html:52
+#: templates/InvenTree/search.html:126 templates/stats.html:63
#: users/models.py:37
msgid "Part Categories"
msgstr "Teil-Kategorien"
@@ -5333,7 +5338,7 @@ msgid "Stock Details"
msgstr "Objekt-Details"
#: stock/templates/stock/location.html:110 templates/InvenTree/search.html:263
-#: templates/stats.html:65 users/models.py:39
+#: templates/stats.html:76 users/models.py:39
msgid "Stock Locations"
msgstr "Bestand-Lagerorte"
@@ -6137,6 +6142,14 @@ msgstr "Vorlagenteil"
msgid "Assembled part"
msgstr "Baugruppe"
+#: templates/js/filters.js:167 templates/js/filters.js:397
+msgid "true"
+msgstr "ja"
+
+#: templates/js/filters.js:171 templates/js/filters.js:398
+msgid "false"
+msgstr "nein"
+
#: templates/js/filters.js:193
msgid "Select filter"
msgstr "Filter auswählen"
@@ -6470,6 +6483,22 @@ msgstr "Auftrag zugewiesen"
msgid "No stock items matching query"
msgstr "Keine zur Anfrage passenden BestandsObjekte"
+#: templates/js/stock.js:357
+msgid "items"
+msgstr "Teile"
+
+#: templates/js/stock.js:449
+#, fuzzy
+#| msgid "Batch"
+msgid "batches"
+msgstr "Los"
+
+#: templates/js/stock.js:476
+#, fuzzy
+#| msgid "Allocations"
+msgid "locations"
+msgstr "Zuweisungen"
+
#: templates/js/stock.js:478
msgid "Undefined location"
msgstr "unbekannter Lagerort"
@@ -6653,7 +6682,7 @@ msgstr "Elemente, die in Produktion sind, anzeigen"
#: templates/js/table_filters.js:144
msgid "Include Variants"
-msgstr "Varianten hinzufügen"
+msgstr "Varianten einschließen"
#: templates/js/table_filters.js:145
msgid "Include stock items for variant parts"
@@ -6792,7 +6821,7 @@ msgstr "Barcode scannen"
msgid "Admin"
msgstr "Admin"
-#: templates/navbar.html:73 templates/registration/logout.html:5
+#: templates/navbar.html:73
msgid "Logout"
msgstr "Ausloggen"
@@ -6808,6 +6837,18 @@ msgstr "Über InvenBaum"
msgid "QR data not provided"
msgstr "QR Daten nicht angegeben"
+#: templates/registration/logged_out.html:50
+msgid "You have been logged out"
+msgstr "Sie wurden abgemeldet"
+
+#: templates/registration/logged_out.html:51
+#: templates/registration/password_reset_complete.html:51
+#: templates/registration/password_reset_done.html:58
+#, fuzzy
+#| msgid "Returned to location"
+msgid "Return to login screen"
+msgstr "zurück ins Lager"
+
#: templates/registration/login.html:64
msgid "Enter username"
msgstr "Benutzername eingeben"
@@ -6820,17 +6861,61 @@ msgstr "Passwort"
msgid "Username / password combination is incorrect"
msgstr "Benutzername / Passwort Kombination ist falsch"
-#: templates/registration/logout.html:6
-msgid "You have been logged out"
-msgstr "Sie wurden abgemeldet"
+#: templates/registration/login.html:95
+#: templates/registration/password_reset_form.html:51
+#, fuzzy
+#| msgid "Enter password"
+msgid "Forgotten your password?"
+msgstr "Passwort eingeben"
-#: templates/registration/logout.html:7
-msgid "Click"
-msgstr "Klick"
+#: templates/registration/login.html:95
+msgid "Click here to reset"
+msgstr ""
-#: templates/registration/logout.html:7
-msgid "here to log in
"
-msgstr "hier zum abmelden"
+#: templates/registration/password_reset_complete.html:50
+#, fuzzy
+#| msgid "Purchase order completed"
+msgid "Password reset complete"
+msgstr "Bestellung als vollständig markieren"
+
+#: templates/registration/password_reset_confirm.html:52
+#: templates/registration/password_reset_confirm.html:56
+#, fuzzy
+#| msgid "Change Password"
+msgid "Change password"
+msgstr "Passwort ändern"
+
+#: templates/registration/password_reset_confirm.html:60
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
+msgstr ""
+
+#: templates/registration/password_reset_done.html:51
+msgid ""
+"We've emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+
+#: templates/registration/password_reset_done.html:54
+msgid ""
+"If you don't receive an email, please make sure you've entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:52
+#, fuzzy
+#| msgid "Contact email address"
+msgid "Enter your email address below."
+msgstr "Kontakt-Email"
+
+#: templates/registration/password_reset_form.html:53
+msgid "An email will be sent with password reset instructions."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:58
+msgid "Send email"
+msgstr ""
#: templates/stats.html:9
msgid "Server"
@@ -6852,17 +6937,25 @@ msgstr "Gesund"
msgid "Issues detected"
msgstr "Probleme erkannt"
-#: templates/stats.html:30
+#: templates/stats.html:31
msgid "Background Worker"
msgstr "Hintergrund-Prozess"
-#: templates/stats.html:33
-msgid "Operational"
-msgstr "Betriebsbereit"
+#: templates/stats.html:34
+#, fuzzy
+#| msgid "Background Worker"
+msgid "Background worker not running"
+msgstr "Hintergrund-Prozess"
-#: templates/stats.html:35
-msgid "Not running"
-msgstr "Läuft nicht"
+#: templates/stats.html:42
+#, fuzzy
+#| msgid "Part Settings"
+msgid "Email Settings"
+msgstr "Teil-Einstellungen"
+
+#: templates/stats.html:45
+msgid "Email settings not configured"
+msgstr ""
#: templates/stock_table.html:14
msgid "Export Stock Information"
@@ -6980,6 +7073,28 @@ msgstr "Berechtigungen Einträge zu ändern"
msgid "Permission to delete items"
msgstr "Berechtigung Einträge zu löschen"
+#, fuzzy
+#~| msgid "Part Pricing"
+#~ msgid "Stock Pricing"
+#~ msgstr "Teilbepreisung"
+
+#, fuzzy
+#~| msgid "No pricing information is available for this part."
+#~ msgid "No stock pricing history is available for this part."
+#~ msgstr "Keine Preise für dieses Teil verfügbar"
+
+#~ msgid "Click"
+#~ msgstr "Klick"
+
+#~ msgid "here to log in"
+#~ msgstr "hier zum abmelden"
+
+#~ msgid "Operational"
+#~ msgstr "Betriebsbereit"
+
+#~ msgid "Not running"
+#~ msgstr "Läuft nicht"
+
#~ msgid "InvenTree server issues detected"
#~ msgstr "InvenTree Server Fehler aufgetreten"
@@ -7009,9 +7124,6 @@ msgstr "Berechtigung Einträge zu löschen"
#~ msgid "customer"
#~ msgstr "Kunde"
-#~ msgid "items"
-#~ msgstr "Teile"
-
#~ msgid "Create purchase order"
#~ msgstr "Neue Bestellung anlegen"
diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po
index fb69f99234..cba1555d33 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: 2021-04-11 22:07+0000\n"
+"POT-Creation-Date: 2021-04-15 10:07+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -188,11 +188,15 @@ msgstr ""
msgid "Turkish"
msgstr ""
-#: InvenTree/status.py:57
+#: InvenTree/status.py:84
msgid "Background worker check failed"
msgstr ""
-#: InvenTree/status.py:60
+#: InvenTree/status.py:88
+msgid "Email backend not configured"
+msgstr ""
+
+#: InvenTree/status.py:91
msgid "InvenTree system health checks failed"
msgstr ""
@@ -2022,28 +2026,29 @@ msgid "Supplied Parts"
msgstr ""
#: company/templates/company/navbar.html:23
-#: order/templates/order/receive_parts.html:14 part/models.py:322
-#: part/templates/part/cat_link.html:7 part/templates/part/category.html:95
+#: order/templates/order/receive_parts.html:14 part/api.py:40
+#: part/models.py:322 part/templates/part/cat_link.html:7
+#: part/templates/part/category.html:95
#: part/templates/part/category_navbar.html:11
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_partlist.html:10
#: templates/InvenTree/index.html:96 templates/InvenTree/search.html:113
#: templates/InvenTree/settings/tabs.html:25 templates/navbar.html:23
-#: templates/stats.html:48 templates/stats.html:57 users/models.py:38
+#: templates/stats.html:59 templates/stats.html:68 users/models.py:38
msgid "Parts"
msgstr ""
#: company/templates/company/navbar.html:27 part/templates/part/navbar.html:33
#: stock/templates/stock/location.html:100
#: stock/templates/stock/location.html:115 templates/InvenTree/search.html:182
-#: templates/stats.html:61 templates/stats.html:70 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
msgid "Stock Items"
msgstr ""
#: company/templates/company/navbar.html:30
#: company/templates/company/part_navbar.html:14
-#: part/templates/part/navbar.html:36 stock/templates/stock/loc_link.html:7
-#: stock/templates/stock/location.html:29
+#: part/templates/part/navbar.html:36 stock/api.py:51
+#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:29
#: stock/templates/stock/stock_app_base.html:9
#: templates/InvenTree/index.html:127 templates/InvenTree/search.html:180
#: templates/InvenTree/search.html:216
@@ -3242,7 +3247,7 @@ msgstr ""
#: part/models.py:83 part/templates/part/category.html:19
#: part/templates/part/category.html:90 part/templates/part/category.html:141
-#: templates/InvenTree/search.html:126 templates/stats.html:52
+#: templates/InvenTree/search.html:126 templates/stats.html:63
#: users/models.py:37
msgid "Part Categories"
msgstr ""
@@ -5266,7 +5271,7 @@ msgid "Stock Details"
msgstr ""
#: stock/templates/stock/location.html:110 templates/InvenTree/search.html:263
-#: templates/stats.html:65 users/models.py:39
+#: templates/stats.html:76 users/models.py:39
msgid "Stock Locations"
msgstr ""
@@ -6063,6 +6068,14 @@ msgstr ""
msgid "Assembled part"
msgstr ""
+#: templates/js/filters.js:167 templates/js/filters.js:397
+msgid "true"
+msgstr ""
+
+#: templates/js/filters.js:171 templates/js/filters.js:398
+msgid "false"
+msgstr ""
+
#: templates/js/filters.js:193
msgid "Select filter"
msgstr ""
@@ -6395,6 +6408,18 @@ msgstr ""
msgid "No stock items matching query"
msgstr ""
+#: templates/js/stock.js:357
+msgid "items"
+msgstr ""
+
+#: templates/js/stock.js:449
+msgid "batches"
+msgstr ""
+
+#: templates/js/stock.js:476
+msgid "locations"
+msgstr ""
+
#: templates/js/stock.js:478
msgid "Undefined location"
msgstr ""
@@ -6717,7 +6742,7 @@ msgstr ""
msgid "Admin"
msgstr ""
-#: templates/navbar.html:73 templates/registration/logout.html:5
+#: templates/navbar.html:73
msgid "Logout"
msgstr ""
@@ -6733,6 +6758,16 @@ msgstr ""
msgid "QR data not provided"
msgstr ""
+#: templates/registration/logged_out.html:50
+msgid "You have been logged out"
+msgstr ""
+
+#: templates/registration/logged_out.html:51
+#: templates/registration/password_reset_complete.html:51
+#: templates/registration/password_reset_done.html:58
+msgid "Return to login screen"
+msgstr ""
+
#: templates/registration/login.html:64
msgid "Enter username"
msgstr ""
@@ -6745,16 +6780,52 @@ msgstr ""
msgid "Username / password combination is incorrect"
msgstr ""
-#: templates/registration/logout.html:6
-msgid "You have been logged out"
+#: templates/registration/login.html:95
+#: templates/registration/password_reset_form.html:51
+msgid "Forgotten your password?"
msgstr ""
-#: templates/registration/logout.html:7
-msgid "Click"
+#: templates/registration/login.html:95
+msgid "Click here to reset"
msgstr ""
-#: templates/registration/logout.html:7
-msgid "here to log in"
+#: templates/registration/password_reset_complete.html:50
+msgid "Password reset complete"
+msgstr ""
+
+#: templates/registration/password_reset_confirm.html:52
+#: templates/registration/password_reset_confirm.html:56
+msgid "Change password"
+msgstr ""
+
+#: templates/registration/password_reset_confirm.html:60
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
+msgstr ""
+
+#: templates/registration/password_reset_done.html:51
+msgid ""
+"We've emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+
+#: templates/registration/password_reset_done.html:54
+msgid ""
+"If you don't receive an email, please make sure you've entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:52
+msgid "Enter your email address below."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:53
+msgid "An email will be sent with password reset instructions."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:58
+msgid "Send email"
msgstr ""
#: templates/stats.html:9
@@ -6777,16 +6848,20 @@ msgstr ""
msgid "Issues detected"
msgstr ""
-#: templates/stats.html:30
+#: templates/stats.html:31
msgid "Background Worker"
msgstr ""
-#: templates/stats.html:33
-msgid "Operational"
+#: templates/stats.html:34
+msgid "Background worker not running"
msgstr ""
-#: templates/stats.html:35
-msgid "Not running"
+#: templates/stats.html:42
+msgid "Email Settings"
+msgstr ""
+
+#: templates/stats.html:45
+msgid "Email settings not configured"
msgstr ""
#: templates/stock_table.html:14
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index fb69f99234..cba1555d33 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: 2021-04-11 22:07+0000\n"
+"POT-Creation-Date: 2021-04-15 10:07+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -188,11 +188,15 @@ msgstr ""
msgid "Turkish"
msgstr ""
-#: InvenTree/status.py:57
+#: InvenTree/status.py:84
msgid "Background worker check failed"
msgstr ""
-#: InvenTree/status.py:60
+#: InvenTree/status.py:88
+msgid "Email backend not configured"
+msgstr ""
+
+#: InvenTree/status.py:91
msgid "InvenTree system health checks failed"
msgstr ""
@@ -2022,28 +2026,29 @@ msgid "Supplied Parts"
msgstr ""
#: company/templates/company/navbar.html:23
-#: order/templates/order/receive_parts.html:14 part/models.py:322
-#: part/templates/part/cat_link.html:7 part/templates/part/category.html:95
+#: order/templates/order/receive_parts.html:14 part/api.py:40
+#: part/models.py:322 part/templates/part/cat_link.html:7
+#: part/templates/part/category.html:95
#: part/templates/part/category_navbar.html:11
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_partlist.html:10
#: templates/InvenTree/index.html:96 templates/InvenTree/search.html:113
#: templates/InvenTree/settings/tabs.html:25 templates/navbar.html:23
-#: templates/stats.html:48 templates/stats.html:57 users/models.py:38
+#: templates/stats.html:59 templates/stats.html:68 users/models.py:38
msgid "Parts"
msgstr ""
#: company/templates/company/navbar.html:27 part/templates/part/navbar.html:33
#: stock/templates/stock/location.html:100
#: stock/templates/stock/location.html:115 templates/InvenTree/search.html:182
-#: templates/stats.html:61 templates/stats.html:70 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
msgid "Stock Items"
msgstr ""
#: company/templates/company/navbar.html:30
#: company/templates/company/part_navbar.html:14
-#: part/templates/part/navbar.html:36 stock/templates/stock/loc_link.html:7
-#: stock/templates/stock/location.html:29
+#: part/templates/part/navbar.html:36 stock/api.py:51
+#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:29
#: stock/templates/stock/stock_app_base.html:9
#: templates/InvenTree/index.html:127 templates/InvenTree/search.html:180
#: templates/InvenTree/search.html:216
@@ -3242,7 +3247,7 @@ msgstr ""
#: part/models.py:83 part/templates/part/category.html:19
#: part/templates/part/category.html:90 part/templates/part/category.html:141
-#: templates/InvenTree/search.html:126 templates/stats.html:52
+#: templates/InvenTree/search.html:126 templates/stats.html:63
#: users/models.py:37
msgid "Part Categories"
msgstr ""
@@ -5266,7 +5271,7 @@ msgid "Stock Details"
msgstr ""
#: stock/templates/stock/location.html:110 templates/InvenTree/search.html:263
-#: templates/stats.html:65 users/models.py:39
+#: templates/stats.html:76 users/models.py:39
msgid "Stock Locations"
msgstr ""
@@ -6063,6 +6068,14 @@ msgstr ""
msgid "Assembled part"
msgstr ""
+#: templates/js/filters.js:167 templates/js/filters.js:397
+msgid "true"
+msgstr ""
+
+#: templates/js/filters.js:171 templates/js/filters.js:398
+msgid "false"
+msgstr ""
+
#: templates/js/filters.js:193
msgid "Select filter"
msgstr ""
@@ -6395,6 +6408,18 @@ msgstr ""
msgid "No stock items matching query"
msgstr ""
+#: templates/js/stock.js:357
+msgid "items"
+msgstr ""
+
+#: templates/js/stock.js:449
+msgid "batches"
+msgstr ""
+
+#: templates/js/stock.js:476
+msgid "locations"
+msgstr ""
+
#: templates/js/stock.js:478
msgid "Undefined location"
msgstr ""
@@ -6717,7 +6742,7 @@ msgstr ""
msgid "Admin"
msgstr ""
-#: templates/navbar.html:73 templates/registration/logout.html:5
+#: templates/navbar.html:73
msgid "Logout"
msgstr ""
@@ -6733,6 +6758,16 @@ msgstr ""
msgid "QR data not provided"
msgstr ""
+#: templates/registration/logged_out.html:50
+msgid "You have been logged out"
+msgstr ""
+
+#: templates/registration/logged_out.html:51
+#: templates/registration/password_reset_complete.html:51
+#: templates/registration/password_reset_done.html:58
+msgid "Return to login screen"
+msgstr ""
+
#: templates/registration/login.html:64
msgid "Enter username"
msgstr ""
@@ -6745,16 +6780,52 @@ msgstr ""
msgid "Username / password combination is incorrect"
msgstr ""
-#: templates/registration/logout.html:6
-msgid "You have been logged out"
+#: templates/registration/login.html:95
+#: templates/registration/password_reset_form.html:51
+msgid "Forgotten your password?"
msgstr ""
-#: templates/registration/logout.html:7
-msgid "Click"
+#: templates/registration/login.html:95
+msgid "Click here to reset"
msgstr ""
-#: templates/registration/logout.html:7
-msgid "here to log in"
+#: templates/registration/password_reset_complete.html:50
+msgid "Password reset complete"
+msgstr ""
+
+#: templates/registration/password_reset_confirm.html:52
+#: templates/registration/password_reset_confirm.html:56
+msgid "Change password"
+msgstr ""
+
+#: templates/registration/password_reset_confirm.html:60
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
+msgstr ""
+
+#: templates/registration/password_reset_done.html:51
+msgid ""
+"We've emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+
+#: templates/registration/password_reset_done.html:54
+msgid ""
+"If you don't receive an email, please make sure you've entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:52
+msgid "Enter your email address below."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:53
+msgid "An email will be sent with password reset instructions."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:58
+msgid "Send email"
msgstr ""
#: templates/stats.html:9
@@ -6777,16 +6848,20 @@ msgstr ""
msgid "Issues detected"
msgstr ""
-#: templates/stats.html:30
+#: templates/stats.html:31
msgid "Background Worker"
msgstr ""
-#: templates/stats.html:33
-msgid "Operational"
+#: templates/stats.html:34
+msgid "Background worker not running"
msgstr ""
-#: templates/stats.html:35
-msgid "Not running"
+#: templates/stats.html:42
+msgid "Email Settings"
+msgstr ""
+
+#: templates/stats.html:45
+msgid "Email settings not configured"
msgstr ""
#: templates/stock_table.html:14
diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py
index 54222b7e67..ab946b7dcb 100644
--- a/InvenTree/part/api.py
+++ b/InvenTree/part/api.py
@@ -8,6 +8,7 @@ from __future__ import unicode_literals
from django_filters.rest_framework import DjangoFilterBackend
from django.http import JsonResponse
from django.db.models import Q, F, Count, Prefetch, Sum
+from django.utils.translation import ugettext_lazy as _
from rest_framework import status
from rest_framework.response import Response
@@ -36,7 +37,7 @@ from InvenTree.status_codes import BuildStatus
class PartCategoryTree(TreeSerializer):
- title = "Parts"
+ title = _("Parts")
model = PartCategory
queryset = PartCategory.objects.all()
diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py
index 8196d1e8c1..6da3962224 100644
--- a/InvenTree/stock/api.py
+++ b/InvenTree/stock/api.py
@@ -48,7 +48,7 @@ from rest_framework import generics, filters, permissions
class StockCategoryTree(TreeSerializer):
- title = 'Stock'
+ title = _('Stock')
model = StockLocation
@property
diff --git a/InvenTree/templates/js/filters.js b/InvenTree/templates/js/filters.js
index 01b74763e0..612af8e03c 100644
--- a/InvenTree/templates/js/filters.js
+++ b/InvenTree/templates/js/filters.js
@@ -164,11 +164,11 @@ function getFilterOptionList(tableKey, filterKey) {
return {
'1': {
key: '1',
- value: 'true',
+ value: '{% trans "true" %}',
},
'0': {
key: '0',
- value: 'false',
+ value: '{% trans "false" %}',
},
};
} else if ('options' in settings) {
@@ -394,8 +394,8 @@ function getFilterOptionValue(tableKey, filterKey, valueKey) {
// Lookup for boolean options
if (filter.type == 'bool') {
- if (value == '1') return 'true';
- if (value == '0') return 'false';
+ if (value == '1') return '{% trans "true" %}';
+ if (value == '0') return '{% trans "false" %}';
return value;
}
diff --git a/InvenTree/templates/js/stock.js b/InvenTree/templates/js/stock.js
index b163bc89f3..33f2dae8d6 100644
--- a/InvenTree/templates/js/stock.js
+++ b/InvenTree/templates/js/stock.js
@@ -354,7 +354,7 @@ function loadStockTable(table, options) {
var html = imageHoverIcon(row.part_detail.thumbnail);
html += row.part_detail.full_name;
- html += ` (${data.length} items)`;
+ html += ` (${data.length} {% trans "items" %})`;
html += makePartIcons(row.part_detail);
@@ -446,7 +446,7 @@ function loadStockTable(table, options) {
});
if (batches.length > 1) {
- return "" + batches.length + " batches";
+ return "" + batches.length + " {% trans 'batches' %}";
} else if (batches.length == 1) {
if (batches[0]) {
return batches[0];
@@ -473,9 +473,9 @@ function loadStockTable(table, options) {
// Single location, easy!
return locations[0];
} else if (locations.length > 1) {
- return "In " + locations.length + " locations";
+ return "In " + locations.length + " {% trans 'locations' %}";
} else {
- return "{% trans "Undefined location" %}";
+ return "{% trans 'Undefined location' %}";
}
} else if (field == 'notes') {
var notes = [];
@@ -1219,7 +1219,7 @@ function loadInstalledInTable(table, options) {
// Add some buttons yo!
html += ``;
- html += makeIconButton('fa-unlink', 'button-uninstall', pk, "{% trans "Uninstall stock item" %}");
+ html += makeIconButton('fa-unlink', 'button-uninstall', pk, "{% trans 'Uninstall stock item' %}");
html += `
`;