2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-08-16 16:41:15 +00:00
This commit is contained in:
Matthias Mair
2023-11-16 00:19:03 +01:00
103 changed files with 30088 additions and 24415 deletions
InvenTree
InvenTree
build
common
company
label
locale
bg
LC_MESSAGES
cs
LC_MESSAGES
da
LC_MESSAGES
de
LC_MESSAGES
el
LC_MESSAGES
en
LC_MESSAGES
es
LC_MESSAGES
es_MX
LC_MESSAGES
fa
LC_MESSAGES
fi
LC_MESSAGES
fr
LC_MESSAGES
he
LC_MESSAGES
hi
LC_MESSAGES
hu
LC_MESSAGES
id
LC_MESSAGES
it
LC_MESSAGES
ja
LC_MESSAGES
ko
LC_MESSAGES
nl
LC_MESSAGES
no
LC_MESSAGES
pl
LC_MESSAGES
pt
LC_MESSAGES
pt_br
LC_MESSAGES
ru
LC_MESSAGES
sl
LC_MESSAGES
sv
LC_MESSAGES
th
LC_MESSAGES
tr
LC_MESSAGES
vi
LC_MESSAGES
zh
LC_MESSAGES
zh_Hans
LC_MESSAGES
zh_hant
LC_MESSAGES
order
part
plugin
report
stock
templates
docs/docs/report
src/frontend/src/locales

