From 40acf90efec7a3e4b44dea0446805f9916015342 Mon Sep 17 00:00:00 2001
From: Oliver Walters <oliver.henry.walters@gmail.com>
Date: Thu, 26 Sep 2019 09:59:50 +1000
Subject: [PATCH] Add some initial (empty) translation files

---
 InvenTree/locale/de/LC_MESSAGES/django.mo | Bin 0 -> 380 bytes
 InvenTree/locale/de/LC_MESSAGES/django.po | 509 ++++++++++++++++++++++
 InvenTree/locale/en/LC_MESSAGES/django.mo | Bin 0 -> 380 bytes
 InvenTree/locale/en/LC_MESSAGES/django.po | 509 ++++++++++++++++++++++
 InvenTree/locale/es/LC_MESSAGES/django.mo | Bin 0 -> 380 bytes
 InvenTree/locale/es/LC_MESSAGES/django.po | 509 ++++++++++++++++++++++
 6 files changed, 1527 insertions(+)
 create mode 100644 InvenTree/locale/de/LC_MESSAGES/django.mo
 create mode 100644 InvenTree/locale/de/LC_MESSAGES/django.po
 create mode 100644 InvenTree/locale/en/LC_MESSAGES/django.mo
 create mode 100644 InvenTree/locale/en/LC_MESSAGES/django.po
 create mode 100644 InvenTree/locale/es/LC_MESSAGES/django.mo
 create mode 100644 InvenTree/locale/es/LC_MESSAGES/django.po