@@ -2,10 +2,15 @@
# InvenTree API version
INVENTREE_API_VERSION = 150
INVENTREE_API_VERSION = 151
"""Increment this API version number whenever there is a significant change to the API that any clients need to know about."""
INVENTREE_API_TEXT = """
v151 -> 2023-11-13 : https://github.com/inventree/InvenTree/pull/5906
- Allow user list API to be filtered by user active status
- Allow owner list API to be filtered by user active status
v150 -> 2023-11-07: https://github.com/inventree/InvenTree/pull/5875
- Extended user API endpoints to enable ordering
- Extended user API endpoints to enable user role changes

@@ -127,6 +127,36 @@ def load_config_data(set_cache: bool = False) -> map:
return data
def do_typecast(value, type, var_name=None):
"""Attempt to typecast a value.
Arguments:
value: Value to typecast
type: Function to use for typecasting the value e.g. int, float, str, list, dict
var_name: Name that should be logged e.g. 'INVENTREE_STATIC_ROOT'. Set if logging is required.
Returns:
Typecasted value or original value if typecasting failed.
"""
# Force 'list' of strings
if type is list:
value = to_list(value)
# Valid JSON string is required
elif type is dict:
value = to_dict(value)
elif type is not None:
# Try to typecast the value
try:
val = type(value)
return val
except Exception as error:
if var_name:
logger.exception("Failed to typecast '%s' with value '%s' to type '%s' with error %s", var_name, value, type, error)
return value
def get_setting(env_var=None, config_key=None, default_value=None, typecast=None):
"""Helper function for retrieving a configuration setting value.
@@ -138,29 +168,8 @@ def get_setting(env_var=None, config_key=None, default_value=None, typecast=None
env_var: Name of the environment variable e.g. 'INVENTREE_STATIC_ROOT'
config_key: Key to lookup in the configuration file
default_value: Value to return if first two options are not provided
typecast: Function to use for typecasting the value
typecast: Function to use for typecasting the value e.g. int, float, str, list, dict
"""
def try_typecasting(value, source: str):
"""Attempt to typecast the value"""
# Force 'list' of strings
if typecast is list:
value = to_list(value)
# Valid JSON string is required
elif typecast is dict:
value = to_dict(value)
elif typecast is not None:
# Try to typecast the value
try:
val = typecast(value)
set_metadata(source)
return val
except Exception as error:
logger.exception("Failed to typecast '%s' with value '%s' to type '%s' with error %s", env_var, value, typecast, error)
set_metadata(source)
return value
def set_metadata(source: str):
"""Set lookup metadata for the setting."""
@@ -172,7 +181,8 @@ def get_setting(env_var=None, config_key=None, default_value=None, typecast=None
val = os.getenv(env_var, None)
if val is not None:
return try_typecasting(val, 'env')
set_metadata('env')
return do_typecast(val, typecast, var_name=env_var)
# Next, try to load from configuration file
if config_key is not None:
@@ -191,10 +201,12 @@ def get_setting(env_var=None, config_key=None, default_value=None, typecast=None
cfg_data = cfg_data[key]
if result is not None:
return try_typecasting(result, 'yaml')
set_metadata('yaml')
return do_typecast(result, typecast, var_name=env_var)
# Finally, return the default value
return try_typecasting(default_value, 'default')
set_metadata('default')
return do_typecast(default_value, typecast, var_name=env_var)
def get_boolean_setting(env_var=None, config_key=None, default_value=False):

@@ -10,7 +10,6 @@ from rest_framework.utils import model_meta
import InvenTree.permissions
import users.models
from InvenTree.helpers import str2bool
from InvenTree.serializers import DependentField
logger = logging.getLogger('inventree')
@@ -243,10 +242,6 @@ class InvenTreeMetadata(SimpleMetadata):
We take the regular DRF metadata and add our own unique flavor
"""
# Try to add the child property to the dependent field to be used by the super call
if self.label_lookup[field] == 'dependent field':
field.get_child(raise_exception=True)
# Run super method first
field_info = super().get_field_info(field)
@@ -280,11 +275,4 @@ class InvenTreeMetadata(SimpleMetadata):
else:
field_info['api_url'] = model.get_api_url()
# Add more metadata about dependent fields
if field_info['type'] == 'dependent field':
field_info['depends_on'] = field.depends_on
return field_info
InvenTreeMetadata.label_lookup[DependentField] = "dependent field"

@@ -2,7 +2,6 @@
import os
from collections import OrderedDict
from copy import deepcopy
from decimal import Decimal
from django.conf import settings
@@ -95,93 +94,6 @@ class InvenTreeCurrencySerializer(serializers.ChoiceField):
super().__init__(*args, **kwargs)
class DependentField(serializers.Field):
"""A dependent field can be used to dynamically return child fields based on the value of other fields."""
child = None
def __init__(self, *args, depends_on, field_serializer, **kwargs):
"""A dependent field can be used to dynamically return child fields based on the value of other fields.
Example:
This example adds two fields. If the client selects integer, an integer field will be shown, but if he
selects char, an char field will be shown. For any other value, nothing will be shown.
class TestSerializer(serializers.Serializer):
select_type = serializers.ChoiceField(choices=[
("integer", "Integer"),
("char", "Char"),
])
my_field = DependentField(depends_on=["select_type"], field_serializer="get_my_field")
def get_my_field(self, fields):
if fields["select_type"] == "integer":
return serializers.IntegerField()
if fields["select_type"] == "char":
return serializers.CharField()
"""
super().__init__(*args, **kwargs)
self.depends_on = depends_on
self.field_serializer = field_serializer
def get_child(self, raise_exception=False):
"""This method tries to extract the child based on the provided data in the request by the client."""
data = deepcopy(self.context["request"].data)
def visit_parent(node):
"""Recursively extract the data for the parent field/serializer in reverse."""
nonlocal data
if node.parent:
visit_parent(node.parent)
# only do for composite fields and stop right before the current field
if hasattr(node, "child") and node is not self and isinstance(data, dict):
data = data.get(node.field_name, None)
visit_parent(self)
# ensure that data is a dictionary and that a parent exists
if not isinstance(data, dict) or self.parent is None:
return
# check if the request data contains the dependent fields, otherwise skip getting the child
for f in self.depends_on:
if not data.get(f, None):
return
# partially validate the data for options requests that set raise_exception while calling .get_child(...)
if raise_exception:
validation_data = {k: v for k, v in data.items() if k in self.depends_on}
serializer = self.parent.__class__(context=self.context, data=validation_data, partial=True)
serializer.is_valid(raise_exception=raise_exception)
# try to get the field serializer
field_serializer = getattr(self.parent, self.field_serializer)
child = field_serializer(data)
if not child:
return
self.child = child
self.child.bind(field_name='', parent=self)
def to_internal_value(self, data):
"""This method tries to convert the data to an internal representation based on the defined to_internal_value method on the child."""
self.get_child()
if self.child:
return self.child.to_internal_value(data)
return None
def to_representation(self, value):
"""This method tries to convert the data to representation based on the defined to_representation method on the child."""
self.get_child()
if self.child:
return self.child.to_representation(value)
return None
class InvenTreeModelSerializer(serializers.ModelSerializer):
"""Inherits the standard Django ModelSerializer class, but also ensures that the underlying model class data are checked on validation."""

@@ -34,7 +34,7 @@ import InvenTree.ready
import InvenTree.tasks
import common.models
from common.notifications import trigger_notification
from common.notifications import trigger_notification, InvenTreeNotificationBodies
from plugin.events import trigger_event
import part.models
@@ -605,6 +605,14 @@ class Build(MPTTModel, InvenTree.mixins.DiffMixin, InvenTree.models.InvenTreeBar
self.status = BuildStatus.CANCELLED.value
self.save()
# Notify users that the order has been canceled
InvenTree.helpers_model.notify_responsible(
self,
Build,
exclude=self.issued_by,
content=InvenTreeNotificationBodies.OrderCanceled
)
trigger_event('build.cancelled', id=self.pk)
@transaction.atomic
@@ -1004,7 +1012,7 @@ class Build(MPTTModel, InvenTree.mixins.DiffMixin, InvenTree.models.InvenTreeBar
)
# Filter out "serialized" stock items, these cannot be auto-allocated
available_stock = available_stock.filter(Q(serial=None) | Q(serial=''))
available_stock = available_stock.filter(Q(serial=None) | Q(serial='')).distinct()
if location:
# Filter only stock items located "below" the specified location

@@ -294,6 +294,14 @@ class InvenTreeNotificationBodies:
)
"""Send when a new order (build, sale or purchase) was created."""
OrderCanceled = NotificationBody(
name=_("{verbose_name} canceled"),
slug='{app_label}.canceled_{model_name}',
message=_("A order that is assigned to you was canceled"),
template='email/canceled_order_assigned.html',
)
"""Send when a order (sale, return or purchase) was canceled."""
ItemsReceived = NotificationBody(
name=_("Items Received"),
slug='purchase_order.items_received',

@@ -376,7 +376,7 @@ class SupplierPartList(ListCreateDestroyAPIView):
company = params.get('company', None)
if company is not None:
queryset = queryset.filter(Q(manufacturer_part__manufacturer=company) | Q(supplier=company))
queryset = queryset.filter(Q(manufacturer_part__manufacturer=company) | Q(supplier=company)).distinct()
return queryset

@@ -206,13 +206,13 @@ class Company(InvenTreeNotesMixin, MetadataMixin, models.Model):
@property
def parts(self):
"""Return SupplierPart objects which are supplied or manufactured by this company."""
return SupplierPart.objects.filter(Q(supplier=self.id) | Q(manufacturer_part__manufacturer=self.id))
return SupplierPart.objects.filter(Q(supplier=self.id) | Q(manufacturer_part__manufacturer=self.id)).distinct()
@property
def stock_items(self):
"""Return a list of all stock items supplied or manufactured by this company."""
stock = apps.get_model('stock', 'StockItem')
return stock.objects.filter(Q(supplier_part__supplier=self.id) | Q(supplier_part__manufacturer_part__manufacturer=self.id)).all()
return stock.objects.filter(Q(supplier_part__supplier=self.id) | Q(supplier_part__manufacturer_part__manufacturer=self.id)).distinct()
class CompanyAttachment(InvenTreeAttachment):

@@ -159,8 +159,7 @@ class LabelPrintMixin(LabelFilterMixin):
# Check the request to determine if the user has selected a label printing plugin
plugin = self.get_plugin(self.request)
kwargs.setdefault('context', self.get_serializer_context())
serializer = plugin.get_printing_options_serializer(self.request, *args, **kwargs)
serializer = plugin.get_printing_options_serializer(self.request)
# if no serializer is defined, return an empty serializer
if not serializer:
@@ -227,7 +226,7 @@ class LabelPrintMixin(LabelFilterMixin):
raise ValidationError('Label has invalid dimensions')
# if the plugin returns a serializer, validate the data
if serializer := plugin.get_printing_options_serializer(request, data=request.data, context=self.get_serializer_context()):
if serializer := plugin.get_printing_options_serializer(request, data=request.data):
serializer.is_valid(raise_exception=True)
# At this point, we offload the label(s) to the selected plugin.

@@ -10,10 +10,10 @@ from pathlib import Path
from django.apps import AppConfig
from django.conf import settings
from django.core.exceptions import AppRegistryNotReady
from django.db.utils import OperationalError
from django.db.utils import IntegrityError, OperationalError, ProgrammingError
from InvenTree.ready import (canAppAccessDatabase, isInMainThread,
isPluginRegistryLoaded)
from InvenTree.ready import (canAppAccessDatabase, isImportingData,
isInMainThread, isPluginRegistryLoaded)
logger = logging.getLogger("inventree")
@@ -40,11 +40,10 @@ class LabelConfig(AppConfig):
if not isPluginRegistryLoaded() or not isInMainThread():
return
if canAppAccessDatabase(allow_test=False):
if canAppAccessDatabase(allow_test=False) and not isImportingData():
try:
self.create_labels() # pragma: no cover
except (AppRegistryNotReady, OperationalError):
except (AppRegistryNotReady, IntegrityError, OperationalError, ProgrammingError):
# Database might not yet be ready
warnings.warn('Database was not ready for creating labels', stacklevel=2)

@@ -106,7 +106,7 @@ class LabelTest(InvenTreeAPITestCase):
<!-- Test InvenTree URL -->
url: {{ qr_url|safe }}
<!-- Test image URL generation -->
image: {% part_image part %}
image: {% part_image part width=128 %}
<!-- Test InvenTree logo -->
logo: {% logo_image %}
</html>
@@ -154,8 +154,9 @@ class LabelTest(InvenTreeAPITestCase):
self.assertIn(f"part: {part_pk} - {part_name}", content)
self.assertIn(f'data: {{"part": {part_pk}}}', content)
self.assertIn(f'http://testserver/part/{part_pk}/', content)
self.assertIn("img/blank_image.png", content)
self.assertIn("img/inventree.png", content)
# Check that a encoded image has been generated
self.assertIn('data:image/png;charset=utf-8;base64,', content)
def test_metadata(self):
"""Unit tests for the metadata field."""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@@ -549,6 +549,14 @@ class PurchaseOrder(TotalPriceMixin, Order):
trigger_event('purchaseorder.cancelled', id=self.pk)
# Notify users that the order has been canceled
notify_responsible(
self,
PurchaseOrder,
exclude=self.created_by,
content=InvenTreeNotificationBodies.OrderCanceled
)
def pending_line_items(self):
"""Return a list of pending line items for this order.
@@ -935,6 +943,14 @@ class SalesOrder(TotalPriceMixin, Order):
trigger_event('salesorder.cancelled', id=self.pk)
# Notify users that the order has been canceled
notify_responsible(
self,
SalesOrder,
exclude=self.created_by,
content=InvenTreeNotificationBodies.OrderCanceled
)
return True
@property
@@ -1790,6 +1806,14 @@ class ReturnOrder(TotalPriceMixin, Order):
trigger_event('returnorder.cancelled', id=self.pk)
# Notify users that the order has been canceled
notify_responsible(
self,
ReturnOrder,
exclude=self.created_by,
content=InvenTreeNotificationBodies.OrderCanceled
)
@transaction.atomic
def complete_order(self):
"""Complete this ReturnOrder (if not already completed)"""

@@ -921,7 +921,8 @@ class PartFilter(rest_filters.FilterSet):
if str2bool(value):
return queryset.exclude(q_a | q_b)
return queryset.filter(q_a | q_b)
return queryset.filter(q_a | q_b).distinct()
stocktake = rest_filters.BooleanFilter(label="Has stocktake", method='filter_has_stocktake')
@@ -1132,7 +1133,7 @@ class PartList(PartMixin, APIDownloadMixin, ListCreateAPI):
# Return any relationship which points to the part in question
relation_filter = Q(part_1=related_part) | Q(part_2=related_part)
for relation in PartRelated.objects.filter(relation_filter):
for relation in PartRelated.objects.filter(relation_filter).distinct():
if relation.part_1.pk != pk:
part_ids.add(relation.part_1.pk)
@@ -1310,8 +1311,7 @@ class PartRelatedList(ListCreateAPI):
if part is not None:
try:
part = Part.objects.get(pk=part)
queryset = queryset.filter(Q(part_1=part) | Q(part_2=part))
queryset = queryset.filter(Q(part_1=part) | Q(part_2=part)).distinct()
except (ValueError, Part.DoesNotExist):
pass
@@ -1349,7 +1349,8 @@ class PartParameterTemplateFilter(rest_filters.FilterSet):
"""Filter queryset to include only PartParameterTemplates with choices."""
if str2bool(value):
return queryset.exclude(Q(choices=None) | Q(choices=''))
return queryset.filter(Q(choices=None) | Q(choices=''))
return queryset.filter(Q(choices=None) | Q(choices='')).distinct()
has_units = rest_filters.BooleanFilter(
method='filter_has_units',
@@ -1360,7 +1361,8 @@ class PartParameterTemplateFilter(rest_filters.FilterSet):
"""Filter queryset to include only PartParameterTemplates with units."""
if str2bool(value):
return queryset.exclude(Q(units=None) | Q(units=''))
return queryset.filter(Q(units=None) | Q(units=''))
return queryset.filter(Q(units=None) | Q(units='')).distinct()
class PartParameterTemplateList(ListCreateAPI):
@@ -1662,7 +1664,8 @@ class BomFilter(rest_filters.FilterSet):
if str2bool(value):
return queryset.exclude(q_a | q_b)
return queryset.filter(q_a | q_b)
return queryset.filter(q_a | q_b).distinct()
class BomMixin:

@@ -1,5 +1,6 @@
"""API endpoints for barcode plugins."""
import logging
from django.urls import path, re_path
from django.utils.translation import gettext_lazy as _
@@ -17,6 +18,8 @@ from plugin.builtin.barcodes.inventree_barcode import \
from stock.models import StockLocation
from users.models import RuleSet
logger = logging.getLogger('inventree')
class BarcodeScan(APIView):
"""Endpoint for handling generic barcode scan requests.
@@ -68,7 +71,16 @@ class BarcodeScan(APIView):
result = current_plugin.scan(barcode_data)
if result is not None:
if result is None:
continue
if "error" in result:
logger.info("%s.scan(...) returned an error: %s",
current_plugin.__class__.__name__, result["error"])
if not response:
plugin = current_plugin
response = result
else:
plugin = current_plugin
response = result
break
@@ -265,10 +277,14 @@ class BarcodePOReceive(APIView):
"""Respond to a barcode POST request."""
data = request.data
if not (barcode_data := data.get("barcode")):
raise ValidationError({"barcode": _("Missing barcode data")})
logger.debug("BarcodePOReceive: scanned barcode - '%s'", barcode_data)
purchase_order = None
if purchase_order_pk := data.get("purchase_order"):
purchase_order = PurchaseOrder.objects.filter(pk=purchase_order_pk).first()
if not purchase_order:
@@ -292,7 +308,11 @@ class BarcodePOReceive(APIView):
response["error"] = _("Item has already been received")
raise ValidationError(response)
# Now, look just for "supplier-barcode" plugins
plugins = registry.with_mixin("supplier-barcode")
for current_plugin in plugins:
result = current_plugin.scan_receive_item(
barcode_data,
request.user,
@@ -300,7 +320,16 @@ class BarcodePOReceive(APIView):
location=location,
)
if result is not None:
if result is None:
continue
if "error" in result:
logger.info("%s.scan_receive_item(...) returned an error: %s",
current_plugin.__class__.__name__, result["error"])
if not response:
plugin = current_plugin
response = result
else:
plugin = current_plugin
response = result
break
@@ -311,7 +340,7 @@ class BarcodePOReceive(APIView):
# A plugin has not been found!
if plugin is None:
response["error"] = _("Invalid supplier barcode")
response["error"] = _("No match for supplier barcode")
raise ValidationError(response)
elif "error" in response:
raise ValidationError(response)
@@ -323,7 +352,7 @@ barcode_api_urls = [
# Link a third-party barcode to an item (e.g. Part / StockItem / etc)
path('link/', BarcodeAssign.as_view(), name='api-barcode-link'),
# Unlink a third-pary barcode from an item
# Unlink a third-party barcode from an item
path('unlink/', BarcodeUnassign.as_view(), name='api-barcode-unlink'),
# Receive a purchase order item by scanning its barcode

@@ -3,7 +3,6 @@
from __future__ import annotations
import logging
from dataclasses import dataclass
from decimal import Decimal, InvalidOperation
from django.contrib.auth.models import User
@@ -54,65 +53,309 @@ class BarcodeMixin:
"""
return None
def scan_receive_item(self, barcode_data, user, purchase_order=None, location=None):
"""Scan a barcode to receive a purchase order item.
It's recommended to use the receive_purchase_order_item method to return from this function.
class SupplierBarcodeMixin(BarcodeMixin):
"""Mixin that provides default implementations for scan functions for supplier barcodes.
Custom supplier barcode plugins should use this mixin and implement the
extract_barcode_fields function.
"""
# Set of standard field names which can be extracted from the barcode
CUSTOMER_ORDER_NUMBER = "customer_order_number"
SUPPLIER_ORDER_NUMBER = "supplier_order_number"
PACKING_LIST_NUMBER = "packing_list_number"
SHIP_DATE = "ship_date"
CUSTOMER_PART_NUMBER = "customer_part_number"
SUPPLIER_PART_NUMBER = "supplier_part_number"
PURCHASE_ORDER_LINE = "purchase_order_line"
QUANTITY = "quantity"
DATE_CODE = "date_code"
LOT_CODE = "lot_code"
COUNTRY_OF_ORIGIN = "country_of_origin"
MANUFACTURER = "manufacturer"
MANUFACTURER_PART_NUMBER = "manufacturer_part_number"
def __init__(self):
"""Register mixin."""
super().__init__()
self.add_mixin('supplier-barcode', True, __class__)
def get_field_value(self, key, backup_value=None):
"""Return the value of a barcode field."""
fields = getattr(self, "barcode_fields", None) or {}
return fields.get(key, backup_value)
@property
def quantity(self):
"""Return the quantity from the barcode fields."""
return self.get_field_value(self.QUANTITY)
@property
def supplier_part_number(self):
"""Return the supplier part number from the barcode fields."""
return self.get_field_value(self.SUPPLIER_PART_NUMBER)
@property
def manufacturer_part_number(self):
"""Return the manufacturer part number from the barcode fields."""
return self.get_field_value(self.MANUFACTURER_PART_NUMBER)
@property
def customer_order_number(self):
"""Return the customer order number from the barcode fields."""
return self.get_field_value(self.CUSTOMER_ORDER_NUMBER)
@property
def supplier_order_number(self):
"""Return the supplier order number from the barcode fields."""
return self.get_field_value(self.SUPPLIER_ORDER_NUMBER)
def extract_barcode_fields(self, barcode_data) -> dict[str, str]:
"""Method to extract barcode fields from barcode data.
This method should return a dict object where the keys are the field names,
as per the "standard field names" (defined in the SuppliedBarcodeMixin class).
This method *must* be implemented by each plugin
Returns:
None if the barcode_data could not be parsed.
A dict object containing the barcode fields.
A dict object containing:
- on success:
a "success" message and the received "lineitem"
- on partial success (if there's missing information):
an "action_required" message and the matched, but not yet received "lineitem"
- on failure:
an "error" message
"""
raise NotImplementedError("extract_barcode_fields must be implemented by each plugin")
return None
def scan(self, barcode_data):
"""Try to match a supplier barcode to a supplier part."""
@staticmethod
def parse_ecia_barcode2d(barcode_data: str | list[str]) -> dict[str, str]:
"""Parse a standard ECIA 2D barcode, according to https://www.ecianow.org/assets/docs/ECIA_Specifications.pdf"""
barcode_data = str(barcode_data).strip()
if not isinstance(barcode_data, str):
data_split = barcode_data
elif not (data_split := BarcodeMixin.parse_isoiec_15434_barcode2d(barcode_data)):
self.barcode_fields = self.extract_barcode_fields(barcode_data)
if self.supplier_part_number is None and self.manufacturer_part_number is None:
return None
supplier_parts = self.get_supplier_parts(
sku=self.supplier_part_number,
mpn=self.manufacturer_part_number,
supplier=self.get_supplier(),
)
if len(supplier_parts) > 1:
return {"error": _("Found multiple matching supplier parts for barcode")}
elif not supplier_parts:
return None
supplier_part = supplier_parts[0]
data = {
"pk": supplier_part.pk,
"api_url": f"{SupplierPart.get_api_url()}{supplier_part.pk}/",
"web_url": supplier_part.get_absolute_url(),
}
return {
SupplierPart.barcode_model_type(): data
}
def scan_receive_item(self, barcode_data, user, purchase_order=None, location=None):
"""Try to scan a supplier barcode to receive a purchase order item."""
barcode_data = str(barcode_data).strip()
self.barcode_fields = self.extract_barcode_fields(barcode_data)
if self.supplier_part_number is None and self.manufacturer_part_number is None:
return None
supplier = self.get_supplier()
supplier_parts = self.get_supplier_parts(
sku=self.supplier_part_number,
mpn=self.manufacturer_part_number,
supplier=supplier,
)
if len(supplier_parts) > 1:
return {"error": _("Found multiple matching supplier parts for barcode")}
elif not supplier_parts:
return None
supplier_part = supplier_parts[0]
# If a purchase order is not provided, extract it from the provided data
if not purchase_order:
matching_orders = self.get_purchase_orders(
self.customer_order_number,
self.supplier_order_number,
supplier=supplier,
)
order = self.customer_order_number or self.supplier_order_number
if len(matching_orders) > 1:
return {"error": _(f"Found multiple purchase orders matching '{order}'")}
if len(matching_orders) == 0:
return {"error": _(f"No matching purchase order for '{order}'")}
purchase_order = matching_orders.first()
if supplier and purchase_order:
if purchase_order.supplier != supplier:
return {"error": _("Purchase order does not match supplier")}
return self.receive_purchase_order_item(
supplier_part,
user,
quantity=self.quantity,
purchase_order=purchase_order,
location=location,
barcode=barcode_data,
)
def get_supplier(self) -> Company | None:
"""Get the supplier for the SUPPLIER_ID set in the plugin settings.
If it's not defined, try to guess it and set it if possible.
"""
if not isinstance(self, SettingsMixin):
return None
if supplier_pk := self.get_setting("SUPPLIER_ID"):
if (supplier := Company.objects.get(pk=supplier_pk)):
return supplier
else:
logger.error(
"No company with pk %d (set \"SUPPLIER_ID\" setting to a valid value)",
supplier_pk
)
return None
if not (supplier_name := getattr(self, "DEFAULT_SUPPLIER_NAME", None)):
return None
suppliers = Company.objects.filter(name__icontains=supplier_name, is_supplier=True)
if len(suppliers) != 1:
return None
self.set_setting("SUPPLIER_ID", suppliers.first().pk)
return suppliers.first()
@classmethod
def ecia_field_map(cls):
"""Return a dict mapping ECIA field names to internal field names
Ref: https://www.ecianow.org/assets/docs/ECIA_Specifications.pdf
Note that a particular plugin may need to reimplement this method,
if it does not use the standard field names.
"""
return {
"K": cls.CUSTOMER_ORDER_NUMBER,
"1K": cls.SUPPLIER_ORDER_NUMBER,
"11K": cls.PACKING_LIST_NUMBER,
"6D": cls.SHIP_DATE,
"9D": cls.DATE_CODE,
"10D": cls.DATE_CODE,
"4K": cls.PURCHASE_ORDER_LINE,
"14K": cls.PURCHASE_ORDER_LINE,
"P": cls.SUPPLIER_PART_NUMBER,
"1P": cls.MANUFACTURER_PART_NUMBER,
"30P": cls.SUPPLIER_PART_NUMBER,
"1T": cls.LOT_CODE,
"4L": cls.COUNTRY_OF_ORIGIN,
"1V": cls.MANUFACTURER,
"Q": cls.QUANTITY,
}
@classmethod
def parse_ecia_barcode2d(cls, barcode_data: str) -> dict[str, str]:
"""Parse a standard ECIA 2D barcode
Ref: https://www.ecianow.org/assets/docs/ECIA_Specifications.pdf
Arguments:
barcode_data: The raw barcode data
Returns:
A dict containing the parsed barcode fields
"""
# Split data into separate fields
fields = cls.parse_isoiec_15434_barcode2d(barcode_data)
barcode_fields = {}
for entry in data_split:
for identifier, field_name in ECIA_DATA_IDENTIFIER_MAP.items():
if entry.startswith(identifier):
barcode_fields[field_name] = entry[len(identifier):]
if not fields:
return barcode_fields
for field in fields:
for identifier, field_name in cls.ecia_field_map().items():
if field.startswith(identifier):
barcode_fields[field_name] = field[len(identifier):]
break
return barcode_fields
@staticmethod
def split_fields(barcode_data: str, delimiter: str = ',', header: str = '', trailer: str = '') -> list[str]:
"""Generic method for splitting barcode data into separate fields"""
if header and barcode_data.startswith(header):
barcode_data = barcode_data[len(header):]
if trailer and barcode_data.endswith(trailer):
barcode_data = barcode_data[:-len(trailer)]
return barcode_data.split(delimiter)
@staticmethod
def parse_isoiec_15434_barcode2d(barcode_data: str) -> list[str]:
"""Parse a ISO/IEC 15434 bardode, returning the split data section."""
"""Parse a ISO/IEC 15434 barcode, returning the split data section."""
OLD_MOUSER_HEADER = ">[)>06\x1D"
HEADER = "[)>\x1E06\x1D"
TRAILER = "\x1E\x04"
DELIMITER = "\x1D"
# some old mouser barcodes start with this messed up header
OLD_MOUSER_HEADER = ">[)>06\x1D"
# Some old mouser barcodes start with this messed up header
if barcode_data.startswith(OLD_MOUSER_HEADER):
barcode_data = barcode_data.replace(OLD_MOUSER_HEADER, HEADER, 1)
# most barcodes don't include the trailer, because "why would you stick to
# the standard, right?" so we only check for the header here
# Check that the barcode starts with the necessary header
if not barcode_data.startswith(HEADER):
return
actual_data = barcode_data.split(HEADER, 1)[1].rsplit(TRAILER, 1)[0]
return actual_data.split("\x1D")
return SupplierBarcodeMixin.split_fields(
barcode_data,
delimiter=DELIMITER,
header=HEADER,
trailer=TRAILER,
)
@staticmethod
def get_supplier_parts(sku: str, supplier: Company = None, mpn: str = None):
def get_purchase_orders(customer_order_number, supplier_order_number, supplier: Company = None):
"""Attempt to find a purchase order from the extracted customer and supplier order numbers"""
orders = PurchaseOrder.objects.filter(status=PurchaseOrderStatus.PLACED.value)
if supplier:
orders = orders.filter(supplier=supplier)
if customer_order_number:
orders = orders.filter(reference__iexact=customer_order_number)
elif supplier_order_number:
orders = orders.filter(supplier_reference__iexact=supplier_order_number)
return orders
@staticmethod
def get_supplier_parts(sku: str = None, supplier: Company = None, mpn: str = None):
"""Get a supplier part from SKU or by supplier and MPN."""
if not (sku or supplier or mpn):
return SupplierPart.objects.none()
@@ -130,7 +373,7 @@ class BarcodeMixin:
return supplier_parts
if mpn:
supplier_parts = SupplierPart.objects.filter(manufacturer_part__MPN__iexact=mpn)
supplier_parts = supplier_parts.filter(manufacturer_part__MPN__iexact=mpn)
if len(supplier_parts) == 1:
return supplier_parts
@@ -149,7 +392,6 @@ class BarcodeMixin:
supplier_part: SupplierPart,
user: User,
quantity: Decimal | str = None,
order_number: str = None,
purchase_order: PurchaseOrder = None,
location: StockLocation = None,
barcode: str = None,
@@ -163,27 +405,6 @@ class BarcodeMixin:
- on failure: an "error" message
"""
if not purchase_order:
# try to find a purchase order with either reference or name matching
# the provided order_number
if not order_number:
return {"error": _("Supplier barcode doesn't contain order number")}
purchase_orders = (
PurchaseOrder.objects.filter(
supplier_reference__iexact=order_number,
status=PurchaseOrderStatus.PLACED.value,
) | PurchaseOrder.objects.filter(
reference__iexact=order_number,
status=PurchaseOrderStatus.PLACED.value,
)
)
if len(purchase_orders) > 1:
return {"error": _(f"Found multiple placed purchase orders for '{order_number}'")}
elif not (purchase_order := purchase_orders.first()):
return {"error": _(f"Failed to find placed purchase order for '{order_number}'")}
if quantity:
try:
quantity = Decimal(quantity)
@@ -258,129 +479,3 @@ class BarcodeMixin:
response["success"] = _("Received purchase order line item")
return response
@dataclass
class SupplierBarcodeData:
"""Data parsed from a supplier barcode."""
SKU: str = None
MPN: str = None
quantity: Decimal | str = None
order_number: str = None
class SupplierBarcodeMixin(BarcodeMixin):
"""Mixin that provides default implementations for scan functions for supplier barcodes.
Custom supplier barcode plugins should use this mixin and implement the
parse_supplier_barcode_data function.
"""
def parse_supplier_barcode_data(self, barcode_data) -> SupplierBarcodeData | None:
"""Get supplier_part and other barcode_fields from barcode data.
Returns:
None if the barcode_data is not from a valid barcode of the supplier.
A SupplierBarcodeData object containing the SKU, MPN, quantity and order number
if available.
"""
return None
def scan(self, barcode_data):
"""Try to match a supplier barcode to a supplier part."""
if not (parsed := self.parse_supplier_barcode_data(barcode_data)):
return None
if parsed.SKU is None and parsed.MPN is None:
return None
supplier_parts = self.get_supplier_parts(parsed.SKU, self.get_supplier(), parsed.MPN)
if len(supplier_parts) > 1:
return {"error": _("Found multiple matching supplier parts for barcode")}
elif not supplier_parts:
return None
supplier_part = supplier_parts[0]
data = {
"pk": supplier_part.pk,
"api_url": f"{SupplierPart.get_api_url()}{supplier_part.pk}/",
"web_url": supplier_part.get_absolute_url(),
}
return {SupplierPart.barcode_model_type(): data}
def scan_receive_item(self, barcode_data, user, purchase_order=None, location=None):
"""Try to scan a supplier barcode to receive a purchase order item."""
if not (parsed := self.parse_supplier_barcode_data(barcode_data)):
return None
if parsed.SKU is None and parsed.MPN is None:
return None
supplier_parts = self.get_supplier_parts(parsed.SKU, self.get_supplier(), parsed.MPN)
if len(supplier_parts) > 1:
return {"error": _("Found multiple matching supplier parts for barcode")}
elif not supplier_parts:
return None
supplier_part = supplier_parts[0]
return self.receive_purchase_order_item(
supplier_part,
user,
quantity=parsed.quantity,
order_number=parsed.order_number,
purchase_order=purchase_order,
location=location,
barcode=barcode_data,
)
def get_supplier(self) -> Company | None:
"""Get the supplier for the SUPPLIER_ID set in the plugin settings.
If it's not defined, try to guess it and set it if possible.
"""
if not isinstance(self, SettingsMixin):
return None
if supplier_pk := self.get_setting("SUPPLIER_ID"):
if (supplier := Company.objects.get(pk=supplier_pk)):
return supplier
else:
logger.error(
"No company with pk %d (set \"SUPPLIER_ID\" setting to a valid value)",
supplier_pk
)
return None
if not (supplier_name := getattr(self, "DEFAULT_SUPPLIER_NAME", None)):
return None
suppliers = Company.objects.filter(name__icontains=supplier_name, is_supplier=True)
if len(suppliers) != 1:
return None
self.set_setting("SUPPLIER_ID", suppliers.first().pk)
return suppliers.first()
# Map ECIA Data Identifier to human readable identifier
# The following identifiers haven't been implemented: 3S, 4S, 5S, S
ECIA_DATA_IDENTIFIER_MAP = {
"K": "purchase_order_number", # noqa: E241
"1K": "purchase_order_number", # noqa: E241 DigiKey uses 1K instead of K
"11K": "packing_list_number", # noqa: E241
"6D": "ship_date", # noqa: E241
"P": "supplier_part_number", # noqa: E241 "Customer Part Number"
"1P": "manufacturer_part_number", # noqa: E241 "Supplier Part Number"
"4K": "purchase_order_line", # noqa: E241
"14K": "purchase_order_line", # noqa: E241 Mouser uses 14K instead of 4K
"Q": "quantity", # noqa: E241
"9D": "date_yyww", # noqa: E241
"10D": "date_yyww", # noqa: E241
"1T": "lot_code", # noqa: E241
"4L": "country_of_origin", # noqa: E241
"1V": "manufacturer" # noqa: E241
}

@@ -3,16 +3,11 @@
This plugin can currently only match DigiKey barcodes to supplier parts.
"""
import logging
from django.utils.translation import gettext_lazy as _
from plugin import InvenTreePlugin
from plugin.base.barcodes.mixins import SupplierBarcodeData
from plugin.mixins import SettingsMixin, SupplierBarcodeMixin
logger = logging.getLogger('inventree')
class DigiKeyPlugin(SupplierBarcodeMixin, SettingsMixin, InvenTreePlugin):
"""Plugin to integrate the DigiKey API into Inventree."""
@@ -24,6 +19,7 @@ class DigiKeyPlugin(SupplierBarcodeMixin, SettingsMixin, InvenTreePlugin):
AUTHOR = _("InvenTree contributors")
DEFAULT_SUPPLIER_NAME = "DigiKey"
SETTINGS = {
"SUPPLIER_ID": {
"name": _("Supplier"),
@@ -32,18 +28,7 @@ class DigiKeyPlugin(SupplierBarcodeMixin, SettingsMixin, InvenTreePlugin):
}
}
def parse_supplier_barcode_data(self, barcode_data):
"""Get supplier_part and barcode_fields from DigiKey DataMatrix-Code."""
def extract_barcode_fields(self, barcode_data) -> dict[str, str]:
"""Extract barcode fields from a DigiKey plugin"""
if not isinstance(barcode_data, str):
return None
if not (barcode_fields := self.parse_ecia_barcode2d(barcode_data)):
return None
return SupplierBarcodeData(
SKU=barcode_fields.get("supplier_part_number"),
MPN=barcode_fields.get("manufacturer_part_number"),
quantity=barcode_fields.get("quantity"),
order_number=barcode_fields.get("purchase_order_number"),
)
return self.parse_ecia_barcode2d(barcode_data)

@@ -3,17 +3,13 @@
This plugin can currently only match LCSC barcodes to supplier parts.
"""
import logging
import re
from django.utils.translation import gettext_lazy as _
from plugin import InvenTreePlugin
from plugin.base.barcodes.mixins import SupplierBarcodeData
from plugin.mixins import SettingsMixin, SupplierBarcodeMixin
logger = logging.getLogger('inventree')
class LCSCPlugin(SupplierBarcodeMixin, SettingsMixin, InvenTreePlugin):
"""Plugin to integrate the LCSC API into Inventree."""
@@ -33,23 +29,40 @@ class LCSCPlugin(SupplierBarcodeMixin, SettingsMixin, InvenTreePlugin):
}
}
def parse_supplier_barcode_data(self, barcode_data):
"""Get supplier_part and barcode_fields from LCSC QR-Code."""
LCSC_BARCODE_REGEX = re.compile(r"^{((?:[^:,]+:[^:,]*,)*(?:[^:,]+:[^:,]*))}$")
if not isinstance(barcode_data, str):
return None
# Custom field mapping for LCSC barcodes
LCSC_FIELDS = {
"pm": SupplierBarcodeMixin.MANUFACTURER_PART_NUMBER,
"pc": SupplierBarcodeMixin.SUPPLIER_PART_NUMBER,
"qty": SupplierBarcodeMixin.QUANTITY,
"on": SupplierBarcodeMixin.CUSTOMER_ORDER_NUMBER,
}
if not (match := LCSC_BARCODE_REGEX.fullmatch(barcode_data)):
return None
def extract_barcode_fields(self, barcode_data: str) -> dict[str, str]:
"""Get supplier_part and barcode_fields from LCSC QR-Code.
barcode_fields = dict(pair.split(":") for pair in match.group(1).split(","))
Example LCSC QR-Code: {pbn:PICK2009291337,on:SO2009291337,pc:C312270}
"""
return SupplierBarcodeData(
SKU=barcode_fields.get("pc"),
MPN=barcode_fields.get("pm"),
quantity=barcode_fields.get("qty"),
order_number=barcode_fields.get("on"),
if not self.LCSC_BARCODE_REGEX.fullmatch(barcode_data):
return {}
# Extract fields
fields = SupplierBarcodeMixin.split_fields(
barcode_data,
delimiter=',',
header='{',
trailer='}',
)
fields = dict(pair.split(":") for pair in fields)
LCSC_BARCODE_REGEX = re.compile(r"^{((?:[^:,]+:[^:,]*,)*(?:[^:,]+:[^:,]*))}$")
barcode_fields = {}
# Map from LCSC field names to standard field names
for key, field in self.LCSC_FIELDS.items():
if key in fields:
barcode_fields[field] = fields[key]
return barcode_fields

@@ -3,16 +3,11 @@
This plugin currently only match Mouser barcodes to supplier parts.
"""
import logging
from django.utils.translation import gettext_lazy as _
from plugin import InvenTreePlugin
from plugin.base.barcodes.mixins import SupplierBarcodeData
from plugin.mixins import SettingsMixin, SupplierBarcodeMixin
logger = logging.getLogger('inventree')
class MouserPlugin(SupplierBarcodeMixin, SettingsMixin, InvenTreePlugin):
"""Plugin to integrate the Mouser API into Inventree."""
@@ -32,18 +27,7 @@ class MouserPlugin(SupplierBarcodeMixin, SettingsMixin, InvenTreePlugin):
}
}
def parse_supplier_barcode_data(self, barcode_data):
def extract_barcode_fields(self, barcode_data: str) -> dict[str, str]:
"""Get supplier_part and barcode_fields from Mouser DataMatrix-Code."""
if not isinstance(barcode_data, str):
return None
if not (barcode_fields := self.parse_ecia_barcode2d(barcode_data)):
return None
return SupplierBarcodeData(
SKU=barcode_fields.get("supplier_part_number"),
MPN=barcode_fields.get("manufacturer_part_number"),
quantity=barcode_fields.get("quantity"),
order_number=barcode_fields.get("purchase_order_number"),
)
return self.parse_ecia_barcode2d(barcode_data)

@@ -12,6 +12,8 @@ from stock.models import StockItem, StockLocation
class SupplierBarcodeTests(InvenTreeAPITestCase):
"""Tests barcode parsing for all suppliers."""
SCAN_URL = reverse("api-barcode-scan")
@classmethod
def setUpTestData(cls):
"""Create supplier parts for barcodes."""
@@ -41,76 +43,90 @@ class SupplierBarcodeTests(InvenTreeAPITestCase):
SupplierPart.objects.bulk_create(supplier_parts)
def test_digikey_barcode(self):
"""Test digikey barcode."""
"""Test digikey barcode"""
url = reverse("api-barcode-scan")
result = self.post(url, data={"barcode": DIGIKEY_BARCODE})
result = self.post(self.SCAN_URL, data={"barcode": DIGIKEY_BARCODE}, expected_code=200)
self.assertEqual(result.data['plugin'], 'DigiKeyPlugin')
supplier_part_data = result.data.get("supplierpart")
assert "pk" in supplier_part_data
self.assertIn('pk', supplier_part_data)
supplier_part = SupplierPart.objects.get(pk=supplier_part_data["pk"])
assert supplier_part.SKU == "296-LM358BIDDFRCT-ND"
self.assertEqual(supplier_part.SKU, "296-LM358BIDDFRCT-ND")
def test_digikey_2_barcode(self):
"""Test digikey barcode which uses 30P instead of P"""
result = self.post(self.SCAN_URL, data={"barcode": DIGIKEY_BARCODE_2}, expected_code=200)
self.assertEqual(result.data['plugin'], 'DigiKeyPlugin')
supplier_part_data = result.data.get("supplierpart")
self.assertIn('pk', supplier_part_data)
supplier_part = SupplierPart.objects.get(pk=supplier_part_data["pk"])
self.assertEqual(supplier_part.SKU, "296-LM358BIDDFRCT-ND")
def test_digikey_3_barcode(self):
"""Test digikey barcode which is invalid"""
self.post(self.SCAN_URL, data={"barcode": DIGIKEY_BARCODE_3}, expected_code=400)
def test_mouser_barcode(self):
"""Test mouser barcode with custom order number."""
url = reverse("api-barcode-scan")
result = self.post(url, data={"barcode": MOUSER_BARCODE})
result = self.post(self.SCAN_URL, data={"barcode": MOUSER_BARCODE}, expected_code=200)
supplier_part_data = result.data.get("supplierpart")
assert "pk" in supplier_part_data
self.assertIn('pk', supplier_part_data)
supplier_part = SupplierPart.objects.get(pk=supplier_part_data["pk"])
assert supplier_part.SKU == "1"
self.assertEqual(supplier_part.SKU, '1')
def test_old_mouser_barcode(self):
"""Test old mouser barcode with messed up header."""
url = reverse("api-barcode-scan")
result = self.post(url, data={"barcode": MOUSER_BARCODE_OLD})
result = self.post(self.SCAN_URL, data={"barcode": MOUSER_BARCODE_OLD}, expected_code=200)
supplier_part_data = result.data.get("supplierpart")
assert "pk" in supplier_part_data
self.assertIn('pk', supplier_part_data)
supplier_part = SupplierPart.objects.get(pk=supplier_part_data["pk"])
assert supplier_part.SKU == "2"
self.assertEqual(supplier_part.SKU, '2')
def test_lcsc_barcode(self):
"""Test LCSC barcode."""
url = reverse("api-barcode-scan")
result = self.post(url, data={"barcode": LCSC_BARCODE})
result = self.post(self.SCAN_URL, data={"barcode": LCSC_BARCODE}, expected_code=200)
self.assertEqual(result.data['plugin'], 'LCSCPlugin')
supplier_part_data = result.data.get("supplierpart")
assert supplier_part_data is not None
self.assertIn('pk', supplier_part_data)
assert "pk" in supplier_part_data
supplier_part = SupplierPart.objects.get(pk=supplier_part_data["pk"])
assert supplier_part.SKU == "C312270"
self.assertEqual(supplier_part.SKU, 'C312270')
def test_tme_qrcode(self):
"""Test TME QR-Code."""
url = reverse("api-barcode-scan")
result = self.post(url, data={"barcode": TME_QRCODE})
result = self.post(self.SCAN_URL, data={"barcode": TME_QRCODE}, expected_code=200)
self.assertEqual(result.data['plugin'], 'TMEPlugin')
supplier_part_data = result.data.get("supplierpart")
assert supplier_part_data is not None
assert "pk" in supplier_part_data
self.assertIn('pk', supplier_part_data)
supplier_part = SupplierPart.objects.get(pk=supplier_part_data["pk"])
assert supplier_part.SKU == "WBP-302"
self.assertEqual(supplier_part.SKU, 'WBP-302')
def test_tme_barcode2d(self):
"""Test TME DataMatrix-Code."""
url = reverse("api-barcode-scan")
result = self.post(url, data={"barcode": TME_DATAMATRIX_CODE})
result = self.post(self.SCAN_URL, data={"barcode": TME_DATAMATRIX_CODE}, expected_code=200)
self.assertEqual(result.data['plugin'], 'TMEPlugin')
supplier_part_data = result.data.get("supplierpart")
assert supplier_part_data is not None
self.assertIn('pk', supplier_part_data)
assert "pk" in supplier_part_data
supplier_part = SupplierPart.objects.get(pk=supplier_part_data["pk"])
assert supplier_part.SKU == "WBP-302"
self.assertEqual(supplier_part.SKU, 'WBP-302')
class SupplierBarcodePOReceiveTests(InvenTreeAPITestCase):
@@ -161,7 +177,7 @@ class SupplierBarcodePOReceiveTests(InvenTreeAPITestCase):
result1 = self.post(url, data={"barcode": DIGIKEY_BARCODE})
assert result1.status_code == 400
assert result1.data["error"].startswith("Failed to find placed purchase order")
assert result1.data["error"].startswith("No matching purchase order")
self.purchase_order1.place_order()
@@ -273,9 +289,10 @@ class SupplierBarcodePOReceiveTests(InvenTreeAPITestCase):
url = reverse("api-barcode-po-receive")
barcode = MOUSER_BARCODE.replace("\x1dQ3", "")
result = self.post(url, data={"barcode": barcode})
assert "lineitem" in result.data
assert "quantity" not in result.data["lineitem"]
response = self.post(url, data={"barcode": barcode}, expected_code=200)
assert "lineitem" in response.data
assert "quantity" not in response.data["lineitem"]
DIGIKEY_BARCODE = (
@@ -286,6 +303,25 @@ DIGIKEY_BARCODE = (
"0000000000000000000000000000000000"
)
# Uses 30P instead of P
DIGIKEY_BARCODE_2 = (
"[)>\x1e06\x1d30P296-LM358BIDDFRCT-ND\x1dK\x1d1K72991337\x1d"
"10K85781337\x1d11K1\x1d4LPH\x1dQ10\x1d11ZPICK\x1d12Z15221337\x1d13Z361337"
"\x1d20Z0000000000000000000000000000000000000000000000000000000000000000000"
"00000000000000000000000000000000000000000000000000000000000000000000000000"
"0000000000000000000000000000000000"
)
# Invalid code
DIGIKEY_BARCODE_3 = (
"[)>\x1e06\x1dPnonsense\x1d30Pnonsense\x1d1Pnonsense\x1dK\x1d1K72991337\x1d"
"10K85781337\x1d11K1\x1d4LPH\x1dQ10\x1d11ZPICK\x1d12Z15221337\x1d13Z361337"
"\x1d20Z0000000000000000000000000000000000000000000000000000000000000000000"
"00000000000000000000000000000000000000000000000000000000000000000000000000"
"0000000000000000000000000000000000"
)
MOUSER_BARCODE = (
"[)>\x1e06\x1dKP0-1337\x1d14K011\x1d1PMC34063ADR\x1dQ3\x1d11K073121337\x1d4"
"LMX\x1d1VTI\x1e\x04"
@@ -305,4 +341,5 @@ TME_QRCODE = (
"QTY:1 PN:WBP-302 PO:19361337/1 CPO:PO-2023-06-08-001337 MFR:WISHERENTERPRI"
"SE MPN:WBP-302 RoHS https://www.tme.eu/details/WBP-302"
)
TME_DATAMATRIX_CODE = "PWBP-302 1PMPNWBP-302 Q1 K19361337/1"

@@ -3,17 +3,13 @@
This plugin can currently only match TME barcodes to supplier parts.
"""
import logging
import re
from django.utils.translation import gettext_lazy as _
from plugin import InvenTreePlugin
from plugin.base.barcodes.mixins import SupplierBarcodeData
from plugin.mixins import SettingsMixin, SupplierBarcodeMixin
logger = logging.getLogger('inventree')
class TMEPlugin(SupplierBarcodeMixin, SettingsMixin, InvenTreePlugin):
"""Plugin to integrate the TME API into Inventree."""
@@ -33,42 +29,45 @@ class TMEPlugin(SupplierBarcodeMixin, SettingsMixin, InvenTreePlugin):
}
}
def parse_supplier_barcode_data(self, barcode_data):
TME_IS_QRCODE_REGEX = re.compile(r"([^\s:]+:[^\s:]+\s+)+(\S+(\s|$)+)+")
TME_IS_BARCODE2D_REGEX = re.compile(r"(([^\s]+)(\s+|$))+")
# Custom field mapping
TME_QRCODE_FIELDS = {
"PN": SupplierBarcodeMixin.SUPPLIER_PART_NUMBER,
"PO": SupplierBarcodeMixin.CUSTOMER_ORDER_NUMBER,
"MPN": SupplierBarcodeMixin.MANUFACTURER_PART_NUMBER,
"QTY": SupplierBarcodeMixin.QUANTITY,
}
def extract_barcode_fields(self, barcode_data: str) -> dict[str, str]:
"""Get supplier_part and barcode_fields from TME QR-Code or DataMatrix-Code."""
if not isinstance(barcode_data, str):
return None
barcode_fields = {}
if TME_IS_QRCODE_REGEX.fullmatch(barcode_data):
barcode_fields = {
QRCODE_FIELD_NAME_MAP.get(field_name, field_name): value
for field_name, value in TME_PARSE_QRCODE_REGEX.findall(barcode_data)
}
elif TME_IS_BARCODE2D_REGEX.fullmatch(barcode_data):
barcode_fields = self.parse_ecia_barcode2d(
TME_PARSE_BARCODE2D_REGEX.findall(barcode_data)
)
if self.TME_IS_QRCODE_REGEX.fullmatch(barcode_data):
# Custom QR Code format e.g. "QTY: 1 PN:12345"
for item in barcode_data.split(" "):
if ":" in item:
key, value = item.split(":")
if key in self.TME_QRCODE_FIELDS:
barcode_fields[self.TME_QRCODE_FIELDS[key]] = value
return barcode_fields
elif self.TME_IS_BARCODE2D_REGEX.fullmatch(barcode_data):
# 2D Barcode format e.g. "PWBP-302 1PMPNWBP-302 Q1 K19361337/1"
for item in barcode_data.split(" "):
for k, v in self.ecia_field_map().items():
if item.startswith(k):
barcode_fields[v] = item[len(k):]
else:
return None
return {}
if order_number := barcode_fields.get("purchase_order_number"):
# Custom handling for order number
if SupplierBarcodeMixin.CUSTOMER_ORDER_NUMBER in barcode_fields:
order_number = barcode_fields[SupplierBarcodeMixin.CUSTOMER_ORDER_NUMBER]
order_number = order_number.split("/")[0]
barcode_fields[SupplierBarcodeMixin.CUSTOMER_ORDER_NUMBER] = order_number
return SupplierBarcodeData(
SKU=barcode_fields.get("supplier_part_number"),
MPN=barcode_fields.get("manufacturer_part_number"),
quantity=barcode_fields.get("quantity"),
order_number=order_number,
)
TME_IS_QRCODE_REGEX = re.compile(r"([^\s:]+:[^\s:]+\s+)+(\S+(\s|$)+)+")
TME_PARSE_QRCODE_REGEX = re.compile(r"([^\s:]+):([^\s:]+)(?:\s+|$)")
TME_IS_BARCODE2D_REGEX = re.compile(r"(([^\s]+)(\s+|$))+")
TME_PARSE_BARCODE2D_REGEX = re.compile(r"([^\s]+)(?:\s+|$)")
QRCODE_FIELD_NAME_MAP = {
"PN": "supplier_part_number",
"PO": "purchase_order_number",
"MPN": "manufacturer_part_number",
"QTY": "quantity",
}
return barcode_fields

@@ -3,10 +3,13 @@
import logging
import os
import shutil
import warnings
from pathlib import Path
from django.apps import AppConfig
from django.conf import settings
from django.core.exceptions import AppRegistryNotReady
from django.db.utils import IntegrityError, OperationalError, ProgrammingError
logger = logging.getLogger("inventree")
@@ -17,8 +20,8 @@ class ReportConfig(AppConfig):
def ready(self):
"""This function is called whenever the report app is loaded."""
from InvenTree.ready import (canAppAccessDatabase, isInMainThread,
isPluginRegistryLoaded)
from InvenTree.ready import (canAppAccessDatabase, isImportingData,
isInMainThread, isPluginRegistryLoaded)
# skip loading if plugin registry is not loaded or we run in a background thread
if not isPluginRegistryLoaded() or not isInMainThread():
@@ -29,14 +32,19 @@ class ReportConfig(AppConfig):
logging.getLogger('weasyprint').setLevel(logging.WARNING)
# Create entries for default report templates
if canAppAccessDatabase(allow_test=False):
self.create_default_test_reports()
self.create_default_build_reports()
self.create_default_bill_of_materials_reports()
self.create_default_purchase_order_reports()
self.create_default_sales_order_reports()
self.create_default_return_order_reports()
self.create_default_stock_location_reports()
if canAppAccessDatabase(allow_test=False) and not isImportingData():
try:
self.create_default_test_reports()
self.create_default_build_reports()
self.create_default_bill_of_materials_reports()
self.create_default_purchase_order_reports()
self.create_default_sales_order_reports()
self.create_default_return_order_reports()
self.create_default_stock_location_reports()
except (AppRegistryNotReady, IntegrityError, OperationalError, ProgrammingError):
# Database might not yet be ready
warnings.warn('Database was not ready for creating reports', stacklevel=2)
def create_default_reports(self, model, reports):
"""Copy default report files across to the media directory."""

@@ -1,5 +1,7 @@
"""Helper functions for report generation."""
import base64
import io
import logging
from django.utils.translation import gettext_lazy as _
@@ -48,3 +50,24 @@ def report_page_size_default():
page_size = 'A4'
return page_size
def encode_image_base64(image, format: str = 'PNG'):
"""Return a base-64 encoded image which can be rendered in an <img> tag
Arguments:
image {Image} -- Image object
format {str} -- Image format (e.g. 'PNG')
Returns:
str -- Base64 encoded image data e.g. 'data:image/png;base64,xxxxxxxxx'
"""
fmt = format.lower()
buffered = io.BytesIO()
image.save(buffered, fmt)
img_str = base64.b64encode(buffered.getvalue())
return f"data:image/{fmt};charset=utf-8;base64," + img_str.decode()

@@ -123,7 +123,7 @@ table td.expand {
</td>
<td>
<div class='part-logo'>
<img src='{% part_image part %}' alt='{% trans "Image" %}' class='part-logo'>
<img src='{% part_image part height=480 %}' alt='{% trans "Image" %}' class='part-logo'>
</div>
</td>
</tr>
@@ -145,7 +145,7 @@ table td.expand {
<tr>
<td>
<div class='thumb-container'>
<img src='{% part_image line.sub_part %}' alt='{% trans "Image" %}' class='part-thumb'>
<img src='{% part_image line.sub_part height=240 %}' alt='{% trans "Image" %}' class='part-thumb'>
</div>
<div class='part-text'>
{{ line.sub_part.full_name }}

@@ -95,7 +95,7 @@ content: "v{{ report_revision }} - {{ date.isoformat }}";
<div class='details'>
<div class='details-image'>
<img class='part-image' alt="{% trans 'Part image' %}" src="{% part_image part %}">
<img class='part-image' alt="{% trans 'Part image' %}" src="{% part_image part height=480 %}">
</div>
<div class='details-container'>

@@ -37,7 +37,7 @@
<tr>
<td>
<div class='thumb-container'>
<img src='{% part_image line.part.part %}' class='part-thumb' alt="{% trans 'Part image' %}">
<img src='{% part_image line.part.part height=240 %}' class='part-thumb' alt="{% trans 'Part image' %}">
</div>
<div class='part-text'>
{{ line.part.part.full_name }}

@@ -32,7 +32,7 @@
<tr>
<td>
<div class='thumb-container'>
<img src='{% part_image line.item.part %}' alt='{% trans "Image" %}' class='part-thumb'>
<img src='{% part_image line.item.part height=240 %}' alt='{% trans "Image" %}' class='part-thumb'>
</div>
<div class='part-text'>
{{ line.item.part.full_name }}

@@ -37,7 +37,7 @@
<tr>
<td>
<div class='thumb-container'>
<img src='{% part_image line.part %}' alt='{% trans "Part image" %}' class='part-thumb'>
<img src='{% part_image line.part height=240 %}' alt='{% trans "Part image" %}' class='part-thumb'>
</div>
<div class='part-text'>
{{ line.part.full_name }}

@@ -81,7 +81,7 @@ content: "{% trans 'Stock Item Test Report' %}";
<p><em>Stock Item ID: {{ stock_item.pk }}</em></p>
</div>
<div class='img-right'>
<img class='part-img' alt='{% trans "Part image" %}' src="{% part_image part %}">
<img class='part-img' alt='{% trans "Part image" %}' src="{% part_image part height=480 %}">
<hr>
<h4>
{% if stock_item.is_serialized %}
@@ -160,7 +160,7 @@ content: "{% trans 'Stock Item Test Report' %}";
{% for sub_item in installed_items %}
<tr>
<td>
<img src='{% part_image sub_item.part %}' class='part-img' alt='{% trans "Part image" %}' style='max-width: 24px; max-height: 24px;'>
<img src='{% part_image sub_item.part height=240 %}' class='part-img' alt='{% trans "Part image" %}' style='max-width: 24px; max-height: 24px;'>
{{ sub_item.part.full_name }}
</td>
<td>

@@ -1,13 +1,12 @@
"""Template tags for rendering various barcodes."""
import base64
from io import BytesIO
from django import template
import barcode as python_barcode
import qrcode as python_qrcode
import report.helpers
register = template.Library()
@@ -16,12 +15,8 @@ def image_data(img, fmt='PNG'):
Returns a string ``data:image/FMT;base64,xxxxxxxxx`` which can be rendered to an <img> tag
"""
buffered = BytesIO()
img.save(buffered, format=fmt)
img_str = base64.b64encode(buffered.getvalue())
return f"data:image/{fmt.lower()};charset=utf-8;base64," + img_str.decode()
return report.helpers.encode_image_base64(img, fmt)
@register.simple_tag()

@@ -7,9 +7,13 @@ import os
from django import template
from django.conf import settings
from django.utils.safestring import SafeString, mark_safe
from django.utils.translation import gettext_lazy as _
from PIL import Image
import InvenTree.helpers
import InvenTree.helpers_model
import report.helpers
from common.models import InvenTreeSetting
from company.models import Company
from part.models import Part
@@ -88,7 +92,7 @@ def asset(filename):
full_path = settings.MEDIA_ROOT.joinpath('report', 'assets', filename).resolve()
if not full_path.exists() or not full_path.is_file():
raise FileNotFoundError(f"Asset file '{filename}' does not exist")
raise FileNotFoundError(_("Asset file does not exist") + f": '{filename}'")
if debug_mode:
return os.path.join(settings.MEDIA_URL, 'report', 'assets', filename)
@@ -96,7 +100,7 @@ def asset(filename):
@register.simple_tag()
def uploaded_image(filename, replace_missing=True, replacement_file='blank_image.png', validate=True):
def uploaded_image(filename, replace_missing=True, replacement_file='blank_image.png', validate=True, **kwargs):
"""Return a fully-qualified path for an 'uploaded' image.
Arguments:
@@ -104,8 +108,16 @@ def uploaded_image(filename, replace_missing=True, replacement_file='blank_image
replace_missing: Optionally return a placeholder image if the provided filename does not exist
validate: Optionally validate that the file is a valid image file (default = True)
kwargs:
width: Optional width of the image (default = None)
height: Optional height of the image (default = None)
rotate: Optional rotation to apply to the image
Returns:
A fully qualified path to the image
Raises:
FileNotFoundError if the file does not exist
"""
if type(filename) is SafeString:
# Prepend an empty string to enforce 'stringiness'
@@ -129,21 +141,51 @@ def uploaded_image(filename, replace_missing=True, replacement_file='blank_image
exists = False
if not exists and not replace_missing:
raise FileNotFoundError(f"Image file '{filename}' not found")
raise FileNotFoundError(_("Image file not found") + f": '{filename}'")
if debug_mode:
# In debug mode, return a web path
# In debug mode, return a web path (rather than an encoded image blob)
if exists:
return os.path.join(settings.MEDIA_URL, filename)
return os.path.join(settings.STATIC_URL, 'img', replacement_file)
else:
# Return file path
if exists:
path = settings.MEDIA_ROOT.joinpath(filename).resolve()
else:
path = settings.STATIC_ROOT.joinpath('img', replacement_file).resolve()
return f"file://{path}"
elif not exists:
full_path = settings.STATIC_ROOT.joinpath('img', replacement_file).resolve()
# Load the image, check that it is valid
if full_path.exists() and full_path.is_file():
img = Image.open(full_path)
else:
# A placeholder image showing that the image is missing
img = Image.new('RGB', (64, 64), color='red')
width = kwargs.get('width', None)
height = kwargs.get('height', None)
if width is not None and height is not None:
# Resize the image, width *and* height are provided
img = img.resize((width, height))
elif width is not None:
# Resize the image, width only
wpercent = (width / float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
img = img.resize((width, hsize))
elif height is not None:
# Resize the image, height only
hpercent = (height / float(img.size[1]))
wsize = int((float(img.size[0]) * float(hpercent)))
img = img.resize((wsize, height))
# Optionally rotate the image
rotate = kwargs.get('rotate', None)
if rotate is not None:
img = img.rotate(rotate)
# Return a base-64 encoded image
img_data = report.helpers.encode_image_base64(img)
return img_data
@register.simple_tag()
@@ -164,7 +206,7 @@ def encode_svg_image(filename):
exists = False
if not exists:
raise FileNotFoundError(f"Image file '{filename}' not found")
raise FileNotFoundError(_("Image file not found") + f": '{filename}'")
# Read the file data
with open(full_path, 'rb') as f:
@@ -175,7 +217,7 @@ def encode_svg_image(filename):
@register.simple_tag()
def part_image(part: Part):
def part_image(part: Part, preview=False, thumbnail=False, **kwargs):
"""Return a fully-qualified path for a part image.
Arguments:
@@ -184,13 +226,17 @@ def part_image(part: Part):
Raises:
TypeError if provided part is not a Part instance
"""
if type(part) is Part:
if type(part) is not Part:
raise TypeError(_("part_image tag requires a Part instance"))
if preview:
img = part.image.preview.name
elif thumbnail:
img = part.image.thumbnail.name
else:
img = part.image.name
else:
raise TypeError("part_image tag requires a Part instance")
return uploaded_image(img)
return uploaded_image(img, **kwargs)
@register.simple_tag()
@@ -210,7 +256,7 @@ def part_parameter(part: Part, parameter_name: str):
@register.simple_tag()
def company_image(company):
def company_image(company, preview=False, thumbnail=False, **kwargs):
"""Return a fully-qualified path for a company image.
Arguments:
@@ -219,12 +265,17 @@ def company_image(company):
Raises:
TypeError if provided company is not a Company instance
"""
if type(company) is Company:
img = company.image.name
else:
raise TypeError("company_image tag requires a Company instance")
if type(company) is not Company:
raise TypeError(_("company_image tag requires a Company instance"))
return uploaded_image(img)
if preview:
img = company.image.preview.name
elif thumbnail:
img = company.image.thumbnail.name
else:
img = company.image.name
return uploaded_image(img, **kwargs)
@register.simple_tag()

@@ -91,8 +91,12 @@ class ReportTagTest(TestCase):
with self.assertRaises(FileNotFoundError):
report_tags.uploaded_image('/part/something/test.png', replace_missing=False)
img = report_tags.uploaded_image('/part/something/other.png')
self.assertTrue('blank_image.png' in img)
img = str(report_tags.uploaded_image('/part/something/other.png'))
if b:
self.assertIn('blank_image.png', img)
else:
self.assertIn('data:image/png;charset=utf-8;base64,', img)
# Create a dummy image
img_path = 'part/images/'
@@ -121,10 +125,10 @@ class ReportTagTest(TestCase):
self.debug_mode(False)
img = report_tags.uploaded_image('part/images/test.jpg')
self.assertEqual(img, f'file://{img_path.joinpath("test.jpg")}')
self.assertTrue(img.startswith('data:image/png;charset=utf-8;base64,'))
img = report_tags.uploaded_image(SafeString('part/images/test.jpg'))
self.assertEqual(img, f'file://{img_path.joinpath("test.jpg")}')
self.assertTrue(img.startswith('data:image/png;charset=utf-8;base64,'))
def test_part_image(self):
"""Unit tests for the 'part_image' tag"""

@@ -481,7 +481,7 @@ class StockFilter(rest_filters.FilterSet):
"""Filter by whether or not the stock item is 'allocated'"""
if str2bool(value):
# Filter StockItem with either build allocations or sales order allocations
return queryset.filter(Q(sales_order_allocations__isnull=False) | Q(allocations__isnull=False))
return queryset.filter(Q(sales_order_allocations__isnull=False) | Q(allocations__isnull=False)).distinct()
# Filter StockItem without build allocations or sales order allocations
return queryset.filter(Q(sales_order_allocations__isnull=True) & Q(allocations__isnull=True))
@@ -546,7 +546,8 @@ class StockFilter(rest_filters.FilterSet):
if str2bool(value):
return queryset.exclude(q)
return queryset.filter(q)
return queryset.filter(q).distinct()
has_batch = rest_filters.BooleanFilter(label='Has batch code', method='filter_has_batch')
@@ -556,7 +557,8 @@ class StockFilter(rest_filters.FilterSet):
if str2bool(value):
return queryset.exclude(q)
return queryset.filter(q)
return queryset.filter(q).distinct()
tracked = rest_filters.BooleanFilter(label='Tracked', method='filter_tracked')
@@ -572,7 +574,8 @@ class StockFilter(rest_filters.FilterSet):
if str2bool(value):
return queryset.exclude(q_batch & q_serial)
return queryset.filter(q_batch & q_serial)
return queryset.filter(q_batch).filter(q_serial).distinct()
installed = rest_filters.BooleanFilter(label='Installed in other stock item', method='filter_installed')
@@ -1056,7 +1059,9 @@ class StockList(APIDownloadMixin, ListCreateDestroyAPIView):
company = params.get('company', None)
if company is not None:
queryset = queryset.filter(Q(supplier_part__supplier=company) | Q(supplier_part__manufacturer_part__manufacturer=company))
queryset = queryset.filter(
Q(supplier_part__supplier=company) | Q(supplier_part__manufacturer_part__manufacturer=company).distinct()
)
return queryset

@@ -13,6 +13,7 @@ import tablib
from djmoney.money import Money
from rest_framework import status
import build.models
import company.models
import part.models
from common.models import InvenTreeSetting
@@ -639,6 +640,103 @@ class StockItemListTest(StockAPITestCase):
self.assertEqual(len(dataset), 17)
def test_filter_by_allocated(self):
"""Test that we can filter by "allocated" status:
- Only return stock items which are 'allocated'
- Either to a build order or sales order
- Test that the results are "distinct" (no duplicated results)
- Ref: https://github.com/inventree/InvenTree/pull/5916
"""
# Create a build order to allocate to
assembly = part.models.Part.objects.create(name='F Assembly', description='Assembly for filter test', assembly=True)
component = part.models.Part.objects.create(name='F Component', description='Component for filter test', component=True)
bom_item = part.models.BomItem.objects.create(part=assembly, sub_part=component, quantity=10)
# Create two build orders
bo_1 = build.models.Build.objects.create(part=assembly, quantity=10)
bo_2 = build.models.Build.objects.create(part=assembly, quantity=20)
# Test that two distinct build line items are created automatically
self.assertEqual(bo_1.build_lines.count(), 1)
self.assertEqual(bo_2.build_lines.count(), 1)
self.assertEqual(build.models.BuildLine.objects.filter(bom_item=bom_item).count(), 2)
build_line_1 = bo_1.build_lines.first()
build_line_2 = bo_2.build_lines.first()
# Allocate stock
location = StockLocation.objects.first()
stock_1 = StockItem.objects.create(part=component, quantity=100, location=location)
stock_2 = StockItem.objects.create(part=component, quantity=100, location=location)
stock_3 = StockItem.objects.create(part=component, quantity=100, location=location)
# Allocate stock_1 to two build orders
build.models.BuildItem.objects.create(
stock_item=stock_1,
build_line=build_line_1,
quantity=5
)
build.models.BuildItem.objects.create(
stock_item=stock_1,
build_line=build_line_2,
quantity=5
)
# Allocate stock_2 to 1 build orders
build.models.BuildItem.objects.create(
stock_item=stock_2,
build_line=build_line_1,
quantity=5
)
url = reverse('api-stock-list')
# 3 items when just filtering by part
response = self.get(
url,
{
"part": component.pk,
"in_stock": True
},
expected_code=200
)
self.assertEqual(len(response.data), 3)
# 1 item when filtering by "not allocated"
response = self.get(
url,
{
"part": component.pk,
"in_stock": True,
"allocated": False,
},
expected_code=200
)
self.assertEqual(len(response.data), 1)
self.assertEqual(response.data[0]["pk"], stock_3.pk)
# 2 items when filtering by "allocated"
response = self.get(
url,
{
"part": component.pk,
"in_stock": True,
"allocated": True,
},
expected_code=200
)
self.assertEqual(len(response.data), 2)
ids = [item["pk"] for item in response.data]
self.assertIn(stock_1.pk, ids)
self.assertIn(stock_2.pk, ids)
def test_query_count(self):
"""Test that the number of queries required to fetch stock items is reasonable."""

@@ -0,0 +1,11 @@
{% extends "email/email.html" %}
{% load i18n %}
{% load inventree_extras %}
{% block title %}
{{ message }}
{% if link %}
<p>{% trans "Click on the following link to view this order" %}: <a href="{{ link }}">{{ link }}</a></p>
{% endif %}
{% endblock title %}

@@ -298,7 +298,7 @@ function constructDeleteForm(fields, options) {
* - closeText: Text for the "close" button
* - fields: list of fields to display, with the following options
* - filters: API query filters
* - onEdit: callback or array of callbacks which get fired when field is edited
* - onEdit: callback when field is edited
* - secondary: Define a secondary modal form for this field
* - label: Specify custom label
* - help_text: Specify custom help_text
@@ -493,30 +493,6 @@ function constructFormBody(fields, options) {
html += options.header_html;
}
// process every field by recursively walking down nested fields
const processField = (name, field, optionsField) => {
if (field.type === "nested object") {
for (const [k, v] of Object.entries(field.children)) {
processField(`${name}__${k}`, v, optionsField.children[k]);
}
}
if (field.type === "dependent field") {
if(field.child) {
// copy child attribute from parameters to options
optionsField.child = field.child;
processField(name, field.child, optionsField.child);
} else {
delete optionsField.child;
}
}
}
for (const [k,v] of Object.entries(fields)) {
processField(k, v, options.fields[k]);
}
// Client must provide set of fields to be displayed,
// otherwise *all* fields will be displayed
var displayed_fields = options.fields || fields;
@@ -623,6 +599,14 @@ function constructFormBody(fields, options) {
var field = fields[field_name];
switch (field.type) {
// Skip field types which are simply not supported
case 'nested object':
continue;
default:
break;
}
html += constructField(field_name, field, options);
}
@@ -826,7 +810,7 @@ function insertSecondaryButtons(options) {
/*
* Extract all specified form values as a single object
*/
function extractFormData(fields, options, includeLocal = true) {
function extractFormData(fields, options) {
var data = {};
@@ -839,7 +823,6 @@ function extractFormData(fields, options, includeLocal = true) {
if (!field) continue;
if (field.type == 'candy') continue;
if (!includeLocal && field.localOnly) continue;
data[name] = getFormFieldValue(name, field, options);
}
@@ -1048,17 +1031,6 @@ function updateFieldValue(name, value, field, options) {
}
// TODO - Specify an actual value!
break;
case 'nested object':
for (const [k, v] of Object.entries(value)) {
if (!(k in field.children)) continue;
updateFieldValue(`${name}__${k}`, v, field.children[k], options);
}
break;
case 'dependent field':
if (field.child) {
updateFieldValue(name, value, field.child, options);
}
break;
case 'file upload':
case 'image upload':
break;
@@ -1193,17 +1165,6 @@ function getFormFieldValue(name, field={}, options={}) {
case 'email':
value = sanitizeInputString(el.val());
break;
case 'nested object':
value = {};
for (const [name, subField] of Object.entries(field.children)) {
value[name] = getFormFieldValue(subField.name, subField, options);
}
break;
case 'dependent field':
if(!field.child) return undefined;
value = getFormFieldValue(name, field.child, options);
break;
default:
value = el.val();
break;
@@ -1488,28 +1449,19 @@ function handleFormErrors(errors, fields={}, options={}) {
var field = fields[field_name] || {};
var field_errors = errors[field_name];
// for nested objects with children and dependent fields with a child defined, extract nested errors
if (((field.type == 'nested object') && ('children' in field)) || ((field.type == 'dependent field') && ('child' in field))) {
if ((field.type == 'nested object') && ('children' in field)) {
// Handle multi-level nested errors
const handleNestedError = (parent_name, sub_field_errors) => {
for (const sub_field in sub_field_errors) {
const sub_sub_field_name = `${parent_name}__${sub_field}`;
const sub_sub_field_errors = sub_field_errors[sub_field];
if (!first_error_field && sub_sub_field_errors && isFieldVisible(sub_sub_field_name, options)) {
first_error_field = sub_sub_field_name;
}
for (var sub_field in field_errors) {
var sub_field_name = `${field_name}__${sub_field}`;
var sub_field_errors = field_errors[sub_field];
// if the error is an object, its a nested object, recursively handle the errors
if (typeof sub_sub_field_errors === "object" && !Array.isArray(sub_sub_field_errors)) {
handleNestedError(sub_sub_field_name, sub_sub_field_errors)
} else {
addFieldErrorMessage(sub_sub_field_name, sub_sub_field_errors, options);
}
if (!first_error_field && sub_field_errors && isFieldVisible(sub_field_name, options)) {
first_error_field = sub_field_name;
}
}
handleNestedError(field_name, field_errors);
addFieldErrorMessage(sub_field_name, sub_field_errors, options);
}
} else if ((field.type == 'field') && ('child' in field)) {
// This is a "nested" array field
handleNestedArrayErrors(errors, field_name, options);
@@ -1604,7 +1556,7 @@ function addFieldCallbacks(fields, options) {
var field = fields[name];
if (!field || field.type === "candy") continue;
if (!field || !field.onEdit) continue;
addFieldCallback(name, field, options);
}
@@ -1612,34 +1564,15 @@ function addFieldCallbacks(fields, options) {
function addFieldCallback(name, field, options) {
const el = getFormFieldElement(name, options);
if (field.onEdit) {
el.change(function() {
var el = getFormFieldElement(name, options);
var value = getFormFieldValue(name, field, options);
let onEditHandlers = field.onEdit;
el.change(function() {
if (!Array.isArray(onEditHandlers)) {
onEditHandlers = [onEditHandlers];
}
var value = getFormFieldValue(name, field, options);
for (const onEdit of onEditHandlers) {
onEdit(value, name, field, options);
}
});
}
// attach field callback for nested fields
if(field.type === "nested object") {
for (const [c_name, c_field] of Object.entries(field.children)) {
addFieldCallback(`${name}__${c_name}`, c_field, options);
}
}
if(field.type === "dependent field" && field.child) {
addFieldCallback(name, field.child, options);
}
field.onEdit(value, name, field, options);
});
}
@@ -1794,32 +1727,16 @@ function initializeRelatedFields(fields, options={}) {
if (!field || field.hidden) continue;
initializeRelatedFieldsRecursively(field, fields, options);
}
}
function initializeRelatedFieldsRecursively(field, fields, options) {
switch (field.type) {
case 'related field':
initializeRelatedField(field, fields, options);
break;
case 'choice':
initializeChoiceField(field, fields, options);
break;
case 'nested object':
for (const [c_name, c_field] of Object.entries(field.children)) {
if(!c_field.name) c_field.name = `${field.name}__${c_name}`;
initializeRelatedFieldsRecursively(c_field, field.children, options);
switch (field.type) {
case 'related field':
initializeRelatedField(field, fields, options);
break;
case 'choice':
initializeChoiceField(field, fields, options);
break;
default:
break;
}
break;
case 'dependent field':
if (field.child) {
if(!field.child.name) field.child.name = field.name;
initializeRelatedFieldsRecursively(field.child, fields, options);
}
break;
default:
break;
}
}
@@ -2429,7 +2346,7 @@ function constructField(name, parameters, options={}) {
html += `<div id='div_id_${field_name}' class='${form_classes}' ${hover_title} ${css}>`;
// Add a label
if (!options.hideLabels && parameters.type !== "nested object" && parameters.type !== "dependent field") {
if (!options.hideLabels) {
html += constructLabel(name, parameters);
}
@@ -2584,12 +2501,6 @@ function constructInput(name, parameters, options={}) {
case 'raw':
func = constructRawInput;
break;
case 'nested object':
func = constructNestedObject;
break;
case 'dependent field':
func = constructDependentField;
break;
default:
// Unsupported field type!
break;
@@ -2869,129 +2780,6 @@ function constructRawInput(name, parameters) {
}
/*
* Construct a nested object input
*/
function constructNestedObject(name, parameters, options) {
let html = `
<div id="div_id_${name}" class='panel form-panel' style="margin-bottom: 0; padding-bottom: 0;">
<div class='panel-heading form-panel-heading'>
<div>
<h6 style='display: inline;'>${parameters.label}</h6>
</div>
</div>
<div class='panel-content form-panel-content' id="id_${name}">
`;
parameters.field_names = [];
for (const [key, field] of Object.entries(parameters.children)) {
const subFieldName = `${name}__${key}`;
field.name = subFieldName;
parameters.field_names.push(subFieldName);
html += constructField(subFieldName, field, options);
}
html += "</div></div>";
return html;
}
function getFieldByNestedPath(name, fields) {
if (typeof name === "string") {
name = name.split("__");
}
if (name.length === 0) return fields;
if (fields.type === "nested object") fields = fields.children;
if (!(name[0] in fields)) return null;
let field = fields[name[0]];
if (field.type === "dependent field" && field.child) {
field = field.child;
}
return getFieldByNestedPath(name.slice(1), field);
}
/*
* Construct a dependent field input
*/
function constructDependentField(name, parameters, options) {
// add onEdit handler to all fields this dependent field depends on
for (let d_field_name of parameters.depends_on) {
const d_field = getFieldByNestedPath([...name.split("__").slice(0, -1), d_field_name], options.fields);
if (!d_field) continue;
const onEdit = (value, name, field, options) => {
if(value === undefined) return;
// extract the current form data to include in OPTIONS request
const data = extractFormData(options.fields, options, false)
$.ajax({
url: options.url,
type: "OPTIONS",
data: JSON.stringify(data),
contentType: "application/json",
dataType: "json",
accepts: { json: "application/json" },
success: (res) => {
const fields = res.actions[options.method];
// merge already entered values in the newly constructed form
options.data = extractFormData(options.fields, options);
// remove old submit handlers
$(options.modal).off('click', '#modal-form-submit');
if (options.method === "POST") {
constructCreateForm(fields, options);
}
if (options.method === "PUT" || options.method === "PATCH") {
constructChangeForm(fields, options);
}
if (options.method === "DELETE") {
constructDeleteForm(fields, options);
}
},
error: (xhr) => showApiError(xhr, options.url)
});
}
// attach on edit handler
const originalOnEdit = d_field.onEdit;
d_field.onEdit = [onEdit];
if(typeof originalOnEdit === "function") {
d_field.onEdit.push(originalOnEdit);
} else if (Array.isArray(originalOnEdit)) {
// push old onEdit handlers, but omit the old
d_field.onEdit.push(...originalOnEdit.filter(h => h !== d_field._currentDependentFieldOnEdit));
}
// track current onEdit handler function
d_field._currentDependentFieldOnEdit = onEdit;
}
// child is not specified already, return a dummy div with id so no errors can happen
if (!parameters.child) {
return `<div id="id_${name}" hidden></div>`;
}
// copy label to child if not already provided
if(!parameters.child.label) {
parameters.child.label = parameters.label;
}
// construct the provided child field
return constructField(name, parameters.child, options);
}
/*
* Construct a 'help text' div based on the field parameters

@@ -137,11 +137,6 @@ function printLabels(options) {
// update form
updateForm(formOptions);
// workaround to fix a bug where one cannot scroll after changing the plugin
// without opening and closing the select box again manually
$("#id__plugin").select2("open");
$("#id__plugin").select2("close");
}
const printingFormOptions = {

@@ -138,7 +138,7 @@ You can access an uploaded image file if you know the *path* of the image, relat
{% raw %}
<!-- Load the report helper functions -->
{% load report %}
<img src='{% uploaded_image "subdir/my_image.png" %}'/>
<img src='{% uploaded_image "subdir/my_image.png" width=480 rotate=45 %}'/>
{% endraw %}
```
@@ -148,6 +148,16 @@ You can access an uploaded image file if you know the *path* of the image, relat
!!! warning "Invalid Image"
If the supplied file is not a valid image, it will be replaced with a placeholder image file
#### Image Manipulation
The `{% raw %}{% uploaded_image %}{% endraw %}` tag supports some optional parameters for image manipulation. These can be used to adjust or resize the image - to reduce the size of the generated report file, for example.
```html
{% raw %}
{% load report %}
<img src='{% uploaded_image "image_file.png" width=500 rotate=45 %}'>
{% endraw %}```
### SVG Images
@@ -173,6 +183,26 @@ A shortcut function is provided for rendering an image associated with a Part in
{% endraw %}
```
#### Image Arguments
Any optional arguments which can be used in the [uploaded_image tag](#uploaded-images) can be used here too.
#### Image Variations
The *Part* model supports *preview* (256 x 256) and *thumbnail* (128 x 128) versions of the uploaded image. These variations can be used in the generated reports (e.g. to reduce generated file size):
```html
{% raw %}
{% load report %}
<!-- Render the "preview" image variation -->
<img src='{% part_image part preview=True %}'>
<!-- Render the "thumbnail" image variation -->
<img src='{% part_image part thumbnail=True %}'>
{% endraw %}
```
### Company Images
A shortcut function is provided for rendering an image associated with a Company instance. You can render the image of the company using the `{% raw %}{% company_image ... %}{% endraw %}` template tag:
@@ -185,6 +215,10 @@ A shortcut function is provided for rendering an image associated with a Company
{% endraw %}
```
#### Image Variations
*Preview* and *thumbnail* image variations can be rendered for the `company_image` tag, in a similar manner to [part image variations](#image-variations)
## InvenTree Logo
A template tag is provided to load the InvenTree logo image into a report. You can render the logo using the `{% raw %}{% logo_image %}{% endraw %}` tag:

@@ -32,7 +32,7 @@ In addition to the default report context variables, the following variables are
#### Lines
Each line item have sub variables, as follows:
Each line item (available within the `lines` list) has sub variables, as follows:
| Variable | Description |
| --- | --- |
@@ -45,11 +45,13 @@ Each line item have sub variables, as follows:
| total_line_price | The total price for this line item, calculated from the unit price and quantity |
| destination | The stock location where the part will be stored |
A simple example below shows how to use the context variables for line items:
A simple example below shows how to use the context variables for each line item:
```html
{% raw %}
{% for line in order.lines %}
{% for line in lines %}
Internal Part: {{ line.part.part.name }} - <i>{{ line.part.part.description }}</i>
SKU: {{ line.part.SKU }}
Price: {% render_currency line.total_line_price %}
{% endfor %}
{% endraw %}

@@ -8,7 +8,7 @@ msgstr ""
"Language: bg\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: cs\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: da\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-11 21:26\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr "Willkommen, unten anmelden"
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr "Nutzername"
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr "Passwort zurücksetzen"
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr "Adresse"
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr "Name"
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr "Einstellungen"
@@ -886,6 +892,7 @@ msgid "User"
msgstr "Nutzer"
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr "Benutzer"
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: el\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@@ -8,7 +8,7 @@ msgstr ""
"Language: es_MX\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-14 22:29\n"
"Last-Translator: \n"
"Language-Team: Spanish, Mexico\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr "Bienvenido, inicia sesión a continuación"
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr "Nombre de usuario"
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr "Restablecer contraseña"
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr "Nombre"
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: fa\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-13 21:29\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: fi\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr "Bienvenue, connectez-vous ci-dessous"
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr "Nom d'utilisateur"
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr "Réinitialiser le mot de passe"
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr "Serveur"
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr "Nom"
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr "Paramètres"
@@ -886,6 +892,7 @@ msgid "User"
msgstr "Utilisateur"
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: he\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: hi\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-13 21:29\n"
"Last-Translator: \n"
"Language-Team: Hindi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr "उपयोगकर्ता नाम"
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr "पासवर्ड रीसेट करें"
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr "नाम"
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: hu\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr "Üdvözlet, bejelentkezés lent"
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr "Felhasználónév"
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr "Jelszó visszaállítása"
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr "Kiszolgáló"
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr "Név"
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr "Beállítások"
@@ -886,6 +892,7 @@ msgid "User"
msgstr "Felhasználó"
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr "Kiállította"
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr "Aktív"
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr "Részletek"
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr "Játszótér"
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr "Alkatrész létrehozása"
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr "Alkatrész létrehozva"
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr "Alkatrész szerkesztése"
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr "Alkatrész frissítve"
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr "Felsőbb szintű alkatrész kategória"
@@ -3092,28 +3220,32 @@ msgstr "Szegély sugár"
msgid "Loader"
msgstr "Betöltő"
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr "Új gyártási utasítás"
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr "Részletek"
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: id\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-13 21:29\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: it\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: ja\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr "ユーザー名"
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr "パスワードを再設定"
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr "名前"
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr "設定"
@@ -886,6 +892,7 @@ msgid "User"
msgstr "ユーザー"
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr "詳細"
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr "詳細"
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: ko\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: nl\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: no\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:54\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: pl\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@@ -8,7 +8,7 @@ msgstr ""
"Language: pt\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-14 22:29\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr "Bem-vindo(a), acesse abaixo"
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr "Nome de usuário"
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr "Redefinir senha"
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr "Servidor"
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr "Nome"
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr "Configurações"
@@ -886,6 +892,7 @@ msgid "User"
msgstr "Usuário"
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr "Ativo"
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr "Detalhes"
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr "Área de testes"
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr "Criar Peça"
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr "Peça criada"
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr "Editar Peça"
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr "Peça atualizada"
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr "Categoria de peça parental"
@@ -3092,28 +3220,32 @@ msgstr "Raio da borda"
msgid "Loader"
msgstr "Carregador"
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr "Detalhes"
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: ru\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr "Добро пожаловать, войдите ниже"
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr "Имя пользователя"
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr "Сбросить пароль"
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr "Узел"
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr "Название"
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr "Настройки"
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: sl\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Slovenian\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: sv\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr "Välkommen, logga in nedan"
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr "Användarnamn"
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr "Återställ lösenord"
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr "Värd"
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr "Namn"
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr "Inställningar"
@@ -886,6 +892,7 @@ msgid "User"
msgstr "Användare"
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr "Användare"
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr "Aktiv"
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr "Gränsradie"
msgid "Loader"
msgstr "Lastare"
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: th\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-13 21:29\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr ""
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr ""
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr ""
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr ""
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr ""
@@ -886,6 +892,7 @@ msgid "User"
msgstr ""
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr ""
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr ""
msgid "Loader"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: tr\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-13 21:28\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr "Hoşgeldiniz, aşağıdan giriş yapın"
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr "Kullanıcı Adı"
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr "Parolayı sıfırla"
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr "Sunucu"
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr "Adı"
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr "Ayarlar"
@@ -886,6 +892,7 @@ msgid "User"
msgstr "Kullanıcı"
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr ""
@@ -1265,6 +1272,8 @@ msgstr ""
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr "Aktif"
@@ -1900,6 +1909,35 @@ msgstr ""
msgid "Custom unit created"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr ""
@@ -1929,6 +1967,96 @@ msgstr ""
msgid "Added project code"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr ""
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr ""
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr ""
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr ""
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr ""
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr ""
@@ -3092,28 +3220,32 @@ msgstr "Kenarlık Yarıçapı"
msgid "Loader"
msgstr "Yükleyici"
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr ""
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

@@ -8,7 +8,7 @@ msgstr ""
"Language: vi\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-10 20:55\n"
"PO-Revision-Date: 2023-11-13 21:29\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -96,6 +96,8 @@ msgid "Welcome, log in below"
msgstr "Chào bạn, đăng nhập bên dưới"
#: src/components/forms/AuthenticationForm.tsx:91
#: src/components/tables/settings/UserDrawer.tsx:159
#: src/components/tables/settings/UserTable.tsx:57
msgid "Username"
msgstr "Tên người dùng"
@@ -114,6 +116,8 @@ msgid "Reset password"
msgstr "Đặt lại mật khẩu"
#: src/components/forms/AuthenticationForm.tsx:117
#: src/components/tables/settings/UserDrawer.tsx:163
#: src/components/tables/settings/UserTable.tsx:51
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:48
msgid "Email"
@@ -155,6 +159,7 @@ msgstr "Host"
#: src/components/tables/part/PartCategoryTable.tsx:24
#: src/components/tables/part/PartParameterTemplateTable.tsx:32
#: src/components/tables/settings/CustomUnitsTable.tsx:32
#: src/components/tables/settings/GroupTable.tsx:29
#: src/components/tables/stock/StockLocationTable.tsx:25
msgid "Name"
msgstr "Tên"
@@ -553,12 +558,13 @@ msgstr ""
#~ msgstr "Profile"
#: src/components/nav/MainMenu.tsx:44
#: src/pages/Index/Settings/AdminCenter.tsx:89
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter.tsx:98
msgid "Admin Center"
msgstr ""
#: src/components/nav/MainMenu.tsx:48
#: src/pages/Index/Settings/AdminCenter.tsx:35
#: src/pages/Index/Settings/AdminCenter.tsx:44
msgid "Settings"
msgstr "Cài đặt"
@@ -886,6 +892,7 @@ msgid "User"
msgstr "Người dùng"
#: src/components/render/ModelType.tsx:150
#: src/pages/Index/Settings/AdminCenter.tsx:34
msgid "Users"
msgstr "Người dùng"
@@ -1265,6 +1272,8 @@ msgstr "Phát hành bởi"
#: src/components/tables/build/BuildOrderTable.tsx:110
#: src/components/tables/part/PartTable.tsx:175
#: src/components/tables/plugin/PluginListTable.tsx:218
#: src/components/tables/settings/UserDrawer.tsx:181
#: src/components/tables/settings/UserTable.tsx:88
msgid "Active"
msgstr "Hoạt động"
@@ -1900,6 +1909,35 @@ msgstr "Thêm đơn vị tùy chỉnh"
msgid "Custom unit created"
msgstr "Đơn vị tùy chỉnh đã được tạo"
#: src/components/tables/settings/GroupTable.tsx:41
msgid "Edit group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:46
msgid "Group updated"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:55
msgid "Delete group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:56
msgid "Group deleted"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:59
msgid "Are you sure you want to delete this group?"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:70
#: src/components/tables/settings/GroupTable.tsx:84
msgid "Add group"
msgstr ""
#: src/components/tables/settings/GroupTable.tsx:73
msgid "Added group"
msgstr ""
#: src/components/tables/settings/ProjectCodeTable.tsx:49
msgid "Edit project code"
msgstr "Sửa mã dự án"
@@ -1929,6 +1967,96 @@ msgstr "Thêm mã dự án"
msgid "Added project code"
msgstr "Mã dự án đã được thêm"
#: src/components/tables/settings/UserDrawer.tsx:92
msgid "User permission changed successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:93
msgid "Some changes might only take effect after the user refreshes their login."
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:118
msgid "Changed user active status successfully"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:119
msgid "Set to {active}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:142
msgid "User details for {0}"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:148
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr "Chi tiết"
#: src/components/tables/settings/UserDrawer.tsx:165
#: src/components/tables/settings/UserTable.tsx:62
msgid "First Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:170
#: src/components/tables/settings/UserTable.tsx:67
msgid "Last Name"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:176
msgid "Rights"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:184
#: src/components/tables/settings/UserTable.tsx:80
msgid "Staff"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:190
#: src/components/tables/settings/UserTable.tsx:84
msgid "Superuser"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:200
#: src/components/tables/settings/UserTable.tsx:73
#: src/pages/Index/Settings/AdminCenter.tsx:38
msgid "Groups"
msgstr ""
#: src/components/tables/settings/UserDrawer.tsx:204
msgid "No groups"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:100
msgid "Edit user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:107
msgid "User updated"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:116
msgid "Delete user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:117
msgid "user deleted"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:120
msgid "Are you sure you want to delete this user?"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:131
#: src/components/tables/settings/UserTable.tsx:147
msgid "Add user"
msgstr ""
#: src/components/tables/settings/UserTable.tsx:139
msgid "Added user"
msgstr ""
#: src/components/tables/stock/StockItemTable.tsx:72
msgid "This stock item is in production"
msgstr ""
@@ -2311,7 +2439,7 @@ msgid "Sales"
msgstr ""
#: src/defaults/links.tsx:34
#: src/defaults/menuItems.tsx:66
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:104
msgid "Playground"
msgstr "Sân chơi"
@@ -2510,23 +2638,23 @@ msgstr ""
msgid "Company updated"
msgstr ""
#: src/forms/PartForms.tsx:73
#: src/forms/PartForms.tsx:77
msgid "Create Part"
msgstr "Tạo phụ kiện"
#: src/forms/PartForms.tsx:75
#: src/forms/PartForms.tsx:79
msgid "Part created"
msgstr "Phụ kiện đã tạo"
#: src/forms/PartForms.tsx:92
#: src/forms/PartForms.tsx:96
msgid "Edit Part"
msgstr "Sửa phụ kiện"
#: src/forms/PartForms.tsx:96
#: src/forms/PartForms.tsx:100
msgid "Part updated"
msgstr "Phụ kiện đã cập nhật"
#: src/forms/PartForms.tsx:107
#: src/forms/PartForms.tsx:111
msgid "Parent part category"
msgstr "Danh mục phụ kiện cha"
@@ -3092,28 +3220,32 @@ msgstr "Bo viền"
msgid "Loader"
msgstr "Thanh tải"
#: src/pages/Index/Settings/AdminCenter.tsx:28
#: src/pages/Index/Settings/AdminCenter.tsx:30
msgid "User Management"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:39
#: src/pages/Index/Settings/AdminCenter.tsx:48
msgid "Select settings relevant for user lifecycle. More available in"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:45
#: src/pages/Index/Settings/AdminCenter.tsx:54
msgid "System settings"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:65
#: src/pages/Index/Settings/AdminCenter.tsx:74
msgid "Quick Actions"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:70
#: src/pages/Index/Settings/AdminCenter.tsx:79
msgid "Add a new user"
msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:90
msgid "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:91
#~ msgid "Advanced Amininistrative Options for InvenTree"
#~ msgstr "Advanced Amininistrative Options for InvenTree"
#: src/pages/Index/Settings/AdminCenter.tsx:99
msgid "Advanced Options"
msgstr ""
#: src/pages/Index/Settings/PluginSettings.tsx:47
@@ -3325,12 +3457,6 @@ msgstr ""
msgid "New Build Order"
msgstr "Tạo đơn đặt bản dựng"
#: src/pages/company/CompanyDetail.tsx:71
#: src/pages/part/PartDetail.tsx:87
#: src/pages/stock/StockDetail.tsx:69
msgid "Details"
msgstr "Chi tiết"
#: src/pages/company/CompanyDetail.tsx:76
msgid "Manufactured Parts"
msgstr ""

Some files were not shown because too many files have changed in this diff Show More