diff --git a/InvenTree/locale/de/LC_MESSAGES/django.mo b/InvenTree/locale/de/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000000000000000000000000000000000..71cbdf3e9d8d54be31066ec4ad8628bc2c1f2845
GIT binary patch
literal 380
zcmYL@K~KUk7=|%=+R?Lz&%}d9i{c3jGZa>EvE7z2Nc2{r&Y96JZ6W$Y{CoZuJ5A(G
zp7i_Dx9RhJeDu}vIq;l#&OC>nD^HugXY4QU{MmN?lNtRkR}RH%w3NnHT4Bh@<dMuM
zENMQE(<I1cqm4t{mem@Kx1~je#t>vF%H^(V-=Ii1iQ$Qo9Pt!I1Rhe%<ICqXp#c-t
zp~47dYvHuPFkLVP3E>oml#`f^NEGFCKEL->Rc=KoQ6a?!10%_7(V7ey8`V`;n{war
z20Z3;uifk31QV^CRQ|iq#``$=;jWunRB8aLH({)F;i8zL{=V00y-I_qTIqGAN(}v%
i$^}`yHKImSZ8jEzYJOK6-VWez49^vuhS0kh1f3tbb!oc*

literal 0
HcmV?d00001

diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..424244dd51
--- /dev/null
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -0,0 +1,509 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-09-25 23:59+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: InvenTree/helpers.py:157 order/models.py:158 order/models.py:203
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:160
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:181 InvenTree/helpers.py:198
+#, python-brace-format
+msgid "Duplicate serial: {n}"
+msgstr ""
+
+#: InvenTree/helpers.py:185 InvenTree/helpers.py:188 InvenTree/helpers.py:191
+#: InvenTree/helpers.py:202
+#, python-brace-format
+msgid "Invalid group: {g}"
+msgstr ""
+
+#: InvenTree/helpers.py:208
+msgid "No serial numbers found"
+msgstr ""
+
+#: InvenTree/helpers.py:212
+#, python-brace-format
+msgid "Number of unique serial number ({s}) must match quantity ({q})"
+msgstr ""
+
+#: InvenTree/settings.py:235
+msgid "English"
+msgstr ""
+
+#: InvenTree/settings.py:236
+msgid "German"
+msgstr ""
+
+#: InvenTree/settings.py:237
+msgid "French"
+msgstr ""
+
+#: InvenTree/settings.py:238
+msgid "Polish"
+msgstr ""
+
+#: InvenTree/status_codes.py:27 InvenTree/status_codes.py:82
+msgid "Pending"
+msgstr ""
+
+#: InvenTree/status_codes.py:28
+msgid "Placed"
+msgstr ""
+
+#: InvenTree/status_codes.py:29 InvenTree/status_codes.py:85
+msgid "Complete"
+msgstr ""
+
+#: InvenTree/status_codes.py:30 InvenTree/status_codes.py:84
+msgid "Cancelled"
+msgstr ""
+
+#: InvenTree/status_codes.py:31 InvenTree/status_codes.py:62
+msgid "Lost"
+msgstr ""
+
+#: InvenTree/status_codes.py:32
+msgid "Returned"
+msgstr ""
+
+#: InvenTree/status_codes.py:58
+msgid "OK"
+msgstr ""
+
+#: InvenTree/status_codes.py:59
+msgid "Attention needed"
+msgstr ""
+
+#: InvenTree/status_codes.py:60
+msgid "Damaged"
+msgstr ""
+
+#: InvenTree/status_codes.py:61
+msgid "Destroyed"
+msgstr ""
+
+#: InvenTree/status_codes.py:83
+msgid "Allocated"
+msgstr ""
+
+#: InvenTree/validators.py:35
+msgid "Invalid character in part name"
+msgstr ""
+
+#: InvenTree/validators.py:44
+#, python-brace-format
+msgid "Illegal character in name ({x})"
+msgstr ""
+
+#: InvenTree/validators.py:63 InvenTree/validators.py:79
+msgid "Overage value must not be negative"
+msgstr ""
+
+#: InvenTree/validators.py:81
+msgid "Overage must not exceed 100%"
+msgstr ""
+
+#: InvenTree/validators.py:88
+msgid "Overage must be an integer value or a percentage"
+msgstr ""
+
+#: build/forms.py:36
+msgid "Confirm"
+msgstr ""
+
+#: build/forms.py:53 stock/forms.py:34
+msgid "Enter unique serial numbers (or leave blank)"
+msgstr ""
+
+#: build/forms.py:55
+msgid "Confirm build completion"
+msgstr ""
+
+#: build/models.py:381
+#, python-brace-format
+msgid "Selected stock item not found in BOM for part '{p}'"
+msgstr ""
+
+#: build/models.py:384
+#, python-brace-format
+msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
+msgstr ""
+
+#: build/views.py:289 stock/views.py:831
+#, python-brace-format
+msgid "The following serial numbers already exist: ({sn})"
+msgstr ""
+
+#: common/models.py:65
+msgid "Settings key (must be unique - case insensitive"
+msgstr ""
+
+#: common/models.py:67
+msgid "Settings value"
+msgstr ""
+
+#: common/models.py:69
+msgid "Settings description"
+msgstr ""
+
+#: common/models.py:82
+msgid "Key string must be unique"
+msgstr ""
+
+#: common/models.py:103
+msgid "Currency Symbol e.g. $"
+msgstr ""
+
+#: common/models.py:105
+msgid "Currency Suffix e.g. AUD"
+msgstr ""
+
+#: common/models.py:107
+msgid "Currency Description"
+msgstr ""
+
+#: common/models.py:109
+msgid "Currency Value"
+msgstr ""
+
+#: common/models.py:111
+msgid "Use this currency as the base currency"
+msgstr ""
+
+#: order/forms.py:21
+msgid "Place order"
+msgstr ""
+
+#: order/forms.py:32
+msgid "Cancel order"
+msgstr ""
+
+#: order/forms.py:43
+msgid "Receive parts to this location"
+msgstr ""
+
+#: order/models.py:62
+msgid "Order reference"
+msgstr ""
+
+#: order/models.py:64
+msgid "Order description"
+msgstr ""
+
+#: order/models.py:66
+msgid "Link to external page"
+msgstr ""
+
+#: order/models.py:83
+msgid "Order notes"
+msgstr ""
+
+#: order/models.py:125
+msgid "Company"
+msgstr ""
+
+#: order/models.py:156 order/models.py:201 part/views.py:1030
+#: stock/models.py:437
+msgid "Quantity must be greater than zero"
+msgstr ""
+
+#: order/models.py:161
+msgid "Part supplier must match PO supplier"
+msgstr ""
+
+#: order/models.py:196
+msgid "Lines can only be received against an order marked as 'Placed'"
+msgstr ""
+
+#: order/models.py:245
+msgid "Item quantity"
+msgstr ""
+
+#: order/models.py:247
+msgid "Line item reference"
+msgstr ""
+
+#: order/models.py:249
+msgid "Line item notes"
+msgstr ""
+
+#: order/models.py:275
+msgid "Purchase Order"
+msgstr ""
+
+#: order/models.py:284
+msgid "Supplier part"
+msgstr ""
+
+#: order/models.py:287
+msgid "Number of items received"
+msgstr ""
+
+#: order/views.py:140
+msgid "Confirm order cancellation"
+msgstr ""
+
+#: order/views.py:173
+msgid "Confirm order placement"
+msgstr ""
+
+#: order/views.py:695
+msgid "Invalid Purchase Order"
+msgstr ""
+
+#: order/views.py:703
+msgid "Supplier must match for Part and Order"
+msgstr ""
+
+#: order/views.py:708
+msgid "Invalid SupplierPart selection"
+msgstr ""
+
+#: part/bom.py:107
+#, python-brace-format
+msgid "Unsupported file format: {f}"
+msgstr ""
+
+#: part/bom.py:112
+msgid "Error reading BOM file (invalid data)"
+msgstr ""
+
+#: part/bom.py:114
+msgid "Error reading BOM file (incorrect row size)"
+msgstr ""
+
+#: part/forms.py:37
+msgid "Confirm that the BOM is correct"
+msgstr ""
+
+#: part/forms.py:49
+msgid "Select BOM file to upload"
+msgstr ""
+
+#: part/forms.py:73
+msgid "Select part category"
+msgstr ""
+
+#: part/forms.py:81
+msgid "Perform 'deep copy' which will duplicate all BOM data for this part"
+msgstr ""
+
+#: part/forms.py:86
+msgid "Confirm part creation"
+msgstr ""
+
+#: part/forms.py:173
+msgid "Input quantity for price calculation"
+msgstr ""
+
+#: part/forms.py:176
+msgid "Select currency for price calculation"
+msgstr ""
+
+#: part/models.py:308
+msgid "Part must be unique for name, IPN and revision"
+msgstr ""
+
+#: part/models.py:322
+msgid "Part cannot be a template part if it is a variant of another part"
+msgstr ""
+
+#: part/models.py:323
+msgid "Part cannot be a variant of another part if it is already a template"
+msgstr ""
+
+#: part/models.py:992
+msgid "Parameter template name must be unique"
+msgstr ""
+
+#: part/models.py:1141
+msgid "Part cannot be added to its own Bill of Materials"
+msgstr ""
+
+#: part/models.py:1148
+#, python-brace-format
+msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
+msgstr ""
+
+#: part/views.py:194
+#, python-brace-format
+msgid "Set category for {n} parts"
+msgstr ""
+
+#: part/views.py:771
+msgid "No BOM file provided"
+msgstr ""
+
+#: part/views.py:1032
+msgid "Enter a valid quantity"
+msgstr ""
+
+#: part/views.py:1056 part/views.py:1059
+msgid "Select valid part"
+msgstr ""
+
+#: part/views.py:1065
+msgid "Duplicate part selected"
+msgstr ""
+
+#: part/views.py:1093
+msgid "Select a part"
+msgstr ""
+
+#: part/views.py:1097
+msgid "Specify quantity"
+msgstr ""
+
+#: stock/forms.py:92
+msgid "File Format"
+msgstr ""
+
+#: stock/forms.py:92
+msgid "Select output file format"
+msgstr ""
+
+#: stock/forms.py:94
+msgid "Include stock items in sub locations"
+msgstr ""
+
+#: stock/forms.py:127
+msgid "Destination stock location"
+msgstr ""
+
+#: stock/forms.py:133
+msgid "Confirm movement of stock items"
+msgstr ""
+
+#: stock/forms.py:135
+msgid "Set the destination as the default location for selected parts"
+msgstr ""
+
+#: stock/models.py:201
+#, python-brace-format
+msgid ""
+"A stock item with this serial number already exists for template part {part}"
+msgstr ""
+
+#: stock/models.py:206
+msgid "A stock item with this serial number already exists"
+msgstr ""
+
+#: stock/models.py:225
+#, python-brace-format
+msgid "Part type ('{pf}') must be {pe}"
+msgstr ""
+
+#: stock/models.py:235 stock/models.py:244
+msgid "Quantity must be 1 for item with a serial number"
+msgstr ""
+
+#: stock/models.py:236
+msgid "Serial number cannot be set if quantity greater than 1"
+msgstr ""
+
+#: stock/models.py:252
+msgid "Stock item cannot be created for a template Part"
+msgstr ""
+
+#: stock/models.py:261
+msgid "Item cannot belong to itself"
+msgstr ""
+
+#: stock/models.py:434
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:440
+#, python-brace-format
+msgid "Quantity must not exceed available stock quantity ({n})"
+msgstr ""
+
+#: stock/models.py:443 stock/models.py:446
+msgid "Serial numbers must be a list of integers"
+msgstr ""
+
+#: stock/models.py:449
+msgid "Quantity does not match serial numbers"
+msgstr ""
+
+#: stock/models.py:459
+msgid "Serial numbers already exist: "
+msgstr ""
+
+#: stock/models.py:480
+msgid "Add serial number"
+msgstr ""
+
+#: stock/models.py:483
+#, python-brace-format
+msgid "Serialized {n} items"
+msgstr ""
+
+#: stock/views.py:396
+msgid "Must enter integer value"
+msgstr ""
+
+#: stock/views.py:401
+msgid "Quantity must be positive"
+msgstr ""
+
+#: stock/views.py:408
+#, python-brace-format
+msgid "Quantity must not exceed {x}"
+msgstr ""
+
+#: stock/views.py:416
+msgid "Confirm stock adjustment"
+msgstr ""
+
+#: stock/views.py:484
+#, python-brace-format
+msgid "Added stock to {n} items"
+msgstr ""
+
+#: stock/views.py:499
+#, python-brace-format
+msgid "Removed stock from {n} items"
+msgstr ""
+
+#: stock/views.py:512
+#, python-brace-format
+msgid "Counted stock for {n} items"
+msgstr ""
+
+#: stock/views.py:540
+msgid "No items were moved"
+msgstr ""
+
+#: stock/views.py:543
+#, python-brace-format
+msgid "Moved {n} items to {dest}"
+msgstr ""
+
+#: stock/views.py:810
+msgid "Invalid part selection"
+msgstr ""
+
+#: stock/views.py:872
+msgid "Created new stock item"
+msgstr ""
diff --git a/InvenTree/locale/en/LC_MESSAGES/django.mo b/InvenTree/locale/en/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000000000000000000000000000000000..71cbdf3e9d8d54be31066ec4ad8628bc2c1f2845
GIT binary patch
literal 380
zcmYL@K~KUk7=|%=+R?Lz&%}d9i{c3jGZa>EvE7z2Nc2{r&Y96JZ6W$Y{CoZuJ5A(G
zp7i_Dx9RhJeDu}vIq;l#&OC>nD^HugXY4QU{MmN?lNtRkR}RH%w3NnHT4Bh@<dMuM
zENMQE(<I1cqm4t{mem@Kx1~je#t>vF%H^(V-=Ii1iQ$Qo9Pt!I1Rhe%<ICqXp#c-t
zp~47dYvHuPFkLVP3E>oml#`f^NEGFCKEL->Rc=KoQ6a?!10%_7(V7ey8`V`;n{war
z20Z3;uifk31QV^CRQ|iq#``$=;jWunRB8aLH({)F;i8zL{=V00y-I_qTIqGAN(}v%
i$^}`yHKImSZ8jEzYJOK6-VWez49^vuhS0kh1f3tbb!oc*

literal 0
HcmV?d00001

diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..424244dd51
--- /dev/null
+++ b/InvenTree/locale/en/LC_MESSAGES/django.po
@@ -0,0 +1,509 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-09-25 23:59+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: InvenTree/helpers.py:157 order/models.py:158 order/models.py:203
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:160
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:181 InvenTree/helpers.py:198
+#, python-brace-format
+msgid "Duplicate serial: {n}"
+msgstr ""
+
+#: InvenTree/helpers.py:185 InvenTree/helpers.py:188 InvenTree/helpers.py:191
+#: InvenTree/helpers.py:202
+#, python-brace-format
+msgid "Invalid group: {g}"
+msgstr ""
+
+#: InvenTree/helpers.py:208
+msgid "No serial numbers found"
+msgstr ""
+
+#: InvenTree/helpers.py:212
+#, python-brace-format
+msgid "Number of unique serial number ({s}) must match quantity ({q})"
+msgstr ""
+
+#: InvenTree/settings.py:235
+msgid "English"
+msgstr ""
+
+#: InvenTree/settings.py:236
+msgid "German"
+msgstr ""
+
+#: InvenTree/settings.py:237
+msgid "French"
+msgstr ""
+
+#: InvenTree/settings.py:238
+msgid "Polish"
+msgstr ""
+
+#: InvenTree/status_codes.py:27 InvenTree/status_codes.py:82
+msgid "Pending"
+msgstr ""
+
+#: InvenTree/status_codes.py:28
+msgid "Placed"
+msgstr ""
+
+#: InvenTree/status_codes.py:29 InvenTree/status_codes.py:85
+msgid "Complete"
+msgstr ""
+
+#: InvenTree/status_codes.py:30 InvenTree/status_codes.py:84
+msgid "Cancelled"
+msgstr ""
+
+#: InvenTree/status_codes.py:31 InvenTree/status_codes.py:62
+msgid "Lost"
+msgstr ""
+
+#: InvenTree/status_codes.py:32
+msgid "Returned"
+msgstr ""
+
+#: InvenTree/status_codes.py:58
+msgid "OK"
+msgstr ""
+
+#: InvenTree/status_codes.py:59
+msgid "Attention needed"
+msgstr ""
+
+#: InvenTree/status_codes.py:60
+msgid "Damaged"
+msgstr ""
+
+#: InvenTree/status_codes.py:61
+msgid "Destroyed"
+msgstr ""
+
+#: InvenTree/status_codes.py:83
+msgid "Allocated"
+msgstr ""
+
+#: InvenTree/validators.py:35
+msgid "Invalid character in part name"
+msgstr ""
+
+#: InvenTree/validators.py:44
+#, python-brace-format
+msgid "Illegal character in name ({x})"
+msgstr ""
+
+#: InvenTree/validators.py:63 InvenTree/validators.py:79
+msgid "Overage value must not be negative"
+msgstr ""
+
+#: InvenTree/validators.py:81
+msgid "Overage must not exceed 100%"
+msgstr ""
+
+#: InvenTree/validators.py:88
+msgid "Overage must be an integer value or a percentage"
+msgstr ""
+
+#: build/forms.py:36
+msgid "Confirm"
+msgstr ""
+
+#: build/forms.py:53 stock/forms.py:34
+msgid "Enter unique serial numbers (or leave blank)"
+msgstr ""
+
+#: build/forms.py:55
+msgid "Confirm build completion"
+msgstr ""
+
+#: build/models.py:381
+#, python-brace-format
+msgid "Selected stock item not found in BOM for part '{p}'"
+msgstr ""
+
+#: build/models.py:384
+#, python-brace-format
+msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
+msgstr ""
+
+#: build/views.py:289 stock/views.py:831
+#, python-brace-format
+msgid "The following serial numbers already exist: ({sn})"
+msgstr ""
+
+#: common/models.py:65
+msgid "Settings key (must be unique - case insensitive"
+msgstr ""
+
+#: common/models.py:67
+msgid "Settings value"
+msgstr ""
+
+#: common/models.py:69
+msgid "Settings description"
+msgstr ""
+
+#: common/models.py:82
+msgid "Key string must be unique"
+msgstr ""
+
+#: common/models.py:103
+msgid "Currency Symbol e.g. $"
+msgstr ""
+
+#: common/models.py:105
+msgid "Currency Suffix e.g. AUD"
+msgstr ""
+
+#: common/models.py:107
+msgid "Currency Description"
+msgstr ""
+
+#: common/models.py:109
+msgid "Currency Value"
+msgstr ""
+
+#: common/models.py:111
+msgid "Use this currency as the base currency"
+msgstr ""
+
+#: order/forms.py:21
+msgid "Place order"
+msgstr ""
+
+#: order/forms.py:32
+msgid "Cancel order"
+msgstr ""
+
+#: order/forms.py:43
+msgid "Receive parts to this location"
+msgstr ""
+
+#: order/models.py:62
+msgid "Order reference"
+msgstr ""
+
+#: order/models.py:64
+msgid "Order description"
+msgstr ""
+
+#: order/models.py:66
+msgid "Link to external page"
+msgstr ""
+
+#: order/models.py:83
+msgid "Order notes"
+msgstr ""
+
+#: order/models.py:125
+msgid "Company"
+msgstr ""
+
+#: order/models.py:156 order/models.py:201 part/views.py:1030
+#: stock/models.py:437
+msgid "Quantity must be greater than zero"
+msgstr ""
+
+#: order/models.py:161
+msgid "Part supplier must match PO supplier"
+msgstr ""
+
+#: order/models.py:196
+msgid "Lines can only be received against an order marked as 'Placed'"
+msgstr ""
+
+#: order/models.py:245
+msgid "Item quantity"
+msgstr ""
+
+#: order/models.py:247
+msgid "Line item reference"
+msgstr ""
+
+#: order/models.py:249
+msgid "Line item notes"
+msgstr ""
+
+#: order/models.py:275
+msgid "Purchase Order"
+msgstr ""
+
+#: order/models.py:284
+msgid "Supplier part"
+msgstr ""
+
+#: order/models.py:287
+msgid "Number of items received"
+msgstr ""
+
+#: order/views.py:140
+msgid "Confirm order cancellation"
+msgstr ""
+
+#: order/views.py:173
+msgid "Confirm order placement"
+msgstr ""
+
+#: order/views.py:695
+msgid "Invalid Purchase Order"
+msgstr ""
+
+#: order/views.py:703
+msgid "Supplier must match for Part and Order"
+msgstr ""
+
+#: order/views.py:708
+msgid "Invalid SupplierPart selection"
+msgstr ""
+
+#: part/bom.py:107
+#, python-brace-format
+msgid "Unsupported file format: {f}"
+msgstr ""
+
+#: part/bom.py:112
+msgid "Error reading BOM file (invalid data)"
+msgstr ""
+
+#: part/bom.py:114
+msgid "Error reading BOM file (incorrect row size)"
+msgstr ""
+
+#: part/forms.py:37
+msgid "Confirm that the BOM is correct"
+msgstr ""
+
+#: part/forms.py:49
+msgid "Select BOM file to upload"
+msgstr ""
+
+#: part/forms.py:73
+msgid "Select part category"
+msgstr ""
+
+#: part/forms.py:81
+msgid "Perform 'deep copy' which will duplicate all BOM data for this part"
+msgstr ""
+
+#: part/forms.py:86
+msgid "Confirm part creation"
+msgstr ""
+
+#: part/forms.py:173
+msgid "Input quantity for price calculation"
+msgstr ""
+
+#: part/forms.py:176
+msgid "Select currency for price calculation"
+msgstr ""
+
+#: part/models.py:308
+msgid "Part must be unique for name, IPN and revision"
+msgstr ""
+
+#: part/models.py:322
+msgid "Part cannot be a template part if it is a variant of another part"
+msgstr ""
+
+#: part/models.py:323
+msgid "Part cannot be a variant of another part if it is already a template"
+msgstr ""
+
+#: part/models.py:992
+msgid "Parameter template name must be unique"
+msgstr ""
+
+#: part/models.py:1141
+msgid "Part cannot be added to its own Bill of Materials"
+msgstr ""
+
+#: part/models.py:1148
+#, python-brace-format
+msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
+msgstr ""
+
+#: part/views.py:194
+#, python-brace-format
+msgid "Set category for {n} parts"
+msgstr ""
+
+#: part/views.py:771
+msgid "No BOM file provided"
+msgstr ""
+
+#: part/views.py:1032
+msgid "Enter a valid quantity"
+msgstr ""
+
+#: part/views.py:1056 part/views.py:1059
+msgid "Select valid part"
+msgstr ""
+
+#: part/views.py:1065
+msgid "Duplicate part selected"
+msgstr ""
+
+#: part/views.py:1093
+msgid "Select a part"
+msgstr ""
+
+#: part/views.py:1097
+msgid "Specify quantity"
+msgstr ""
+
+#: stock/forms.py:92
+msgid "File Format"
+msgstr ""
+
+#: stock/forms.py:92
+msgid "Select output file format"
+msgstr ""
+
+#: stock/forms.py:94
+msgid "Include stock items in sub locations"
+msgstr ""
+
+#: stock/forms.py:127
+msgid "Destination stock location"
+msgstr ""
+
+#: stock/forms.py:133
+msgid "Confirm movement of stock items"
+msgstr ""
+
+#: stock/forms.py:135
+msgid "Set the destination as the default location for selected parts"
+msgstr ""
+
+#: stock/models.py:201
+#, python-brace-format
+msgid ""
+"A stock item with this serial number already exists for template part {part}"
+msgstr ""
+
+#: stock/models.py:206
+msgid "A stock item with this serial number already exists"
+msgstr ""
+
+#: stock/models.py:225
+#, python-brace-format
+msgid "Part type ('{pf}') must be {pe}"
+msgstr ""
+
+#: stock/models.py:235 stock/models.py:244
+msgid "Quantity must be 1 for item with a serial number"
+msgstr ""
+
+#: stock/models.py:236
+msgid "Serial number cannot be set if quantity greater than 1"
+msgstr ""
+
+#: stock/models.py:252
+msgid "Stock item cannot be created for a template Part"
+msgstr ""
+
+#: stock/models.py:261
+msgid "Item cannot belong to itself"
+msgstr ""
+
+#: stock/models.py:434
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:440
+#, python-brace-format
+msgid "Quantity must not exceed available stock quantity ({n})"
+msgstr ""
+
+#: stock/models.py:443 stock/models.py:446
+msgid "Serial numbers must be a list of integers"
+msgstr ""
+
+#: stock/models.py:449
+msgid "Quantity does not match serial numbers"
+msgstr ""
+
+#: stock/models.py:459
+msgid "Serial numbers already exist: "
+msgstr ""
+
+#: stock/models.py:480
+msgid "Add serial number"
+msgstr ""
+
+#: stock/models.py:483
+#, python-brace-format
+msgid "Serialized {n} items"
+msgstr ""
+
+#: stock/views.py:396
+msgid "Must enter integer value"
+msgstr ""
+
+#: stock/views.py:401
+msgid "Quantity must be positive"
+msgstr ""
+
+#: stock/views.py:408
+#, python-brace-format
+msgid "Quantity must not exceed {x}"
+msgstr ""
+
+#: stock/views.py:416
+msgid "Confirm stock adjustment"
+msgstr ""
+
+#: stock/views.py:484
+#, python-brace-format
+msgid "Added stock to {n} items"
+msgstr ""
+
+#: stock/views.py:499
+#, python-brace-format
+msgid "Removed stock from {n} items"
+msgstr ""
+
+#: stock/views.py:512
+#, python-brace-format
+msgid "Counted stock for {n} items"
+msgstr ""
+
+#: stock/views.py:540
+msgid "No items were moved"
+msgstr ""
+
+#: stock/views.py:543
+#, python-brace-format
+msgid "Moved {n} items to {dest}"
+msgstr ""
+
+#: stock/views.py:810
+msgid "Invalid part selection"
+msgstr ""
+
+#: stock/views.py:872
+msgid "Created new stock item"
+msgstr ""
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.mo b/InvenTree/locale/es/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000000000000000000000000000000000..71cbdf3e9d8d54be31066ec4ad8628bc2c1f2845
GIT binary patch
literal 380
zcmYL@K~KUk7=|%=+R?Lz&%}d9i{c3jGZa>EvE7z2Nc2{r&Y96JZ6W$Y{CoZuJ5A(G
zp7i_Dx9RhJeDu}vIq;l#&OC>nD^HugXY4QU{MmN?lNtRkR}RH%w3NnHT4Bh@<dMuM
zENMQE(<I1cqm4t{mem@Kx1~je#t>vF%H^(V-=Ii1iQ$Qo9Pt!I1Rhe%<ICqXp#c-t
zp~47dYvHuPFkLVP3E>oml#`f^NEGFCKEL->Rc=KoQ6a?!10%_7(V7ey8`V`;n{war
z20Z3;uifk31QV^CRQ|iq#``$=;jWunRB8aLH({)F;i8zL{=V00y-I_qTIqGAN(}v%
i$^}`yHKImSZ8jEzYJOK6-VWez49^vuhS0kh1f3tbb!oc*

literal 0
HcmV?d00001

diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..424244dd51
--- /dev/null
+++ b/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -0,0 +1,509 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-09-25 23:59+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: InvenTree/helpers.py:157 order/models.py:158 order/models.py:203
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:160
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:181 InvenTree/helpers.py:198
+#, python-brace-format
+msgid "Duplicate serial: {n}"
+msgstr ""
+
+#: InvenTree/helpers.py:185 InvenTree/helpers.py:188 InvenTree/helpers.py:191
+#: InvenTree/helpers.py:202
+#, python-brace-format
+msgid "Invalid group: {g}"
+msgstr ""
+
+#: InvenTree/helpers.py:208
+msgid "No serial numbers found"
+msgstr ""
+
+#: InvenTree/helpers.py:212
+#, python-brace-format
+msgid "Number of unique serial number ({s}) must match quantity ({q})"
+msgstr ""
+
+#: InvenTree/settings.py:235
+msgid "English"
+msgstr ""
+
+#: InvenTree/settings.py:236
+msgid "German"
+msgstr ""
+
+#: InvenTree/settings.py:237
+msgid "French"
+msgstr ""
+
+#: InvenTree/settings.py:238
+msgid "Polish"
+msgstr ""
+
+#: InvenTree/status_codes.py:27 InvenTree/status_codes.py:82
+msgid "Pending"
+msgstr ""
+
+#: InvenTree/status_codes.py:28
+msgid "Placed"
+msgstr ""
+
+#: InvenTree/status_codes.py:29 InvenTree/status_codes.py:85
+msgid "Complete"
+msgstr ""
+
+#: InvenTree/status_codes.py:30 InvenTree/status_codes.py:84
+msgid "Cancelled"
+msgstr ""
+
+#: InvenTree/status_codes.py:31 InvenTree/status_codes.py:62
+msgid "Lost"
+msgstr ""
+
+#: InvenTree/status_codes.py:32
+msgid "Returned"
+msgstr ""
+
+#: InvenTree/status_codes.py:58
+msgid "OK"
+msgstr ""
+
+#: InvenTree/status_codes.py:59
+msgid "Attention needed"
+msgstr ""
+
+#: InvenTree/status_codes.py:60
+msgid "Damaged"
+msgstr ""
+
+#: InvenTree/status_codes.py:61
+msgid "Destroyed"
+msgstr ""
+
+#: InvenTree/status_codes.py:83
+msgid "Allocated"
+msgstr ""
+
+#: InvenTree/validators.py:35
+msgid "Invalid character in part name"
+msgstr ""
+
+#: InvenTree/validators.py:44
+#, python-brace-format
+msgid "Illegal character in name ({x})"
+msgstr ""
+
+#: InvenTree/validators.py:63 InvenTree/validators.py:79
+msgid "Overage value must not be negative"
+msgstr ""
+
+#: InvenTree/validators.py:81
+msgid "Overage must not exceed 100%"
+msgstr ""
+
+#: InvenTree/validators.py:88
+msgid "Overage must be an integer value or a percentage"
+msgstr ""
+
+#: build/forms.py:36
+msgid "Confirm"
+msgstr ""
+
+#: build/forms.py:53 stock/forms.py:34
+msgid "Enter unique serial numbers (or leave blank)"
+msgstr ""
+
+#: build/forms.py:55
+msgid "Confirm build completion"
+msgstr ""
+
+#: build/models.py:381
+#, python-brace-format
+msgid "Selected stock item not found in BOM for part '{p}'"
+msgstr ""
+
+#: build/models.py:384
+#, python-brace-format
+msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
+msgstr ""
+
+#: build/views.py:289 stock/views.py:831
+#, python-brace-format
+msgid "The following serial numbers already exist: ({sn})"
+msgstr ""
+
+#: common/models.py:65
+msgid "Settings key (must be unique - case insensitive"
+msgstr ""
+
+#: common/models.py:67
+msgid "Settings value"
+msgstr ""
+
+#: common/models.py:69
+msgid "Settings description"
+msgstr ""
+
+#: common/models.py:82
+msgid "Key string must be unique"
+msgstr ""
+
+#: common/models.py:103
+msgid "Currency Symbol e.g. $"
+msgstr ""
+
+#: common/models.py:105
+msgid "Currency Suffix e.g. AUD"
+msgstr ""
+
+#: common/models.py:107
+msgid "Currency Description"
+msgstr ""
+
+#: common/models.py:109
+msgid "Currency Value"
+msgstr ""
+
+#: common/models.py:111
+msgid "Use this currency as the base currency"
+msgstr ""
+
+#: order/forms.py:21
+msgid "Place order"
+msgstr ""
+
+#: order/forms.py:32
+msgid "Cancel order"
+msgstr ""
+
+#: order/forms.py:43
+msgid "Receive parts to this location"
+msgstr ""
+
+#: order/models.py:62
+msgid "Order reference"
+msgstr ""
+
+#: order/models.py:64
+msgid "Order description"
+msgstr ""
+
+#: order/models.py:66
+msgid "Link to external page"
+msgstr ""
+
+#: order/models.py:83
+msgid "Order notes"
+msgstr ""
+
+#: order/models.py:125
+msgid "Company"
+msgstr ""
+
+#: order/models.py:156 order/models.py:201 part/views.py:1030
+#: stock/models.py:437
+msgid "Quantity must be greater than zero"
+msgstr ""
+
+#: order/models.py:161
+msgid "Part supplier must match PO supplier"
+msgstr ""
+
+#: order/models.py:196
+msgid "Lines can only be received against an order marked as 'Placed'"
+msgstr ""
+
+#: order/models.py:245
+msgid "Item quantity"
+msgstr ""
+
+#: order/models.py:247
+msgid "Line item reference"
+msgstr ""
+
+#: order/models.py:249
+msgid "Line item notes"
+msgstr ""
+
+#: order/models.py:275
+msgid "Purchase Order"
+msgstr ""
+
+#: order/models.py:284
+msgid "Supplier part"
+msgstr ""
+
+#: order/models.py:287
+msgid "Number of items received"
+msgstr ""
+
+#: order/views.py:140
+msgid "Confirm order cancellation"
+msgstr ""
+
+#: order/views.py:173
+msgid "Confirm order placement"
+msgstr ""
+
+#: order/views.py:695
+msgid "Invalid Purchase Order"
+msgstr ""
+
+#: order/views.py:703
+msgid "Supplier must match for Part and Order"
+msgstr ""
+
+#: order/views.py:708
+msgid "Invalid SupplierPart selection"
+msgstr ""
+
+#: part/bom.py:107
+#, python-brace-format
+msgid "Unsupported file format: {f}"
+msgstr ""
+
+#: part/bom.py:112
+msgid "Error reading BOM file (invalid data)"
+msgstr ""
+
+#: part/bom.py:114
+msgid "Error reading BOM file (incorrect row size)"
+msgstr ""
+
+#: part/forms.py:37
+msgid "Confirm that the BOM is correct"
+msgstr ""
+
+#: part/forms.py:49
+msgid "Select BOM file to upload"
+msgstr ""
+
+#: part/forms.py:73
+msgid "Select part category"
+msgstr ""
+
+#: part/forms.py:81
+msgid "Perform 'deep copy' which will duplicate all BOM data for this part"
+msgstr ""
+
+#: part/forms.py:86
+msgid "Confirm part creation"
+msgstr ""
+
+#: part/forms.py:173
+msgid "Input quantity for price calculation"
+msgstr ""
+
+#: part/forms.py:176
+msgid "Select currency for price calculation"
+msgstr ""
+
+#: part/models.py:308
+msgid "Part must be unique for name, IPN and revision"
+msgstr ""
+
+#: part/models.py:322
+msgid "Part cannot be a template part if it is a variant of another part"
+msgstr ""
+
+#: part/models.py:323
+msgid "Part cannot be a variant of another part if it is already a template"
+msgstr ""
+
+#: part/models.py:992
+msgid "Parameter template name must be unique"
+msgstr ""
+
+#: part/models.py:1141
+msgid "Part cannot be added to its own Bill of Materials"
+msgstr ""
+
+#: part/models.py:1148
+#, python-brace-format
+msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
+msgstr ""
+
+#: part/views.py:194
+#, python-brace-format
+msgid "Set category for {n} parts"
+msgstr ""
+
+#: part/views.py:771
+msgid "No BOM file provided"
+msgstr ""
+
+#: part/views.py:1032
+msgid "Enter a valid quantity"
+msgstr ""
+
+#: part/views.py:1056 part/views.py:1059
+msgid "Select valid part"
+msgstr ""
+
+#: part/views.py:1065
+msgid "Duplicate part selected"
+msgstr ""
+
+#: part/views.py:1093
+msgid "Select a part"
+msgstr ""
+
+#: part/views.py:1097
+msgid "Specify quantity"
+msgstr ""
+
+#: stock/forms.py:92
+msgid "File Format"
+msgstr ""
+
+#: stock/forms.py:92
+msgid "Select output file format"
+msgstr ""
+
+#: stock/forms.py:94
+msgid "Include stock items in sub locations"
+msgstr ""
+
+#: stock/forms.py:127
+msgid "Destination stock location"
+msgstr ""
+
+#: stock/forms.py:133
+msgid "Confirm movement of stock items"
+msgstr ""
+
+#: stock/forms.py:135
+msgid "Set the destination as the default location for selected parts"
+msgstr ""
+
+#: stock/models.py:201
+#, python-brace-format
+msgid ""
+"A stock item with this serial number already exists for template part {part}"
+msgstr ""
+
+#: stock/models.py:206
+msgid "A stock item with this serial number already exists"
+msgstr ""
+
+#: stock/models.py:225
+#, python-brace-format
+msgid "Part type ('{pf}') must be {pe}"
+msgstr ""
+
+#: stock/models.py:235 stock/models.py:244
+msgid "Quantity must be 1 for item with a serial number"
+msgstr ""
+
+#: stock/models.py:236
+msgid "Serial number cannot be set if quantity greater than 1"
+msgstr ""
+
+#: stock/models.py:252
+msgid "Stock item cannot be created for a template Part"
+msgstr ""
+
+#: stock/models.py:261
+msgid "Item cannot belong to itself"
+msgstr ""
+
+#: stock/models.py:434
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:440
+#, python-brace-format
+msgid "Quantity must not exceed available stock quantity ({n})"
+msgstr ""
+
+#: stock/models.py:443 stock/models.py:446
+msgid "Serial numbers must be a list of integers"
+msgstr ""
+
+#: stock/models.py:449
+msgid "Quantity does not match serial numbers"
+msgstr ""
+
+#: stock/models.py:459
+msgid "Serial numbers already exist: "
+msgstr ""
+
+#: stock/models.py:480
+msgid "Add serial number"
+msgstr ""
+
+#: stock/models.py:483
+#, python-brace-format
+msgid "Serialized {n} items"
+msgstr ""
+
+#: stock/views.py:396
+msgid "Must enter integer value"
+msgstr ""
+
+#: stock/views.py:401
+msgid "Quantity must be positive"
+msgstr ""
+
+#: stock/views.py:408
+#, python-brace-format
+msgid "Quantity must not exceed {x}"
+msgstr ""
+
+#: stock/views.py:416
+msgid "Confirm stock adjustment"
+msgstr ""
+
+#: stock/views.py:484
+#, python-brace-format
+msgid "Added stock to {n} items"
+msgstr ""
+
+#: stock/views.py:499
+#, python-brace-format
+msgid "Removed stock from {n} items"
+msgstr ""
+
+#: stock/views.py:512
+#, python-brace-format
+msgid "Counted stock for {n} items"
+msgstr ""
+
+#: stock/views.py:540
+msgid "No items were moved"
+msgstr ""
+
+#: stock/views.py:543
+#, python-brace-format
+msgid "Moved {n} items to {dest}"
+msgstr ""
+
+#: stock/views.py:810
+msgid "Invalid part selection"
+msgstr ""
+
+#: stock/views.py:872
+msgid "Created new stock item"
+msgstr ""