From e852d6adf2d4057611663f49acb73b1b429ce1d2 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Thu, 18 Dec 2025 21:19:01 +0300 Subject: [PATCH 1/9] Features: 1) Add `is_updatable` field to Product model with migration; 2) Introduce `check_updatable` method in AbstractVendor to validate product updatability; 3) Define `ProductUnapdatableError` for handling non-updatable product logic; Fixes: none; Extra: none; --- .../migrations/0053_product_is_updatable.py | 21 +++++++++++++++++++ engine/core/models.py | 9 ++++++++ engine/core/vendors/__init__.py | 8 +++++++ 3 files changed, 38 insertions(+) create mode 100644 engine/core/migrations/0053_product_is_updatable.py diff --git a/engine/core/migrations/0053_product_is_updatable.py b/engine/core/migrations/0053_product_is_updatable.py new file mode 100644 index 00000000..d22b59a0 --- /dev/null +++ b/engine/core/migrations/0053_product_is_updatable.py @@ -0,0 +1,21 @@ +# Generated by Django 5.2.9 on 2025-12-18 18:18 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("core", "0052_alter_stock_system_attributes"), + ] + + operations = [ + migrations.AddField( + model_name="product", + name="is_updatable", + field=models.BooleanField( + default=True, + help_text="indicates whether this product should be updated from periodic task", + verbose_name="is product updatable", + ), + ), + ] diff --git a/engine/core/models.py b/engine/core/models.py index 7ff1797a..91d6b0cd 100644 --- a/engine/core/models.py +++ b/engine/core/models.py @@ -628,6 +628,15 @@ class Product(ExportModelOperationsMixin("product"), NiceModel): blank=False, null=False, ) + is_updatable = BooleanField( + default=True, + help_text=_( + "indicates whether this product should be updated from periodic task" + ), + verbose_name=_("is product updatable"), + blank=False, + null=False, + ) name = CharField( max_length=255, help_text=_("provide a clear identifying name for the product"), diff --git a/engine/core/vendors/__init__.py b/engine/core/vendors/__init__.py index 28145d4f..4a3d5d3f 100644 --- a/engine/core/vendors/__init__.py +++ b/engine/core/vendors/__init__.py @@ -83,6 +83,10 @@ class VendorInactiveError(VendorError): pass +class ProductUnapdatableError(VendorError): + pass + + class AbstractVendor: """ Abstract class defining vendor-related operations and handling. @@ -578,6 +582,10 @@ class AbstractVendor: return av + def check_updatable(self, product: Product): + if not product.is_updatable: + raise ProductUnapdatableError("Product %s is not updatable", product.sku) + def update_stock(self) -> None: pass From c3b4becc7648b5fe2c144ecb59ddd7e774722541 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Thu, 18 Dec 2025 21:21:28 +0300 Subject: [PATCH 2/9] Features: 1) Add "is_updatable" to list_filter and additional_fields in admin configuration; Fixes: None; Extra: None; --- engine/core/admin.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/engine/core/admin.py b/engine/core/admin.py index f9afb886..88ff2f36 100644 --- a/engine/core/admin.py +++ b/engine/core/admin.py @@ -466,6 +466,7 @@ class ProductAdmin( list_filter = ( "is_active", "is_digital", + "is_updatable", "stocks__vendor", "tags__name", "created", @@ -513,6 +514,9 @@ class ProductAdmin( "brand", "tags", ] + additional_fields = [ + "is_updatable", + ] def get_queryset(self, request): return ( From 13e7af52aa34e7225a585bc7f1b9d4ebedf0699d Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Fri, 19 Dec 2025 15:17:17 +0300 Subject: [PATCH 3/9] Features: 1) Improved request processing in middleware by adding mutable `QueryDict` implementation; 2) Extended type annotations across various modules for enhanced type safety; 3) Refined JWT token lifetime configuration for environment-specific logic. Fixes: 1) Addressed missing or incorrect imports and type hints with `# ty:ignore` markers; 2) Fixed search queryset error handling in filters module; 3) Resolved issues in viewsets with updated `@action` method usage. Extra: Removed unused classes and dependencies (e.g., `BaseMutation`, `basedpyright`, and related packages); streamlined GraphQL mutation implementations; cleaned up unused arguments in model `save` methods. --- .gitlab-ci.yml | 4 +- engine/blog/models.py | 4 +- engine/core/abstract.py | 4 +- engine/core/admin.py | 9 +- engine/core/elasticsearch/__init__.py | 3 +- engine/core/filters.py | 14 +- engine/core/graphene/__init__.py | 12 -- .../graphene/dashboard_mutations/__init__.py | 0 .../graphene/dashboard_mutations/product.py | 179 ------------------ engine/core/graphene/mutations.py | 45 +++-- engine/core/models.py | 27 +-- engine/core/views.py | 12 +- engine/payments/graphene/mutations.py | 4 +- engine/vibes_auth/graphene/mutations.py | 23 ++- engine/vibes_auth/serializers.py | 2 +- engine/vibes_auth/viewsets.py | 26 +-- evibes/ftpstorage.py | 15 -- evibes/middleware.py | 16 +- evibes/pagination.py | 8 +- evibes/settings/base.py | 4 +- evibes/settings/drf.py | 19 +- evibes/signal_processors.py | 4 +- evibes/urls.py | 1 + evibes/utils/renderers.py | 10 +- pyproject.toml | 57 +++--- uv.lock | 81 +++----- 26 files changed, 172 insertions(+), 411 deletions(-) delete mode 100644 engine/core/graphene/dashboard_mutations/__init__.py delete mode 100644 engine/core/graphene/dashboard_mutations/product.py delete mode 100644 evibes/ftpstorage.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 200727e5..9346c8bb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,19 +23,17 @@ lint: - "**/*.py" - "pyproject.toml" - ".pre-commit-config.yaml" - - "pyrightconfig.json" when: on_success - when: never typecheck: stage: typecheck script: - - uv run pyright + - uv run ty rules: - changes: - "**/*.py" - "pyproject.toml" - - "pyrightconfig.json" when: on_success - when: never diff --git a/engine/blog/models.py b/engine/blog/models.py index c09133d6..f4bfb069 100644 --- a/engine/blog/models.py +++ b/engine/blog/models.py @@ -99,7 +99,7 @@ class Post(NiceModel): verbose_name = _("post") verbose_name_plural = _("posts") - def save(self, **kwargs): + def save(self, *args, **kwargs): if self.file: raise ValueError( _("markdown files are not supported yet - use markdown content instead") @@ -110,7 +110,7 @@ class Post(NiceModel): "a markdown file or markdown content must be provided - mutually exclusive" ) ) - super().save(**kwargs) + super().save(*args, **kwargs) class PostTag(NiceModel): diff --git a/engine/core/abstract.py b/engine/core/abstract.py index 40851d7d..cdab177a 100644 --- a/engine/core/abstract.py +++ b/engine/core/abstract.py @@ -31,13 +31,13 @@ class NiceModel(Model): def save( self, - *, + *args, force_insert: bool = False, force_update: bool = False, using: str | None = None, update_fields: Collection[str] | None = None, update_modified: bool = True, - ) -> None: + ) -> None: # ty:ignore[invalid-method-override] self.update_modified = update_modified return super().save( force_insert=force_insert, diff --git a/engine/core/admin.py b/engine/core/admin.py index 88ff2f36..4c15e694 100644 --- a/engine/core/admin.py +++ b/engine/core/admin.py @@ -1,5 +1,5 @@ from contextlib import suppress -from typing import Any, ClassVar, Type +from typing import Any, Callable, ClassVar, Type from constance.admin import Config from constance.admin import ConstanceAdmin as BaseConstanceAdmin @@ -145,6 +145,7 @@ class FieldsetsMixin: # noinspection PyUnresolvedReferences class ActivationActionsMixin: + message_user: Callable actions_on_top = True actions_on_bottom = True actions = [ @@ -1086,10 +1087,8 @@ class ConstanceConfig: _meta = Meta() -# noinspection PyTypeChecker -site.unregister([Config]) -# noinspection PyTypeChecker -site.register([ConstanceConfig], BaseConstanceAdmin) +site.unregister([Config]) # ty:ignore[invalid-argument-type] +site.register([ConstanceConfig], BaseConstanceAdmin) # ty:ignore[invalid-argument-type] site.site_title = settings.PROJECT_NAME site.site_header = "eVibes" site.index_title = settings.PROJECT_NAME diff --git a/engine/core/elasticsearch/__init__.py b/engine/core/elasticsearch/__init__.py index 185ec46b..ccf39b11 100644 --- a/engine/core/elasticsearch/__init__.py +++ b/engine/core/elasticsearch/__init__.py @@ -10,6 +10,7 @@ from django_elasticsearch_dsl import fields from django_elasticsearch_dsl.registries import registry from elasticsearch import NotFoundError from elasticsearch.dsl import Q, Search +from elasticsearch.dsl.types import Hit from rest_framework.request import Request from engine.core.models import Brand, Category, Product @@ -199,7 +200,7 @@ def process_query( minimum_should_match=1, ) - def build_search(idxs: list[str], size: int) -> Search: + def build_search(idxs: list[str], size: int) -> Search[Hit]: return ( Search(index=idxs) .query(query_base) diff --git a/engine/core/filters.py b/engine/core/filters.py index 70fa2ef1..b8696e18 100644 --- a/engine/core/filters.py +++ b/engine/core/filters.py @@ -152,7 +152,7 @@ class ProductFilter(FilterSet): data: dict[Any, Any] | None = None, queryset: QuerySet[Product] | None = None, *, - request: HttpRequest | Request | Context = None, + request: HttpRequest | Request | Context | None = None, prefix: str | None = None, ) -> None: super().__init__(data=data, queryset=queryset, request=request, prefix=prefix) @@ -516,12 +516,12 @@ class CategoryFilter(FilterSet): if not value: return queryset - uuids = [ - category.get("uuid") - for category in process_query(query=value, indexes=("categories",))[ - "categories" - ] - ] + s_result = process_query(query=value, indexes=("categories",)) + + if not s_result: + raise ValueError("Search is unprocessable") + + uuids = [category.get("uuid") for category in s_result.get("categories", [])] return queryset.filter(uuid__in=uuids) diff --git a/engine/core/graphene/__init__.py b/engine/core/graphene/__init__.py index c461af03..e69de29b 100644 --- a/engine/core/graphene/__init__.py +++ b/engine/core/graphene/__init__.py @@ -1,12 +0,0 @@ -from typing import Any - -from graphene import Mutation - - -class BaseMutation(Mutation): - def __init__(self, *args: list[Any], **kwargs: dict[Any, Any]) -> None: - super().__init__(*args, **kwargs) - - @staticmethod - def mutate(**kwargs: Any) -> None: - pass diff --git a/engine/core/graphene/dashboard_mutations/__init__.py b/engine/core/graphene/dashboard_mutations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/engine/core/graphene/dashboard_mutations/product.py b/engine/core/graphene/dashboard_mutations/product.py deleted file mode 100644 index 747158dc..00000000 --- a/engine/core/graphene/dashboard_mutations/product.py +++ /dev/null @@ -1,179 +0,0 @@ -from contextlib import suppress - -from django.core.exceptions import PermissionDenied -from django.utils.translation import gettext_lazy as _ -from graphene import UUID, Boolean, Field, InputObjectType, List, NonNull, String - -from engine.core.graphene import BaseMutation -from engine.core.graphene.object_types import ProductType -from engine.core.models import ( - Attribute, - AttributeGroup, - AttributeValue, - Brand, - Category, - Product, - ProductTag, -) -from engine.core.utils.messages import permission_denied_message - - -def resolve_attributes(product, attributes): - for attr_input in attributes: - attribute = None - attr_uuid = attr_input.get("attribute_uuid") - if attr_uuid: - with suppress(Attribute.DoesNotExist): - attribute = Attribute.objects.get(uuid=attr_uuid) - if attribute is None: - group_name = attr_input.get("group_name") - attribute_name = attr_input.get("attribute_name") - value_type = attr_input.get("value_type") or "string" - if group_name and attribute_name: - group, _ = AttributeGroup.objects.get_or_create(name=group_name) - attribute, _ = Attribute.objects.get_or_create( - group=group, - name=attribute_name, - defaults={"value_type": value_type}, - ) - if attribute.value_type != value_type: - attribute.value_type = value_type - attribute.save(update_fields=["value_type"]) - if attribute is not None: - AttributeValue.objects.update_or_create( - product=product, - attribute=attribute, - defaults={"value": str(attr_input.get("value", ""))}, - ) - - -def resolve_tags(product, tag_uuids): - tags = list(ProductTag.objects.filter(uuid__in=tag_uuids)) - if tags: - product.tags.set(tags) - - -class AttributeInput(InputObjectType): - attribute_uuid = UUID(required=False, name="attributeUuid") - group_name = String(required=False, name="groupName") - attribute_name = String(required=False, name="attributeName") - value_type = String(required=False, name="valueType") - value = String(required=True) - - -class ProductInput(InputObjectType): - name = NonNull(String) - description = String(required=False) - is_digital = Boolean(required=False, name="isDigital") - partnumber = String(required=False) - sku = String(required=False) - - category_uuid = NonNull(UUID, name="categoryUuid") - brand_uuid = UUID(required=False, name="brandUuid") - tag_uuids = List(UUID, required=False, name="tagUuids") - attributes = List(NonNull(AttributeInput), required=False) - - -# noinspection PyUnusedLocal,PyTypeChecker -class CreateProduct(BaseMutation): - class Meta: - description = _("create a product") - - class Arguments: - product_data = NonNull(ProductInput, name="productData") - - product = Field(ProductType) - - @staticmethod - def mutate(parent, info, product_data): - user = info.context.user - if not user.has_perm("core.add_product"): - raise PermissionDenied(permission_denied_message) - category = Category.objects.get(uuid=product_data["category_uuid"]) - brand = None - if product_data.get("brand_uuid"): - with suppress(Brand.DoesNotExist): - brand = Brand.objects.get(uuid=product_data["brand_uuid"]) - - product = Product.objects.create( - name=product_data["name"], - description=product_data.get("description"), - is_digital=product_data.get("is_digital") or False, - partnumber=product_data.get("partnumber"), - sku=product_data.get("sku") or None, - category=category, - brand=brand, - ) - - resolve_tags(product, product_data.get("tag_uuids", [])) - - resolve_attributes(product, product_data.get("attributes", [])) - - return CreateProduct(product=product) - - -# noinspection PyUnusedLocal,PyTypeChecker -class UpdateProduct(BaseMutation): - class Meta: - description = _("create a product") - - class Arguments: - product_uuid = UUID(required=True) - product_data = NonNull(ProductInput, name="productData") - - product = Field(ProductType) - - @staticmethod - def mutate(parent, info, product_uuid, product_data): - user = info.context.user - if not user.has_perm("core.change_product"): - raise PermissionDenied(permission_denied_message) - product = Product.objects.get(uuid=product_uuid) - - updates = {} - for field_in, model_field in ( - ("name", "name"), - ("description", "description"), - ("is_digital", "is_digital"), - ("partnumber", "partnumber"), - ("sku", "sku"), - ): - if field_in in product_data and product_data[field_in] is not None: - updates[model_field] = product_data[field_in] - - if product_data.get("category_uuid"): - product.category = Category.objects.get(uuid=product_data["category_uuid"]) - if product_data.get("brand_uuid") is not None: - if product_data.get("brand_uuid"): - product.brand = Brand.objects.get(uuid=product_data["brand_uuid"]) - else: - product.brand = None - - for k, v in updates.items(): - setattr(product, k, v) - product.save() - - resolve_tags(product, product_data.get("tag_uuids", [])) - - resolve_attributes(product, product_data.get("attributes")) - - return UpdateProduct(product=product) - - -# noinspection PyUnusedLocal,PyTypeChecker -class DeleteProduct(BaseMutation): - class Meta: - description = _("create a product") - - class Arguments: - product_uuid = UUID(required=True) - - ok = Boolean() - - @staticmethod - def mutate(parent, info, product_uuid): - user = info.context.user - if not user.has_perm("core.delete_product"): - raise PermissionDenied(permission_denied_message) - Product.objects.get(uuid=product_uuid).delete() - return DeleteProduct(ok=True) diff --git a/engine/core/graphene/mutations.py b/engine/core/graphene/mutations.py index c66ebc98..d32a61ce 100644 --- a/engine/core/graphene/mutations.py +++ b/engine/core/graphene/mutations.py @@ -6,11 +6,10 @@ from django.core.cache import cache from django.core.exceptions import BadRequest, PermissionDenied from django.http import Http404 from django.utils.translation import gettext_lazy as _ -from graphene import UUID, Boolean, Field, Int, List, String +from graphene import UUID, Boolean, Field, Int, List, Mutation, String from graphene.types.generic import GenericScalar from engine.core.elasticsearch import process_query -from engine.core.graphene import BaseMutation from engine.core.graphene.object_types import ( AddressType, BulkProductInput, @@ -32,7 +31,7 @@ logger = logging.getLogger(__name__) # noinspection PyUnusedLocal -class CacheOperator(BaseMutation): +class CacheOperator(Mutation): class Meta: description = _("cache I/O") @@ -54,7 +53,7 @@ class CacheOperator(BaseMutation): # noinspection PyUnusedLocal -class RequestCursedURL(BaseMutation): +class RequestCursedURL(Mutation): class Meta: description = _("request a CORSed URL") @@ -82,7 +81,7 @@ class RequestCursedURL(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class AddOrderProduct(BaseMutation): +class AddOrderProduct(Mutation): class Meta: description = _("add a product to the order") @@ -111,7 +110,7 @@ class AddOrderProduct(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class RemoveOrderProduct(BaseMutation): +class RemoveOrderProduct(Mutation): class Meta: description = _("remove a product from the order") @@ -140,7 +139,7 @@ class RemoveOrderProduct(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class RemoveAllOrderProducts(BaseMutation): +class RemoveAllOrderProducts(Mutation): class Meta: description = _("remove all products from the order") @@ -162,7 +161,7 @@ class RemoveAllOrderProducts(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class RemoveOrderProductsOfAKind(BaseMutation): +class RemoveOrderProductsOfAKind(Mutation): class Meta: description = _("remove a product from the order") @@ -185,7 +184,7 @@ class RemoveOrderProductsOfAKind(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class BuyOrder(BaseMutation): +class BuyOrder(Mutation): class Meta: description = _("buy an order") @@ -256,7 +255,7 @@ class BuyOrder(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class BulkOrderAction(BaseMutation): +class BulkOrderAction(Mutation): class Meta: description = _("perform an action on a list of products in the order") @@ -308,7 +307,7 @@ class BulkOrderAction(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class BulkWishlistAction(BaseMutation): +class BulkWishlistAction(Mutation): class Meta: description = _("perform an action on a list of products in the wishlist") @@ -349,7 +348,7 @@ class BulkWishlistAction(BaseMutation): # noinspection PyUnusedLocal -class BuyUnregisteredOrder(BaseMutation): +class BuyUnregisteredOrder(Mutation): class Meta: description = _("purchase an order without account creation") @@ -397,7 +396,7 @@ class BuyUnregisteredOrder(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class AddWishlistProduct(BaseMutation): +class AddWishlistProduct(Mutation): class Meta: description = _("add a product to the wishlist") @@ -425,7 +424,7 @@ class AddWishlistProduct(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class RemoveWishlistProduct(BaseMutation): +class RemoveWishlistProduct(Mutation): class Meta: description = _("remove a product from the wishlist") @@ -453,7 +452,7 @@ class RemoveWishlistProduct(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class RemoveAllWishlistProducts(BaseMutation): +class RemoveAllWishlistProducts(Mutation): class Meta: description = _("remove all products from the wishlist") @@ -481,7 +480,7 @@ class RemoveAllWishlistProducts(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class BuyWishlist(BaseMutation): +class BuyWishlist(Mutation): class Meta: description = _("buy all products from the wishlist") @@ -531,7 +530,7 @@ class BuyWishlist(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class BuyProduct(BaseMutation): +class BuyProduct(Mutation): class Meta: description = _("buy a product") @@ -576,7 +575,7 @@ class BuyProduct(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class FeedbackProductAction(BaseMutation): +class FeedbackProductAction(Mutation): class Meta: description = _("add or delete a feedback for orderproduct") @@ -611,7 +610,7 @@ class FeedbackProductAction(BaseMutation): # noinspection PyUnusedLocal,PyTypeChecker -class CreateAddress(BaseMutation): +class CreateAddress(Mutation): class Arguments: raw_data = String( required=True, description=_("original address string provided by the user") @@ -628,7 +627,7 @@ class CreateAddress(BaseMutation): # noinspection PyUnusedLocal -class DeleteAddress(BaseMutation): +class DeleteAddress(Mutation): class Arguments: uuid = UUID(required=True) @@ -655,7 +654,7 @@ class DeleteAddress(BaseMutation): # noinspection PyUnusedLocal -class AutocompleteAddress(BaseMutation): +class AutocompleteAddress(Mutation): class Arguments: q = String() limit = Int() @@ -676,7 +675,7 @@ class AutocompleteAddress(BaseMutation): # noinspection PyUnusedLocal -class ContactUs(BaseMutation): +class ContactUs(Mutation): class Arguments: email = String(required=True) name = String(required=True) @@ -707,7 +706,7 @@ class ContactUs(BaseMutation): # noinspection PyArgumentList PyUnusedLocal -class Search(BaseMutation): +class Search(Mutation): class Arguments: query = String(required=True) diff --git a/engine/core/models.py b/engine/core/models.py index 91d6b0cd..fd23abff 100644 --- a/engine/core/models.py +++ b/engine/core/models.py @@ -79,9 +79,6 @@ class AttributeGroup(ExportModelOperationsMixin("attribute_group"), NiceModel): ) is_publicly_visible = True - attributes: QuerySet["Attribute"] - children: QuerySet["Self"] - parent = ForeignKey( "self", on_delete=CASCADE, @@ -164,15 +161,7 @@ class Vendor(ExportModelOperationsMixin("vendor"), NiceModel): def __str__(self) -> str: return self.name - def save( - self, - *, - force_insert: bool = False, - force_update: bool = False, - using: str | None = None, - update_fields: list[str] | tuple[str, ...] | None = None, - update_modified: bool = True, - ) -> None: + def save(self, *args, **kwargs) -> None: users = self.users.filter(is_active=True) users = users.exclude(attributes__icontains="is_business") if users.count() > 0: @@ -182,11 +171,11 @@ class Vendor(ExportModelOperationsMixin("vendor"), NiceModel): user.attributes.update({"is_business": True}) user.save() return super().save( - force_insert=force_insert, - force_update=force_update, - using=using, - update_fields=update_fields, - update_modified=update_modified, + force_insert=kwargs.get("force_insert", False), + force_update=kwargs.get("force_update", False), + using=kwargs.get("using"), + update_fields=kwargs.get("update_fields"), + update_modified=kwargs.get("update_modified", True), ) class Meta: @@ -704,7 +693,9 @@ class Product(ExportModelOperationsMixin("product"), NiceModel): @cached_property def discount_price(self) -> float | None: - return self.promos.first().discount_percent if self.promos.exists() else None + return ( + self.promos.first().discount_percent if self.promos.exists() else None + ) # ty:ignore[possibly-missing-attribute] @property def rating(self) -> float: diff --git a/engine/core/views.py b/engine/core/views.py index e7622e32..03a8e524 100644 --- a/engine/core/views.py +++ b/engine/core/views.py @@ -4,7 +4,6 @@ import os import traceback from contextlib import suppress from datetime import date, timedelta -from typing import Any import requests from constance import config @@ -16,7 +15,6 @@ from django.core.exceptions import BadRequest from django.db.models import Count, F, Sum from django.http import ( FileResponse, - Http404, HttpRequest, HttpResponse, HttpResponseRedirect, @@ -30,6 +28,7 @@ from django.utils.http import urlsafe_base64_decode from django.utils.timezone import now as tz_now from django.utils.translation import gettext_lazy as _ from django.views.decorators.cache import cache_page +from django.views.decorators.csrf import csrf_exempt from django.views.decorators.vary import vary_on_headers from django_ratelimit.decorators import ratelimit from drf_spectacular.utils import extend_schema_view @@ -404,14 +403,13 @@ class DownloadDigitalAssetView(APIView): ) -def favicon_view( - request: HttpRequest, *args: list[Any], **kwargs: dict[str, Any] -) -> HttpResponse | FileResponse | None: +@csrf_exempt +def favicon_view(request: HttpRequest) -> HttpResponse | FileResponse: try: favicon_path = os.path.join(settings.BASE_DIR, "static/favicon.png") return FileResponse(open(favicon_path, "rb"), content_type="image/x-icon") - except FileNotFoundError as fnfe: - raise Http404(_("favicon not found")) from fnfe + except FileNotFoundError: + return HttpResponse(status=404, content=_("favicon not found")) # noinspection PyTypeChecker diff --git a/engine/payments/graphene/mutations.py b/engine/payments/graphene/mutations.py index 42d71fb7..85873460 100644 --- a/engine/payments/graphene/mutations.py +++ b/engine/payments/graphene/mutations.py @@ -1,13 +1,13 @@ import graphene +from graphene import Mutation from rest_framework.exceptions import PermissionDenied -from engine.core.graphene import BaseMutation from engine.core.utils.messages import permission_denied_message from engine.payments.graphene.object_types import TransactionType from engine.payments.models import Transaction -class Deposit(BaseMutation): +class Deposit(Mutation): class Arguments: amount = graphene.Float(required=True) diff --git a/engine/vibes_auth/graphene/mutations.py b/engine/vibes_auth/graphene/mutations.py index 9b914c71..04a2e1a3 100644 --- a/engine/vibes_auth/graphene/mutations.py +++ b/engine/vibes_auth/graphene/mutations.py @@ -11,11 +11,10 @@ from django.db import IntegrityError from django.http import Http404 from django.utils.http import urlsafe_base64_decode from django.utils.translation import gettext_lazy as _ -from graphene import UUID, Boolean, Field, List, String +from graphene import UUID, Boolean, Field, List, Mutation, String from graphene.types.generic import GenericScalar from graphene_file_upload.scalars import Upload -from engine.core.graphene import BaseMutation from engine.core.utils.messages import permission_denied_message from engine.core.utils.security import is_safe_key from engine.vibes_auth.graphene.object_types import UserType @@ -31,7 +30,7 @@ from engine.vibes_auth.validators import is_valid_email, is_valid_phone_number logger = logging.getLogger(__name__) -class CreateUser(BaseMutation): +class CreateUser(Mutation): class Arguments: email = String(required=True) password = String(required=True) @@ -92,7 +91,7 @@ class CreateUser(BaseMutation): raise BadRequest(str(e)) from e -class UpdateUser(BaseMutation): +class UpdateUser(Mutation): class Arguments: uuid = UUID(required=True) email = String(required=False) @@ -187,7 +186,7 @@ class UpdateUser(BaseMutation): raise BadRequest(str(e)) from e -class DeleteUser(BaseMutation): +class DeleteUser(Mutation): class Arguments: email = String() uuid = UUID() @@ -212,7 +211,7 @@ class DeleteUser(BaseMutation): raise PermissionDenied(permission_denied_message) -class ObtainJSONWebToken(BaseMutation): +class ObtainJSONWebToken(Mutation): class Arguments: email = String(required=True) password = String(required=True) @@ -236,7 +235,7 @@ class ObtainJSONWebToken(BaseMutation): raise PermissionDenied(f"invalid credentials provided: {e!s}") from e -class RefreshJSONWebToken(BaseMutation): +class RefreshJSONWebToken(Mutation): class Arguments: refresh_token = String(required=True) @@ -259,7 +258,7 @@ class RefreshJSONWebToken(BaseMutation): raise PermissionDenied(f"invalid refresh token provided: {e!s}") from e -class VerifyJSONWebToken(BaseMutation): +class VerifyJSONWebToken(Mutation): class Arguments: token = String(required=True) @@ -281,7 +280,7 @@ class VerifyJSONWebToken(BaseMutation): return VerifyJSONWebToken(token_is_valid=False, user=None, detail=detail) -class ActivateUser(BaseMutation): +class ActivateUser(Mutation): class Arguments: uid = String(required=True) token = String(required=True) @@ -311,7 +310,7 @@ class ActivateUser(BaseMutation): return ActivateUser(success=True) -class ResetPassword(BaseMutation): +class ResetPassword(Mutation): class Arguments: email = String(required=True) @@ -330,7 +329,7 @@ class ResetPassword(BaseMutation): return ResetPassword(success=True) -class ConfirmResetPassword(BaseMutation): +class ConfirmResetPassword(Mutation): class Arguments: uid = String(required=True) token = String(required=True) @@ -370,7 +369,7 @@ class ConfirmResetPassword(BaseMutation): raise BadRequest(_(f"something went wrong: {e!s}")) from e -class UploadAvatar(BaseMutation): +class UploadAvatar(Mutation): class Arguments: file = Upload(required=True) diff --git a/engine/vibes_auth/serializers.py b/engine/vibes_auth/serializers.py index 9876ce65..4f865a2c 100644 --- a/engine/vibes_auth/serializers.py +++ b/engine/vibes_auth/serializers.py @@ -233,7 +233,7 @@ class TokenRefreshSerializer(Serializer): if api_settings.ROTATE_REFRESH_TOKENS: if api_settings.BLACKLIST_AFTER_ROTATION: with suppress(AttributeError): - refresh.blacklist() + refresh.blacklist() # ty:ignore[possibly-missing-attribute] refresh.set_jti() refresh.set_exp() diff --git a/engine/vibes_auth/viewsets.py b/engine/vibes_auth/viewsets.py index c0aa7d45..9942a514 100644 --- a/engine/vibes_auth/viewsets.py +++ b/engine/vibes_auth/viewsets.py @@ -2,7 +2,6 @@ import logging import traceback from contextlib import suppress from secrets import compare_digest -from typing import Type from django.conf import settings from django.contrib.auth.password_validation import validate_password @@ -53,7 +52,7 @@ class UserViewSet( queryset = User.objects.filter(is_active=True) permission_classes = [AllowAny] - @action(detail=False, methods=["post"]) + @action(detail=False, methods=("POST",)) @method_decorator( ratelimit(key="ip", rate="4/h" if not settings.DEBUG else "888/h") ) @@ -65,7 +64,7 @@ class UserViewSet( send_reset_password_email_task.delay(user_pk=str(user.uuid)) return Response(status=status.HTTP_200_OK) - @action(detail=True, methods=["put"], permission_classes=[IsAuthenticated]) + @action(detail=True, methods=("PUT",), permission_classes=[IsAuthenticated]) @method_decorator( ratelimit(key="ip", rate="3/h" if not settings.DEBUG else "888/h") ) @@ -81,24 +80,25 @@ class UserViewSet( ) return Response(status=status.HTTP_400_BAD_REQUEST) - @action(detail=False, methods=["post"]) + @action(detail=False, methods=("POST",)) @method_decorator( ratelimit(key="ip", rate="5/h" if not settings.DEBUG else "888/h") ) def confirm_password_reset(self, request: Request, *args, **kwargs) -> Response: try: if not compare_digest( - request.data.get("password"), request.data.get("confirm_password") + str(request.data.get("password")), + str(request.data.get("confirm_password")), ): return Response( {"error": _("passwords do not match")}, status=status.HTTP_400_BAD_REQUEST, ) - uuid = urlsafe_base64_decode(request.data.get("uidb_64")).decode() + uuid = urlsafe_base64_decode(str(request.data.get("uidb_64"))).decode() user = User.objects.get(pk=uuid) - validate_password(password=request.data.get("password"), user=user) + validate_password(password=str(request.data.get("password")), user=user) password_reset_token = PasswordResetTokenGenerator() if not password_reset_token.check_token(user, request.data.get("token")): @@ -139,18 +139,18 @@ class UserViewSet( serializer.data, status=status.HTTP_201_CREATED, headers=headers ) - @action(detail=False, methods=["post"]) + @action(detail=False, methods=("POST",)) @method_decorator( ratelimit(key="ip", rate="5/h" if not settings.DEBUG else "888/h") ) def activate(self, request: Request) -> Response: detail = "" - activation_error: Type[Exception] | None = None + activation_error: Exception | None = None try: - uuid = urlsafe_base64_decode(request.data.get("uidb_64")).decode() + uuid = urlsafe_base64_decode(str(request.data.get("uidb_64"))).decode() user = User.objects.get(pk=uuid) if not user.check_token( - urlsafe_base64_decode(request.data.get("token")).decode() + urlsafe_base64_decode(str(request.data.get("token"))).decode() ): return Response( {"error": _("activation link is invalid!")}, @@ -175,7 +175,7 @@ class UserViewSet( detail = str(traceback.format_exc()) if user is None: if settings.DEBUG: - raise Exception from activation_error + raise Exception from activation_error # ty:ignore[possibly-unresolved-reference] return Response( {"error": _("activation link is invalid!"), "detail": detail}, status=status.HTTP_400_BAD_REQUEST, @@ -187,7 +187,7 @@ class UserViewSet( response_data["access"] = str(tokens.access_token) return Response(response_data, status=status.HTTP_200_OK) - @action(detail=True, methods=["put"], permission_classes=[IsAuthenticated]) + @action(detail=True, methods=("PUT",), permission_classes=[IsAuthenticated]) def merge_recently_viewed(self, request: Request, *args, **kwargs) -> Response: user = self.get_object() if request.user != user: diff --git a/evibes/ftpstorage.py b/evibes/ftpstorage.py deleted file mode 100644 index 54b16ebf..00000000 --- a/evibes/ftpstorage.py +++ /dev/null @@ -1,15 +0,0 @@ -from typing import Any -from urllib.parse import urlparse - -from storages.backends.ftp import FTPStorage - - -class AbsoluteFTPStorage(FTPStorage): - # noinspection PyProtectedMember - # noinspection PyUnresolvedReferences - - def _get_config(self) -> Any: - cfg = super()._get_config() - url = urlparse(self.location) - cfg["path"] = url.path or cfg["path"] - return cfg diff --git a/evibes/middleware.py b/evibes/middleware.py index ab8b81cc..6cc88264 100644 --- a/evibes/middleware.py +++ b/evibes/middleware.py @@ -17,6 +17,7 @@ from django.http import ( HttpResponseForbidden, HttpResponsePermanentRedirect, JsonResponse, + QueryDict, ) from django.middleware.common import CommonMiddleware from django.middleware.locale import LocaleMiddleware @@ -177,10 +178,21 @@ class CamelCaseMiddleWare: self.get_response = get_response def __call__(self, request): - request.GET = underscoreize( - request.GET, + underscoreized_get = underscoreize( + {k: v for k, v in request.GET.lists()}, **JSON_UNDERSCOREIZE, ) + new_get = QueryDict(mutable=True) + for key, value in underscoreized_get.items(): + if isinstance(value, list): + for val in value: + new_get.appendlist(key, val) + else: + new_get[key] = value + + new_get._mutable = False + request.GET = new_get + response = self.get_response(request) return response diff --git a/evibes/pagination.py b/evibes/pagination.py index ad0376cb..bdda17f3 100644 --- a/evibes/pagination.py +++ b/evibes/pagination.py @@ -10,6 +10,8 @@ class CustomPagination(PageNumberPagination): ) def get_paginated_response(self, data: dict[str, Any]) -> Response: + if not self.page: + raise RuntimeError return Response( { "links": { @@ -25,9 +27,7 @@ class CustomPagination(PageNumberPagination): } ) - def get_paginated_response_schema( - self, data_schema: dict[str, Any] - ) -> dict[str, Any]: + def get_paginated_response_schema(self, schema: dict[str, Any]) -> dict[str, Any]: return { "type": "object", "properties": { @@ -63,6 +63,6 @@ class CustomPagination(PageNumberPagination): "example": 100, "description": "Total number of items", }, - "data": data_schema, + "data": schema, }, } diff --git a/evibes/settings/base.py b/evibes/settings/base.py index 39f67cbf..34980f64 100644 --- a/evibes/settings/base.py +++ b/evibes/settings/base.py @@ -348,7 +348,7 @@ LANGUAGE_URL_OVERRIDES: dict[str, str] = { code.split("-")[0]: code for code, _ in LANGUAGES if "-" in code } -CURRENCY_CODE: str = dict(CURRENCIES_BY_LANGUAGES).get(LANGUAGE_CODE) +CURRENCY_CODE: str = dict(CURRENCIES_BY_LANGUAGES).get(LANGUAGE_CODE, "") MODELTRANSLATION_FALLBACK_LANGUAGES: tuple[str, ...] = (LANGUAGE_CODE, "en-us", "de-de") @@ -517,7 +517,7 @@ if getenv("DBBACKUP_HOST") and getenv("DBBACKUP_USER") and getenv("DBBACKUP_PASS STORAGES.update( { "dbbackup": { - "BACKEND": "evibes.ftpstorage.AbsoluteFTPStorage", + "BACKEND": "storages.backends.ftp.FTPStorage", "OPTIONS": { "location": ( f"ftp://{getenv('DBBACKUP_USER')}:{getenv('DBBACKUP_PASS')}@{getenv('DBBACKUP_HOST')}:21/{raw_path}" diff --git a/evibes/settings/drf.py b/evibes/settings/drf.py index c342a153..37473c48 100644 --- a/evibes/settings/drf.py +++ b/evibes/settings/drf.py @@ -1,5 +1,6 @@ from datetime import timedelta from os import getenv +from typing import Any from django.utils.text import format_lazy from django.utils.translation import gettext_lazy as _ @@ -12,7 +13,7 @@ from evibes.settings.base import ( SECRET_KEY, ) -REST_FRAMEWORK: dict[str, str | int | list[str] | tuple[str, ...] | dict[str, bool]] = { +REST_FRAMEWORK: dict[str, Any] = { "DEFAULT_PAGINATION_CLASS": "evibes.pagination.CustomPagination", "PAGE_SIZE": 30, "DEFAULT_AUTHENTICATION_CLASSES": [ @@ -30,11 +31,14 @@ REST_FRAMEWORK: dict[str, str | int | list[str] | tuple[str, ...] | dict[str, bo }, } -JSON_UNDERSCOREIZE = REST_FRAMEWORK.get("JSON_UNDERSCOREIZE", {}) +JSON_UNDERSCOREIZE: dict[str, Any] = REST_FRAMEWORK.get("JSON_UNDERSCOREIZE", ()) + +access_lifetime = timedelta(hours=8) if not DEBUG else timedelta(hours=88) +refresh_lifetime = timedelta(days=8) SIMPLE_JWT: dict[str, timedelta | str | bool] = { - "ACCESS_TOKEN_LIFETIME": timedelta(hours=8) if not DEBUG else timedelta(hours=88), - "REFRESH_TOKEN_LIFETIME": timedelta(days=8), + "ACCESS_TOKEN_LIFETIME": access_lifetime, + "REFRESH_TOKEN_LIFETIME": refresh_lifetime, "ROTATE_REFRESH_TOKENS": True, "BLACKLIST_AFTER_ROTATION": True, "UPDATE_LAST_LOGIN": True, @@ -90,15 +94,14 @@ The API supports multiple response formats: Current API version: %(version)s """) # noqa: E501, F405 -_access_seconds = SIMPLE_JWT.get("ACCESS_TOKEN_LIFETIME").total_seconds() if not DEBUG: - _access_lifetime = int(_access_seconds // 60) + _access_lifetime = int(access_lifetime.total_seconds() // 60) _access_unit = "minutes" else: - _access_lifetime = int(_access_seconds // 3600) + _access_lifetime = int(access_lifetime.total_seconds() // 3600) _access_unit = "hours" -_refresh_hours = int(SIMPLE_JWT.get("REFRESH_TOKEN_LIFETIME").total_seconds() // 3600) +_refresh_hours = int(refresh_lifetime.total_seconds() // 3600) SPECTACULAR_DESCRIPTION = format_lazy( _SPECTACULAR_DESCRIPTION_TEMPLATE, diff --git a/evibes/signal_processors.py b/evibes/signal_processors.py index c35f0f38..6ef0473c 100644 --- a/evibes/signal_processors.py +++ b/evibes/signal_processors.py @@ -1,6 +1,8 @@ from django.db import models from django_elasticsearch_dsl.registries import registry -from django_elasticsearch_dsl.signals import CelerySignalProcessor +from django_elasticsearch_dsl.signals import ( + CelerySignalProcessor, # ty:ignore[possibly-missing-import] +) class SelectiveSignalProcessor(CelerySignalProcessor): diff --git a/evibes/urls.py b/evibes/urls.py index 4edd993a..50ee7969 100644 --- a/evibes/urls.py +++ b/evibes/urls.py @@ -48,6 +48,7 @@ urlpatterns = [ path( r"favicon.ico", favicon_view, + name="favicon", ), path( r"graphql/", diff --git a/evibes/utils/renderers.py b/evibes/utils/renderers.py index d68ec38b..af26e05b 100644 --- a/evibes/utils/renderers.py +++ b/evibes/utils/renderers.py @@ -1,5 +1,5 @@ import re -from typing import Any, MutableMapping +from typing import Any, Collection, MutableMapping from django.utils.module_loading import import_string from drf_orjson_renderer.renderers import ORJSONRenderer @@ -43,12 +43,12 @@ def camelize(obj: Any) -> Any: def camelize_serializer_fields(result, generator, request, public): - ignore_fields = JSON_UNDERSCOREIZE.get("ignore_fields") or () - ignore_keys = JSON_UNDERSCOREIZE.get("ignore_keys") or () + ignore_fields: Collection[Any] = JSON_UNDERSCOREIZE.get("ignore_fields", ()) + ignore_keys: Collection[Any] = JSON_UNDERSCOREIZE.get("ignore_keys", ()) def has_middleware_installed(): try: - from djangorestframework_camel_case.middleware import CamelCaseMiddleWare + from evibes.middleware import CamelCaseMiddleWare except ImportError: return False @@ -104,7 +104,7 @@ def camelize_serializer_fields(result, generator, request, public): class CamelCaseRenderer(ORJSONRenderer): def render( self, data: Any, media_type: str | None = None, renderer_context: Any = None - ) -> bytes: + ) -> bytes: # ty:ignore[invalid-method-override] if data is None: return b"" diff --git a/pyproject.toml b/pyproject.toml index f2002a12..28459778 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -86,9 +86,8 @@ worker = [ "celery-prometheus-exporter==1.7.0", ] linting = [ + "ty==0.0.3", "ruff==0.14.9", - "basedpyright>=1.36.1", - "pyright==1.1.407", "celery-types>=0.23.0", "django-stubs==5.2.8", "djangorestframework-stubs==3.16.6", @@ -112,7 +111,15 @@ python-version = "3.13" [tool.ruff] line-length = 88 target-version = "py312" -exclude = ["media", "static", "storefront"] +exclude = [ + "Dockerfiles", + "monitoring", + "scripts", + "static", + "storefront", + "tmp", + "media", +] [tool.ruff.lint] select = ["E4", "E7", "E9", "F", "B", "Q", "I"] @@ -125,41 +132,25 @@ known-first-party = ["evibes", "engine"] quote-style = "double" indent-style = "space" -[tool.pyright] -typeCheckingMode = "strict" -pythonVersion = "3.12" -useLibraryCodeForTypes = true -reportMissingTypeStubs = true -reportGeneralTypeIssues = false -reportRedeclaration = false -exclude = [ - "**/__pycache__/**", - "**/.venv/**", - "**/.uv/**", - "media/**", - "static/**", - "storefront/**", - "**/migrations/**", -] -extraPaths = ["./evibes", "./engine"] +[tool.ty.environment] +python-version = "3.12" -[tool.basedpyright] -typeCheckingMode = "strict" -pythonVersion = "3.12" -useLibraryCodeForTypes = true -reportMissingTypeStubs = true -reportGeneralTypeIssues = false -reportRedeclaration = false +[tool.ty.terminal] +output-format = "concise" + +[tool.ty.rules] +possibly-unresolved-reference = "warn" + +[[tool.ty.overrides]] exclude = [ - "**/__pycache__/**", - "**/.venv/**", - "**/.uv/**", - "media/**", + "Dockerfiles/**", + "monitoring/**", + "scripts/**", "static/**", "storefront/**", - "**/migrations/**", + "tmp/**", + "media/**", ] -extraPaths = ["./evibes", "./engine"] [tool.django-stubs] django_settings_module = "evibes.settings.__init__" diff --git a/uv.lock b/uv.lock index bc306205..5c6f470e 100644 --- a/uv.lock +++ b/uv.lock @@ -257,18 +257,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, ] -[[package]] -name = "basedpyright" -version = "1.36.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nodejs-wheel-binaries" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/32/29/d42d543a1637e692ac557bfc6d6fcf50e9a7061c1cb4da403378d6a70453/basedpyright-1.36.1.tar.gz", hash = "sha256:20c9a24e2a4c95d5b6d46c78a6b6c7e3dc7cbba227125256431d47c595b15fd4", size = 22834851, upload-time = "2025-12-11T14:55:47.463Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/7f/f0133313bffa303d32aa74468981eb6b2da7fadda6247c9aa0aeab8391b1/basedpyright-1.36.1-py3-none-any.whl", hash = "sha256:3d738484fe9681cdfe35dd98261f30a9a7aec64208bc91f8773a9aaa9b89dd16", size = 11881725, upload-time = "2025-12-11T14:55:43.805Z" }, -] - [[package]] name = "bcrypt" version = "5.0.0" @@ -1420,12 +1408,11 @@ jupyter = [ { name = "jupyter" }, ] linting = [ - { name = "basedpyright" }, { name = "celery-types" }, { name = "django-stubs" }, { name = "djangorestframework-stubs" }, - { name = "pyright" }, { name = "ruff" }, + { name = "ty" }, { name = "types-docutils" }, { name = "types-paramiko" }, { name = "types-pillow" }, @@ -1448,7 +1435,6 @@ worker = [ requires-dist = [ { name = "aiogram", specifier = "==3.23.0" }, { name = "aiosmtpd", specifier = "==1.4.6" }, - { name = "basedpyright", marker = "extra == 'linting'", specifier = ">=1.36.1" }, { name = "celery", marker = "extra == 'worker'", specifier = "==5.6.0" }, { name = "celery-prometheus-exporter", marker = "extra == 'worker'", specifier = "==1.7.0" }, { name = "celery-types", marker = "extra == 'linting'", specifier = ">=0.23.0" }, @@ -1514,7 +1500,6 @@ requires-dist = [ { name = "pygraphviz", marker = "sys_platform != 'win32' and extra == 'graph'", specifier = "==1.14" }, { name = "pyjwt", specifier = "==2.10.1" }, { name = "pymdown-extensions", specifier = "==10.19.1" }, - { name = "pyright", marker = "extra == 'linting'", specifier = "==1.1.407" }, { name = "pytest", specifier = "==9.0.2" }, { name = "pytest-django", specifier = "==4.11.1" }, { name = "python-slugify", specifier = "==8.0.4" }, @@ -1524,6 +1509,7 @@ requires-dist = [ { name = "sentry-sdk", extras = ["django", "celery", "opentelemetry"], specifier = "==2.48.0" }, { name = "six", specifier = "==1.17.0" }, { name = "swapper", specifier = "==1.4.0" }, + { name = "ty", marker = "extra == 'linting'", specifier = "==0.0.3" }, { name = "types-docutils", marker = "extra == 'linting'", specifier = "==0.22.3.20251115" }, { name = "types-paramiko", marker = "extra == 'linting'", specifier = "==4.0.0.20250822" }, { name = "types-pillow", marker = "extra == 'linting'", specifier = "==10.2.0.20240822" }, @@ -2541,31 +2527,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, ] -[[package]] -name = "nodeenv" -version = "1.9.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, -] - -[[package]] -name = "nodejs-wheel-binaries" -version = "24.12.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b9/35/d806c2ca66072e36dc340ccdbeb2af7e4f1b5bcc33f1481f00ceed476708/nodejs_wheel_binaries-24.12.0.tar.gz", hash = "sha256:f1b50aa25375e264697dec04b232474906b997c2630c8f499f4caf3692938435", size = 8058, upload-time = "2025-12-11T21:12:26.856Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/3b/9d6f044319cd5b1e98f07c41e2465b58cadc1c9c04a74c891578f3be6cb5/nodejs_wheel_binaries-24.12.0-py2.py3-none-macosx_13_0_arm64.whl", hash = "sha256:7564ddea0a87eff34e9b3ef71764cc2a476a8f09a5cccfddc4691148b0a47338", size = 55125859, upload-time = "2025-12-11T21:11:58.132Z" }, - { url = "https://files.pythonhosted.org/packages/48/a5/f5722bf15c014e2f476d7c76bce3d55c341d19122d8a5d86454db32a61a4/nodejs_wheel_binaries-24.12.0-py2.py3-none-macosx_13_0_x86_64.whl", hash = "sha256:8ff929c4669e64613ceb07f5bbd758d528c3563820c75d5de3249eb452c0c0ab", size = 55309035, upload-time = "2025-12-11T21:12:01.754Z" }, - { url = "https://files.pythonhosted.org/packages/a9/61/68d39a6f1b5df67805969fd2829ba7e80696c9af19537856ec912050a2be/nodejs_wheel_binaries-24.12.0-py2.py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:6ebacefa8891bc456ad3655e6bce0af7e20ba08662f79d9109986faeb703fd6f", size = 59661017, upload-time = "2025-12-11T21:12:05.268Z" }, - { url = "https://files.pythonhosted.org/packages/16/a1/31aad16f55a5e44ca7ea62d1367fc69f4b6e1dba67f58a0a41d0ed854540/nodejs_wheel_binaries-24.12.0-py2.py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:3292649a03682ccbfa47f7b04d3e4240e8c46ef04dc941b708f20e4e6a764f75", size = 60159770, upload-time = "2025-12-11T21:12:08.696Z" }, - { url = "https://files.pythonhosted.org/packages/c4/5e/b7c569aa1862690ca4d4daf3a64cafa1ea6ce667a9e3ae3918c56e127d9b/nodejs_wheel_binaries-24.12.0-py2.py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:7fb83df312955ea355ba7f8cbd7055c477249a131d3cb43b60e4aeb8f8c730b1", size = 61653561, upload-time = "2025-12-11T21:12:12.575Z" }, - { url = "https://files.pythonhosted.org/packages/71/87/567f58d7ba69ff0208be849b37be0f2c2e99c69e49334edd45ff44f00043/nodejs_wheel_binaries-24.12.0-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:2473c819448fedd7b036dde236b09f3c8bbf39fbbd0c1068790a0498800f498b", size = 62238331, upload-time = "2025-12-11T21:12:16.143Z" }, - { url = "https://files.pythonhosted.org/packages/6a/9d/c6492188ce8de90093c6755a4a63bb6b2b4efb17094cb4f9a9a49c73ed3b/nodejs_wheel_binaries-24.12.0-py2.py3-none-win_amd64.whl", hash = "sha256:2090d59f75a68079fabc9b86b14df8238b9aecb9577966dc142ce2a23a32e9bb", size = 41342076, upload-time = "2025-12-11T21:12:20.618Z" }, - { url = "https://files.pythonhosted.org/packages/df/af/cd3290a647df567645353feed451ef4feaf5844496ced69c4dcb84295ff4/nodejs_wheel_binaries-24.12.0-py2.py3-none-win_arm64.whl", hash = "sha256:d0c2273b667dd7e3f55e369c0085957b702144b1b04bfceb7ce2411e58333757", size = 39048104, upload-time = "2025-12-11T21:12:23.495Z" }, -] - [[package]] name = "notebook" version = "7.5.1" @@ -3220,19 +3181,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/35/76/c34426d532e4dce7ff36e4d92cb20f4cbbd94b619964b93d24e8f5b5510f/pynacl-1.6.1-cp38-abi3-win_arm64.whl", hash = "sha256:5953e8b8cfadb10889a6e7bd0f53041a745d1b3d30111386a1bb37af171e6daf", size = 183970, upload-time = "2025-11-10T16:02:05.786Z" }, ] -[[package]] -name = "pyright" -version = "1.1.407" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nodeenv" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a6/1b/0aa08ee42948b61745ac5b5b5ccaec4669e8884b53d31c8ec20b2fcd6b6f/pyright-1.1.407.tar.gz", hash = "sha256:099674dba5c10489832d4a4b2d302636152a9a42d317986c38474c76fe562262", size = 4122872, upload-time = "2025-10-24T23:17:15.145Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/93/b69052907d032b00c40cb656d21438ec00b3a471733de137a3f65a49a0a0/pyright-1.1.407-py3-none-any.whl", hash = "sha256:6dd419f54fcc13f03b52285796d65e639786373f433e243f8b94cf93a7444d21", size = 5997008, upload-time = "2025-10-24T23:17:13.159Z" }, -] - [[package]] name = "pytest" version = "9.0.2" @@ -3762,6 +3710,31 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, ] +[[package]] +name = "ty" +version = "0.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/cd/aee86c0da3240960d6b7e807f3a41c89bae741495d81ca303200b0103dc9/ty-0.0.3.tar.gz", hash = "sha256:831259e22d3855436701472d4c0da200cd45041bc677eae79415d684f541de8a", size = 4769098, upload-time = "2025-12-18T02:16:49.773Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/ef/2d0d18e8fe6b673d3e1ea642f18404d7edfa9d08310f7203e8f0e7dc862e/ty-0.0.3-py3-none-linux_armv6l.whl", hash = "sha256:cd035bb75acecb78ac1ba8c4cc696f57a586e29d36e84bd691bc3b5b8362794c", size = 9763890, upload-time = "2025-12-18T02:16:56.879Z" }, + { url = "https://files.pythonhosted.org/packages/bb/67/0ae31574619a7264df8cf8e641f246992db22ac1720c2a72953aa31cbe61/ty-0.0.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7708eaf73485e263efc7ef339f8e4487d3f5885779edbeec504fd72e4521c376", size = 9558276, upload-time = "2025-12-18T02:16:45.453Z" }, + { url = "https://files.pythonhosted.org/packages/d7/f7/3b9c033e80910972fca3783e4a52ba9cb7cd5c8b6828a87986646d64082b/ty-0.0.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3113a633f46ec789f6df675b7afc5d3ab20c247c92ae4dbb9aa5b704768c18b2", size = 9094451, upload-time = "2025-12-18T02:17:01.155Z" }, + { url = "https://files.pythonhosted.org/packages/9a/29/9a90ed6bef00142a088965100b5e0a5d11805b9729c151ca598331bbd92b/ty-0.0.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a451f3f73a04bf18e551b1ebebb79b20fac5f09740a353f7e07b5f607b217c4f", size = 9568049, upload-time = "2025-12-18T02:16:28.643Z" }, + { url = "https://files.pythonhosted.org/packages/2f/ab/8daeb12912c2de8a3154db652931f4ad0d27c555faebcaf34af08bcfd0d2/ty-0.0.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f6e926b6de0becf0452e1afad75cb71f889a4777cd14269e5447d46c01b2770", size = 9547711, upload-time = "2025-12-18T02:16:54.464Z" }, + { url = "https://files.pythonhosted.org/packages/91/54/f5c1f293f647beda717fee2448cc927ac0d05f66bebe18647680a67e1d67/ty-0.0.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160e7974150f9f359c31d5808214676d1baa05321ab5a7b29fb09f4906dbdb38", size = 9983225, upload-time = "2025-12-18T02:17:05.672Z" }, + { url = "https://files.pythonhosted.org/packages/95/34/065962cfa2e87c10db839512229940a366b8ca1caffa2254a277b1694e5a/ty-0.0.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:726576df31d4e76934ffc64f2939d4a9bc195c7427452c8c159261ad00bd1b5e", size = 10851148, upload-time = "2025-12-18T02:16:38.354Z" }, + { url = "https://files.pythonhosted.org/packages/54/27/e2a8cbfc33999eef882ccd1b816ed615293f96e96f6df60cd12f84b69ca2/ty-0.0.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5014cf4744c94d9ea7b43314199ddaf52564a80b3d006e4ba0fe982bc42f4e8b", size = 10564441, upload-time = "2025-12-18T02:17:03.584Z" }, + { url = "https://files.pythonhosted.org/packages/91/6d/dcce3e222e59477c1f2b3a012cc76428d7032248138cd5544ad7f1cda7bd/ty-0.0.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a9a51dc040f2718725f34ae6ef51fe8f8bd689e21bd3e82f4e71767034928de", size = 10358651, upload-time = "2025-12-18T02:16:26.091Z" }, + { url = "https://files.pythonhosted.org/packages/53/36/b6d0154b83a5997d607bf1238200271c17223f68aab2c778ded5424f9c1e/ty-0.0.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0e6188eddd3a228c449261bb398e8621d33b92c1fc03599afdfad4388327a48", size = 10120457, upload-time = "2025-12-18T02:16:51.864Z" }, + { url = "https://files.pythonhosted.org/packages/cc/46/05dc826674ee1a451406e4c253c71700a6f707bae88b706a4c9e9bba6919/ty-0.0.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5cc55e08d5d18edf1c5051af02456bd359716f07aae0a305e4cefe7735188540", size = 9551642, upload-time = "2025-12-18T02:16:33.518Z" }, + { url = "https://files.pythonhosted.org/packages/64/8a/f90b60d103fd5ec04ecbac091a64e607e6cd37cec6e718bba17cb2022644/ty-0.0.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:34b2d589412a81d1fd6d7fe461353068496c2bf1f7113742bd6d88d1d57ec3ad", size = 9572234, upload-time = "2025-12-18T02:16:31.013Z" }, + { url = "https://files.pythonhosted.org/packages/e8/72/5d3c6d34562d019ba7f3102b2a6d0c8e9e24ef39e70f09645c36a66765b7/ty-0.0.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:8a065eb2959f141fe4adafc14d57463cfa34f6cc4844a4ed56b2dce1a53a419a", size = 9701682, upload-time = "2025-12-18T02:16:41.379Z" }, + { url = "https://files.pythonhosted.org/packages/ef/44/bda434f788b320c9550a48c549e4a8c507e3d8a6ccb04ba5bd098307ba1e/ty-0.0.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e7177421f830a493f98d22f86d940b5a38788866e6062f680881f19be35ba3bb", size = 10213714, upload-time = "2025-12-18T02:16:35.648Z" }, + { url = "https://files.pythonhosted.org/packages/53/a6/b76a787938026c3d209131e5773de32cf6fc41210e0dd97874aafa20f394/ty-0.0.3-py3-none-win32.whl", hash = "sha256:e3e590bf5f33cb118a53c6d5242eedf7924d45517a5ee676c7a16be3a1389d2f", size = 9160441, upload-time = "2025-12-18T02:16:43.404Z" }, + { url = "https://files.pythonhosted.org/packages/fe/db/da60eb8252768323aee0ce69a08b95011088c003f80204b12380fe562fd2/ty-0.0.3-py3-none-win_amd64.whl", hash = "sha256:5af25b1fed8a536ce8072a9ae6a70cd2b559aa5294d43f57071fbdcd31dd2b0e", size = 10034265, upload-time = "2025-12-18T02:16:47.602Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9c/9045cebdfc394c6f8c1e73a99d3aeda1bc639aace392e8ff4d695f1fab73/ty-0.0.3-py3-none-win_arm64.whl", hash = "sha256:29078b3100351a8b37339771615f13b8e4a4ff52b344d33f774f8d1a665a0ca5", size = 9513095, upload-time = "2025-12-18T02:16:59.073Z" }, +] + [[package]] name = "types-cffi" version = "1.17.0.20250915" From dc7f8be9261d867ed2cd73eaf3d3ec8e13cc0889 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Fri, 19 Dec 2025 16:43:39 +0300 Subject: [PATCH 4/9] Features: 1) None; Fixes: 1) Add `# ty: ignore` comments to suppress type errors in multiple files; 2) Correct method argument annotations and definitions to align with type hints; 3) Fix cases of invalid or missing imports and unresolved attributes; Extra: Refactor method definitions to use tuple-based method declarations; replace custom type aliases with `Any`; improve caching utility and error handling logic in utility scripts. --- .gitlab-ci.yml | 2 +- .pre-commit-config.yaml | 18 ----- engine/core/elasticsearch/__init__.py | 13 ++-- engine/core/filters.py | 9 ++- engine/core/graphene/mutations.py | 69 ++++++++-------- engine/core/graphene/object_types.py | 4 +- engine/core/graphene/schema.py | 4 +- .../management/commands/check_translated.py | 2 +- .../management/commands/deepl_translate.py | 21 ++--- .../commands/delete_never_ordered_products.py | 2 +- .../delete_products_by_description.py | 2 +- engine/core/managers.py | 2 +- engine/core/models.py | 5 +- engine/core/serializers/detail.py | 13 ++-- engine/core/serializers/simple.py | 11 +-- engine/core/serializers/utility.py | 2 +- engine/core/sitemaps.py | 8 +- engine/core/templatetags/arith.py | 2 +- engine/core/utils/__init__.py | 2 +- engine/core/utils/caching.py | 19 ++--- engine/core/utils/db.py | 2 +- engine/core/validators.py | 4 +- engine/core/vendors/__init__.py | 4 +- engine/core/views.py | 32 ++++---- engine/core/viewsets.py | 78 +++++++++---------- engine/core/widgets.py | 6 +- engine/payments/admin.py | 4 +- engine/payments/graphene/mutations.py | 2 +- engine/payments/managers.py | 2 +- engine/payments/models.py | 8 +- engine/payments/views.py | 2 +- engine/vibes_auth/admin.py | 6 +- engine/vibes_auth/graphene/mutations.py | 51 ++++++------ engine/vibes_auth/graphene/object_types.py | 8 +- engine/vibes_auth/managers.py | 4 +- engine/vibes_auth/messaging/auth.py | 3 +- engine/vibes_auth/messaging/consumers.py | 6 +- .../messaging/forwarders/telegram.py | 2 +- engine/vibes_auth/messaging/services.py | 4 +- engine/vibes_auth/serializers.py | 4 +- evibes/middleware.py | 7 +- pyproject.toml | 24 +++--- 42 files changed, 245 insertions(+), 228 deletions(-) delete mode 100644 .pre-commit-config.yaml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9346c8bb..0255c9fa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ lint: typecheck: stage: typecheck script: - - uv run ty + - uv run ty check rules: - changes: - "**/*.py" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index 3240e673..00000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,18 +0,0 @@ -repos: - - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.6.9 - hooks: - - id: ruff - name: Ruff (lint & fix) - args: ["--fix", "--exit-non-zero-on-fix"] - files: "\\.(py|pyi)$" - exclude: "^storefront/" - - id: ruff-format - name: Ruff (format) - files: "\\.(py|pyi)$" - exclude: "^storefront/" - -ci: - autofix_commit_msg: "chore(pre-commit): auto-fix issues" - autofix_prs: true - autoupdate_commit_msg: "chore(pre-commit): autoupdate hooks" \ No newline at end of file diff --git a/engine/core/elasticsearch/__init__.py b/engine/core/elasticsearch/__init__.py index ccf39b11..a81cc877 100644 --- a/engine/core/elasticsearch/__init__.py +++ b/engine/core/elasticsearch/__init__.py @@ -201,7 +201,7 @@ def process_query( ) def build_search(idxs: list[str], size: int) -> Search[Hit]: - return ( + result: Search[Hit] = ( # ty: ignore[invalid-assignment] Search(index=idxs) .query(query_base) .extra( @@ -223,6 +223,7 @@ def process_query( ) .extra(size=size, track_total_hits=True) ) + return result resp_cats = None if "categories" in indexes: @@ -290,12 +291,12 @@ def process_query( ] for qx in product_exact_sequence: try: - resp_exact = ( + search_exact = ( Search(index=["products"]) .query(qx) .extra(size=5, track_total_hits=False) - .execute() ) + resp_exact = search_exact.execute() # ty: ignore[possibly-missing-attribute] except NotFoundError: resp_exact = None if resp_exact is not None and getattr(resp_exact, "hits", None): @@ -310,7 +311,7 @@ def process_query( .extra(size=5, track_total_hits=False) ) try: - resp_exact = s_exact.execute() + resp_exact = s_exact.execute() # ty: ignore[possibly-missing-attribute] except NotFoundError: resp_exact = None if resp_exact is not None and getattr(resp_exact, "hits", None): @@ -435,7 +436,7 @@ def _lang_analyzer(lang_code: str) -> str: class ActiveOnlyMixin: def get_queryset(self) -> QuerySet[Any]: - return super().get_queryset().filter(is_active=True) + return super().get_queryset().filter(is_active=True) # type: ignore[misc] def should_index_object(self, obj) -> bool: return getattr(obj, "is_active", False) @@ -666,7 +667,7 @@ def process_system_query( .query(mm) .extra(size=size_per_index, track_total_hits=False) ) - resp = s.execute() + resp = s.execute() # ty: ignore[possibly-missing-attribute] for h in resp.hits: name = getattr(h, "name", None) or getattr(h, "title", None) or "N/A" results[idx].append( diff --git a/engine/core/filters.py b/engine/core/filters.py index b8696e18..839cce17 100644 --- a/engine/core/filters.py +++ b/engine/core/filters.py @@ -650,10 +650,11 @@ class BrandFilter(FilterSet): if not value: return queryset - uuids = [ - brand.get("uuid") - for brand in process_query(query=value, indexes=("brands",))["brands"] - ] + s_result = process_query(query=value, indexes=("brands",)) + if not s_result: + return queryset.none() + + uuids = [brand.get("uuid") for brand in s_result.get("brands", [])] return queryset.filter(uuid__in=uuids) diff --git a/engine/core/graphene/mutations.py b/engine/core/graphene/mutations.py index d32a61ce..7c701cf2 100644 --- a/engine/core/graphene/mutations.py +++ b/engine/core/graphene/mutations.py @@ -104,7 +104,7 @@ class AddOrderProduct(Mutation): product_uuid=product_uuid, attributes=format_attributes(attributes) ) - return AddOrderProduct(order=order) + return AddOrderProduct(order=order) # ty: ignore[unknown-argument] except Order.DoesNotExist as dne: raise Http404(_(f"order {order_uuid} not found")) from dne @@ -133,7 +133,7 @@ class RemoveOrderProduct(Mutation): product_uuid=product_uuid, attributes=format_attributes(attributes) ) - return RemoveOrderProduct(order=order) + return RemoveOrderProduct(order=order) # ty: ignore[unknown-argument] except Order.DoesNotExist as dne: raise Http404(_(f"order {order_uuid} not found")) from dne @@ -157,7 +157,7 @@ class RemoveAllOrderProducts(Mutation): order = order.remove_all_products() - return RemoveAllOrderProducts(order=order) + return RemoveAllOrderProducts(order=order) # ty: ignore[unknown-argument] # noinspection PyUnusedLocal,PyTypeChecker @@ -180,7 +180,7 @@ class RemoveOrderProductsOfAKind(Mutation): order = order.remove_products_of_a_kind(product_uuid=product_uuid) - return RemoveOrderProductsOfAKind(order=order) + return RemoveOrderProductsOfAKind(order=order) # ty: ignore[unknown-argument] # noinspection PyUnusedLocal,PyTypeChecker @@ -229,7 +229,7 @@ class BuyOrder(Mutation): elif order_hr_id: order = Order.objects.get(user=user, human_readable_id=order_hr_id) - instance = order.buy( + instance = order.buy( # ty: ignore[possibly-missing-attribute] force_balance=force_balance, force_payment=force_payment, promocode_uuid=promocode_uuid, @@ -240,9 +240,9 @@ class BuyOrder(Mutation): match str(type(instance)): case "": - return BuyOrder(transaction=instance) + return BuyOrder(transaction=instance) # ty: ignore[unknown-argument] case "": - return BuyOrder(order=instance) + return BuyOrder(order=instance) # ty: ignore[unknown-argument] case _: raise TypeError( _( @@ -294,13 +294,13 @@ class BulkOrderAction(Mutation): # noinspection PyUnreachableCode match action: case "add": - order = order.bulk_add_products(products) + order = order.bulk_add_products(products) # ty: ignore[possibly-missing-attribute] case "remove": - order = order.bulk_remove_products(products) + order = order.bulk_remove_products(products) # ty: ignore[possibly-missing-attribute] case _: raise BadRequest(_("action must be either add or remove")) - return BulkOrderAction(order=order) + return BulkOrderAction(order=order) # ty: ignore[unknown-argument] except Order.DoesNotExist as dne: raise Http404(_(f"order {order_uuid} not found")) from dne @@ -335,13 +335,13 @@ class BulkWishlistAction(Mutation): # noinspection PyUnreachableCode match action: case "add": - wishlist = wishlist.bulk_add_products(products) + wishlist = wishlist.bulk_add_products(products) # ty: ignore[possibly-missing-attribute] case "remove": - wishlist = wishlist.bulk_remove_products(products) + wishlist = wishlist.bulk_remove_products(products) # ty: ignore[possibly-missing-attribute] case _: raise BadRequest(_("action must be either add or remove")) - return BulkWishlistAction(wishlist=wishlist) + return BulkWishlistAction(wishlist=wishlist) # ty: ignore[unknown-argument] except Wishlist.DoesNotExist as dne: raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne @@ -392,7 +392,7 @@ class BuyUnregisteredOrder(Mutation): is_business=is_business, ) # noinspection PyTypeChecker - return BuyUnregisteredOrder(transaction=transaction) + return BuyUnregisteredOrder(transaction=transaction) # ty: ignore[unknown-argument] # noinspection PyUnusedLocal,PyTypeChecker @@ -417,7 +417,7 @@ class AddWishlistProduct(Mutation): wishlist.add_product(product_uuid=product_uuid) - return AddWishlistProduct(wishlist=wishlist) + return AddWishlistProduct(wishlist=wishlist) # ty: ignore[unknown-argument] except Wishlist.DoesNotExist as dne: raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne @@ -445,7 +445,7 @@ class RemoveWishlistProduct(Mutation): wishlist.remove_product(product_uuid=product_uuid) - return RemoveWishlistProduct(wishlist=wishlist) + return RemoveWishlistProduct(wishlist=wishlist) # ty: ignore[unknown-argument] except Wishlist.DoesNotExist as dne: raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne @@ -473,7 +473,7 @@ class RemoveAllWishlistProducts(Mutation): for product in wishlist.products.all(): wishlist.remove_product(product_uuid=product.pk) - return RemoveAllWishlistProducts(wishlist=wishlist) + return RemoveAllWishlistProducts(wishlist=wishlist) # ty: ignore[unknown-argument] except Wishlist.DoesNotExist as dne: raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne @@ -515,9 +515,9 @@ class BuyWishlist(Mutation): ) match str(type(instance)): case "": - return BuyWishlist(transaction=instance) + return BuyWishlist(transaction=instance) # ty: ignore[unknown-argument] case "": - return BuyWishlist(order=instance) + return BuyWishlist(order=instance) # ty: ignore[unknown-argument] case _: raise TypeError( _( @@ -565,9 +565,9 @@ class BuyProduct(Mutation): instance = order.buy(force_balance=force_balance, force_payment=force_payment) match str(type(instance)): case "": - return BuyProduct(transaction=instance) + return BuyProduct(transaction=instance) # ty: ignore[unknown-argument] case "": - return BuyProduct(order=instance) + return BuyProduct(order=instance) # ty: ignore[unknown-argument] case _: raise TypeError( _(f"wrong type came from order.buy() method: {type(instance)!s}") @@ -604,7 +604,7 @@ class FeedbackProductAction(Mutation): feedback = order_product.do_feedback(action="remove") case _: raise BadRequest(_("action must be either `add` or `remove`")) - return FeedbackProductAction(feedback=feedback) + return FeedbackProductAction(feedback=feedback) # ty: ignore[unknown-argument] except OrderProduct.DoesNotExist as dne: raise Http404(_(f"order product {order_product_uuid} not found")) from dne @@ -623,7 +623,7 @@ class CreateAddress(Mutation): user = info.context.user if info.context.user.is_authenticated else None address = Address.objects.create(raw_data=raw_data, user=user) - return CreateAddress(address=address) + return CreateAddress(address=address) # ty: ignore[unknown-argument] # noinspection PyUnusedLocal @@ -644,7 +644,7 @@ class DeleteAddress(Mutation): ): address.delete() # noinspection PyTypeChecker - return DeleteAddress(success=True) + return DeleteAddress(success=True) # ty: ignore[unknown-argument] raise PermissionDenied(permission_denied_message) @@ -671,7 +671,7 @@ class AutocompleteAddress(Mutation): raise BadRequest(f"geocoding error: {e!s}") from e # noinspection PyTypeChecker - return AutocompleteAddress(suggestions=suggestions) + return AutocompleteAddress(suggestions=suggestions) # ty: ignore[unknown-argument] # noinspection PyUnusedLocal @@ -699,10 +699,10 @@ class ContactUs(Mutation): } ) # noinspection PyTypeChecker - return ContactUs(received=True) + return ContactUs(received=True) # ty: ignore[unknown-argument] except Exception as e: # noinspection PyTypeChecker - return ContactUs(received=False, error=str(e)) + return ContactUs(received=False, error=str(e)) # ty: ignore[unknown-argument] # noinspection PyArgumentList PyUnusedLocal @@ -719,12 +719,15 @@ class Search(Mutation): def mutate(parent, info, query): data = process_query(query=query, request=info.context) + if not data: + return Search(results=None) # ty: ignore[unknown-argument] + # noinspection PyTypeChecker - return Search( - results=SearchResultsType( - products=data["products"], - categories=data["categories"], - brands=data["brands"], - posts=data["posts"], + return Search( # ty: ignore[unknown-argument] + results=SearchResultsType( # ty: ignore[unknown-argument] + products=data["products"], # ty: ignore[unknown-argument] + categories=data["categories"], # ty: ignore[unknown-argument] + brands=data["brands"], # ty: ignore[unknown-argument] + posts=data["posts"], # ty: ignore[unknown-argument] ) ) diff --git a/engine/core/graphene/object_types.py b/engine/core/graphene/object_types.py index 161dfd42..d9d02280 100644 --- a/engine/core/graphene/object_types.py +++ b/engine/core/graphene/object_types.py @@ -21,7 +21,9 @@ from graphene import ( ) from graphene.types.generic import GenericScalar from graphene_django import DjangoObjectType -from graphene_django.filter import DjangoFilterConnectionField +from graphene_django.filter import ( + DjangoFilterConnectionField, # ty:ignore[possibly-missing-import] +) from mptt.querysets import TreeQuerySet from engine.core.models import ( diff --git a/engine/core/graphene/schema.py b/engine/core/graphene/schema.py index e87479f9..e48d7606 100644 --- a/engine/core/graphene/schema.py +++ b/engine/core/graphene/schema.py @@ -6,7 +6,9 @@ from django.core.exceptions import PermissionDenied from django.db.models import Case, Exists, IntegerField, OuterRef, Q, Value, When from django.utils import timezone from graphene import Field, List, ObjectType, Schema -from graphene_django.filter import DjangoFilterConnectionField +from graphene_django.filter import ( + DjangoFilterConnectionField, # ty:ignore[possibly-missing-import] +) from engine.blog.filters import PostFilter from engine.blog.graphene.object_types import PostType diff --git a/engine/core/management/commands/check_translated.py b/engine/core/management/commands/check_translated.py index afdcdac3..c3a1eeb6 100644 --- a/engine/core/management/commands/check_translated.py +++ b/engine/core/management/commands/check_translated.py @@ -94,7 +94,7 @@ class Command(BaseCommand): help="Root path prefix to adjust file links", ) - def handle(self, *args: list[Any], **options: dict[str, str | list[str]]) -> None: + def handle(self, *args: Any, **options: Any) -> None: langs: list[str] = options.get("target_languages", []) if "ALL" in langs: langs = list(dict(settings.LANGUAGES).keys()) diff --git a/engine/core/management/commands/deepl_translate.py b/engine/core/management/commands/deepl_translate.py index 395ea2cc..416ba8b2 100644 --- a/engine/core/management/commands/deepl_translate.py +++ b/engine/core/management/commands/deepl_translate.py @@ -106,10 +106,10 @@ class Command(BaseCommand): help="App label for translation, e.g. core, payments. Use ALL to translate all apps.", ) - def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None: - target_langs: list[str] = options["target_languages"] + def handle(self, *args: Any, **options: Any) -> None: + target_langs = options["target_languages"] if "ALL" in target_langs: - target_langs = DEEPL_TARGET_LANGUAGES_MAPPING.keys() + target_langs = list(DEEPL_TARGET_LANGUAGES_MAPPING.keys()) target_apps = set(options["target_apps"]) if "ALL" in target_apps: target_apps = { @@ -122,10 +122,13 @@ class Command(BaseCommand): raise CommandError("DEEPL_AUTH_KEY not set") # attempt to import readline for interactive fill + readline: Any = None try: - import readline + import readline as readline_module + + readline = readline_module except ImportError: - readline = None + pass for target_lang in target_langs: api_code = DEEPL_TARGET_LANGUAGES_MAPPING.get(target_lang) @@ -176,16 +179,16 @@ class Command(BaseCommand): if readline: def hook() -> None: - readline.insert_text(default) # noqa: B023 - readline.redisplay() + readline.insert_text(default) # noqa: B023 # ty: ignore[unresolved-attribute] + readline.redisplay() # ty: ignore[unresolved-attribute] - readline.set_pre_input_hook(hook) + readline.set_pre_input_hook(hook) # ty: ignore[unresolved-attribute] prompt = f"Enter translation for '{e.msgid}': " user_in = input(prompt).strip() if readline: - readline.set_pre_input_hook(None) + readline.set_pre_input_hook(None) # ty: ignore[unresolved-attribute] if user_in: e.msgstr = user_in diff --git a/engine/core/management/commands/delete_never_ordered_products.py b/engine/core/management/commands/delete_never_ordered_products.py index 7f9c8f10..756f84ce 100644 --- a/engine/core/management/commands/delete_never_ordered_products.py +++ b/engine/core/management/commands/delete_never_ordered_products.py @@ -18,7 +18,7 @@ class Command(BaseCommand): help="Chunk size to delete", ) - def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None: + def handle(self, *args: Any, **options: Any) -> None: size: int = options["size"] while True: batch_ids = list( diff --git a/engine/core/management/commands/delete_products_by_description.py b/engine/core/management/commands/delete_products_by_description.py index f249cf4d..8601b5b5 100644 --- a/engine/core/management/commands/delete_products_by_description.py +++ b/engine/core/management/commands/delete_products_by_description.py @@ -18,7 +18,7 @@ class Command(BaseCommand): help="Chunk size to delete", ) - def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None: + def handle(self, *args: Any, **options: Any) -> None: size: int = options["size"] while True: batch_ids = list( diff --git a/engine/core/managers.py b/engine/core/managers.py index 69b24961..6dae05a1 100644 --- a/engine/core/managers.py +++ b/engine/core/managers.py @@ -14,7 +14,7 @@ class AddressManager(models.Manager): if not kwargs.get("raw_data"): raise ValueError("'raw_data' (address string) must be provided.") - params: dict[str, str | int] = { + params: dict[str, str | int | None] = { "format": "json", "addressdetails": 1, "q": kwargs.get("raw_data"), diff --git a/engine/core/models.py b/engine/core/models.py index fd23abff..668e741d 100644 --- a/engine/core/models.py +++ b/engine/core/models.py @@ -693,9 +693,10 @@ class Product(ExportModelOperationsMixin("product"), NiceModel): @cached_property def discount_price(self) -> float | None: + promo = self.promos.first() return ( - self.promos.first().discount_percent if self.promos.exists() else None - ) # ty:ignore[possibly-missing-attribute] + promo.discount_percent if promo else None # ty: ignore[possibly-missing-attribute] + ) @property def rating(self) -> float: diff --git a/engine/core/serializers/detail.py b/engine/core/serializers/detail.py index 2286779c..fc4dbf01 100644 --- a/engine/core/serializers/detail.py +++ b/engine/core/serializers/detail.py @@ -50,7 +50,7 @@ class AttributeGroupDetailSerializer(ModelSerializer): class CategoryDetailListSerializer(ListSerializer): - def to_representation(self, data): + def to_representation(self, data): # ty: ignore[invalid-method-override] items = list(data) with suppress(Exception): Category.bulk_prefetch_filterable_attributes(items) @@ -88,11 +88,12 @@ class CategoryDetailSerializer(ModelSerializer): else: children = obj.children.filter(is_active=True) - return ( - CategorySimpleSerializer(children, many=True, context=self.context).data - if obj.children.exists() - else [] - ) + if obj.children.exists(): + serializer = CategorySimpleSerializer( + children, many=True, context=self.context + ) + return list(serializer.data) # ty: ignore[invalid-return-type] + return [] class BrandDetailSerializer(ModelSerializer): diff --git a/engine/core/serializers/simple.py b/engine/core/serializers/simple.py index 22a7f1c5..f862b01b 100644 --- a/engine/core/serializers/simple.py +++ b/engine/core/serializers/simple.py @@ -59,11 +59,12 @@ class CategorySimpleSerializer(ModelSerializer): else: children = obj.children.filter(is_active=True) - return ( - CategorySimpleSerializer(children, many=True, context=self.context).data - if obj.children.exists() - else [] - ) + if obj.children.exists(): + serializer = CategorySimpleSerializer( + children, many=True, context=self.context + ) + return dict(serializer.data) # ty: ignore[invalid-return-type] + return {} class BrandSimpleSerializer(ModelSerializer): diff --git a/engine/core/serializers/utility.py b/engine/core/serializers/utility.py index ea015f3c..e55c14b8 100644 --- a/engine/core/serializers/utility.py +++ b/engine/core/serializers/utility.py @@ -84,7 +84,7 @@ class DoFeedbackSerializer(Serializer): rating = IntegerField(min_value=1, max_value=10, default=10) action = CharField(default="add") - def validate(self, data: dict[str, Any]) -> dict[str, Any]: + def validate(self, data: dict[str, Any]) -> dict[str, Any]: # ty: ignore[invalid-method-override] if data["action"] == "add" and not all([data["comment"], data["rating"]]): raise ValidationError( _( diff --git a/engine/core/sitemaps.py b/engine/core/sitemaps.py index b43e65c5..2723054f 100644 --- a/engine/core/sitemaps.py +++ b/engine/core/sitemaps.py @@ -51,7 +51,7 @@ class StaticPagesSitemap(SitemapLanguageMixin, Sitemap): return pages - def location(self, obj): + def location(self, obj): # ty: ignore[invalid-method-override] return obj["path"] def lastmod(self, obj): @@ -80,7 +80,7 @@ class ProductSitemap(SitemapLanguageMixin, Sitemap): def lastmod(self, obj): return obj.modified - def location(self, obj): + def location(self, obj): # ty: ignore[invalid-method-override] return f"/{self._lang()}/product/{obj.slug if obj.slug else '404-non-existent-product'}" @@ -105,7 +105,7 @@ class CategorySitemap(SitemapLanguageMixin, Sitemap): def lastmod(self, obj): return obj.modified - def location(self, obj): + def location(self, obj): # ty: ignore[invalid-method-override] return f"/{self._lang()}/catalog/{obj.slug if obj.slug else '404-non-existent-category'}" @@ -130,5 +130,5 @@ class BrandSitemap(SitemapLanguageMixin, Sitemap): def lastmod(self, obj): return obj.modified - def location(self, obj): + def location(self, obj): # ty: ignore[invalid-method-override] return f"/{self._lang()}/brand/{obj.slug if obj.slug else '404-non-existent-brand'}" diff --git a/engine/core/templatetags/arith.py b/engine/core/templatetags/arith.py index a3e000d2..0dbc5537 100644 --- a/engine/core/templatetags/arith.py +++ b/engine/core/templatetags/arith.py @@ -8,7 +8,7 @@ register = template.Library() def _to_float(val: object) -> float: conv: float = 0.0 with suppress(Exception): - return float(val) + return float(val) # ty: ignore[invalid-argument-type] return conv diff --git a/engine/core/utils/__init__.py b/engine/core/utils/__init__.py index bb6e3a41..d802f5b9 100644 --- a/engine/core/utils/__init__.py +++ b/engine/core/utils/__init__.py @@ -48,7 +48,7 @@ def graphene_abs(request: Request | Context, path_or_url: str) -> str: Returns: str: The absolute URI corresponding to the provided path or URL. """ - return str(request.build_absolute_uri(path_or_url)) + return str(request.build_absolute_uri(path_or_url)) # ty: ignore[possibly-missing-attribute] def get_random_code() -> str: diff --git a/engine/core/utils/caching.py b/engine/core/utils/caching.py index 7f1a9fe1..a9a38487 100644 --- a/engine/core/utils/caching.py +++ b/engine/core/utils/caching.py @@ -1,7 +1,7 @@ import json import logging from pathlib import Path -from typing import Any, Type +from typing import Any from django.conf import settings from django.core.cache import cache @@ -10,8 +10,6 @@ from django.utils.translation import gettext_lazy as _ from graphene import Context from rest_framework.request import Request -from engine.vibes_auth.models import User - logger = logging.getLogger(__name__) @@ -19,7 +17,7 @@ def is_safe_cache_key(key: str) -> bool: return key not in settings.UNSAFE_CACHE_KEYS -def get_cached_value(user: Type[User], key: str, default: Any = None) -> Any: +def get_cached_value(user: Any, key: str, default: Any = None) -> Any: if user.is_staff or user.is_superuser: return cache.get(key, default) @@ -30,7 +28,7 @@ def get_cached_value(user: Type[User], key: str, default: Any = None) -> Any: def set_cached_value( - user: Type[User], key: str, value: object, timeout: int = 3600 + user: Any, key: str, value: object, timeout: int = 3600 ) -> None | object: if user.is_staff or user.is_superuser: cache.set(key, value, timeout) @@ -40,17 +38,20 @@ def set_cached_value( def web_cache( - request: Request | Context, key: str, data: dict[str, Any], timeout: int + request: Request | Context, + key: str, + data: dict[str, Any] | None, + timeout: int | None, ) -> dict[str, Any]: if not data and not timeout: - return {"data": get_cached_value(request.user, key)} + return {"data": get_cached_value(request.user, key)} # ty: ignore[possibly-missing-attribute] if (data and not timeout) or (timeout and not data): raise BadRequest(_("both data and timeout are required")) - if not 0 < int(timeout) < 216000: + if timeout is None or not 0 < timeout < 216000: raise BadRequest( _("invalid timeout value, it must be between 0 and 216000 seconds") ) - return {"data": set_cached_value(request.user, key, data, timeout)} + return {"data": set_cached_value(request.user, key, data, timeout)} # ty: ignore[possibly-missing-attribute] def set_default_cache() -> None: diff --git a/engine/core/utils/db.py b/engine/core/utils/db.py index af50feea..6bf67de1 100644 --- a/engine/core/utils/db.py +++ b/engine/core/utils/db.py @@ -28,7 +28,7 @@ class TweakedAutoSlugField(AutoSlugField): if callable(lookup_value): return f"{lookup_value(model_instance)}" - lookup_value_path = lookup_value.split(LOOKUP_SEP) + lookup_value_path = lookup_value.split(LOOKUP_SEP) # ty: ignore[possibly-missing-attribute] attr = model_instance for elem in lookup_value_path: diff --git a/engine/core/validators.py b/engine/core/validators.py index 3b3643d0..fa76ea5c 100644 --- a/engine/core/validators.py +++ b/engine/core/validators.py @@ -11,10 +11,12 @@ def validate_category_image_dimensions( if image: try: - width, height = get_image_dimensions(image.file) + width, height = get_image_dimensions(image.file) # ty: ignore[invalid-argument-type] except (FileNotFoundError, OSError, ValueError): return + if width is None or height is None: + return if int(width) > max_width or int(height) > max_height: raise ValidationError( _( diff --git a/engine/core/vendors/__init__.py b/engine/core/vendors/__init__.py index 4a3d5d3f..e71dbaa1 100644 --- a/engine/core/vendors/__init__.py +++ b/engine/core/vendors/__init__.py @@ -347,7 +347,7 @@ class AbstractVendor: f"No rate found for {currency} in {rates} with probider {provider}..." ) - return float(round(price / rate, 2)) if rate else float(round(price, 2)) + return float(round(price / rate, 2)) if rate else float(round(price, 2)) # ty: ignore[unsupported-operator] @staticmethod def round_price_marketologically(price: float) -> float: @@ -582,7 +582,7 @@ class AbstractVendor: return av - def check_updatable(self, product: Product): + def check_updatable(self, product: Product) -> None: if not product.is_updatable: raise ProductUnapdatableError("Product %s is not updatable", product.sku) diff --git a/engine/core/views.py b/engine/core/views.py index 03a8e524..28816274 100644 --- a/engine/core/views.py +++ b/engine/core/views.py @@ -136,7 +136,7 @@ class CustomSpectacularAPIView(SpectacularAPIView): class CustomSwaggerView(SpectacularSwaggerView): def get_context_data(self, **kwargs): # noinspection PyUnresolvedReferences - context = super().get_context_data(**kwargs) + context = super().get_context_data(**kwargs) # ty: ignore[unresolved-attribute] context["script_url"] = self.request.build_absolute_uri() return context @@ -144,7 +144,7 @@ class CustomSwaggerView(SpectacularSwaggerView): class CustomRedocView(SpectacularRedocView): def get_context_data(self, **kwargs): # noinspection PyUnresolvedReferences - context = super().get_context_data(**kwargs) + context = super().get_context_data(**kwargs) # ty: ignore[unresolved-attribute] context["script_url"] = self.request.build_absolute_uri() return context @@ -207,7 +207,7 @@ class CacheOperatorView(APIView): return Response( data=web_cache( request, - request.data.get("key"), + request.data.get("key") or "", # ty: ignore[invalid-argument-type] request.data.get("data", {}), request.data.get("timeout"), ), @@ -413,10 +413,12 @@ def favicon_view(request: HttpRequest) -> HttpResponse | FileResponse: # noinspection PyTypeChecker -favicon_view.__doc__ = _( - "Handles requests for the favicon of a website.\n" - "This function attempts to serve the favicon file located in the static directory of the project. " - "If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." +favicon_view.__doc__ = str( + _( # ty: ignore[invalid-assignment] + "Handles requests for the favicon of a website.\n" + "This function attempts to serve the favicon file located in the static directory of the project. " + "If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." + ) ) @@ -425,11 +427,13 @@ def index(request: HttpRequest, *args, **kwargs) -> HttpResponse | HttpResponseR # noinspection PyTypeChecker -index.__doc__ = _( - "Redirects the request to the admin index page. " - "The function handles incoming HTTP requests and redirects them to the Django " - "admin interface index page. It uses Django's `redirect` function for handling " - "the HTTP redirection." +index.__doc__ = str( + _( # ty: ignore[invalid-assignment] + "Redirects the request to the admin index page. " + "The function handles incoming HTTP requests and redirects them to the Django " + "admin interface index page. It uses Django's `redirect` function for handling " + "the HTTP redirection." + ) ) @@ -438,7 +442,7 @@ def version(request: HttpRequest, *args, **kwargs) -> HttpResponse: # noinspection PyTypeChecker -version.__doc__ = _("Returns current version of the eVibes. ") +version.__doc__ = str(_("Returns current version of the eVibes. ")) # ty: ignore[invalid-assignment] def dashboard_callback(request: HttpRequest, context: Context) -> Context: @@ -863,4 +867,4 @@ def dashboard_callback(request: HttpRequest, context: Context) -> Context: return context -dashboard_callback.__doc__ = _("Returns custom variables for Dashboard. ") +dashboard_callback.__doc__ = str(_("Returns custom variables for Dashboard. ")) # ty: ignore[invalid-assignment] diff --git a/engine/core/viewsets.py b/engine/core/viewsets.py index 224d76d7..3ea81fbf 100644 --- a/engine/core/viewsets.py +++ b/engine/core/viewsets.py @@ -1,6 +1,6 @@ import logging import uuid -from typing import Type +from typing import Any, Type from uuid import UUID from django.conf import settings @@ -147,7 +147,7 @@ class EvibesViewSet(ModelViewSet): additional: dict[str, str] = {} permission_classes = [EvibesPermission] - def get_serializer_class(self) -> Type[Serializer]: + def get_serializer_class(self) -> Type[Any]: # ty: ignore[invalid-return-type] # noinspection PyTypeChecker return self.action_serializer_classes.get( self.action, super().get_serializer_class() @@ -256,14 +256,14 @@ class CategoryViewSet(EvibesViewSet): def get_queryset(self): qs = super().get_queryset() - if self.request.user.has_perm("core.view_category"): + if self.request.user.has_perm("core.view_category"): # ty:ignore[possibly-missing-attribute] return qs return qs.filter(is_active=True) # noinspection PyUnusedLocal @action( detail=True, - methods=["get"], + methods=("GET",), url_path="meta", permission_classes=[ AllowAny, @@ -385,7 +385,7 @@ class BrandViewSet(EvibesViewSet): def get_queryset(self): queryset = Brand.objects.all() - if self.request.user.has_perm("view_category"): + if self.request.user.has_perm("view_category"): # ty:ignore[possibly-missing-attribute] queryset = queryset.prefetch_related("categories") else: queryset = queryset.prefetch_related( @@ -397,7 +397,7 @@ class BrandViewSet(EvibesViewSet): # noinspection PyUnusedLocal @action( detail=True, - methods=["get"], + methods=("GET",), url_path="meta", permission_classes=[ AllowAny, @@ -485,7 +485,7 @@ class ProductViewSet(EvibesViewSet): qs = qs.select_related("brand", "category") - if self.request.user.has_perm("core.view_product"): + if self.request.user.has_perm("core.view_product"): # ty:ignore[possibly-missing-attribute] return qs active_stocks = Stock.objects.filter( @@ -529,19 +529,19 @@ class ProductViewSet(EvibesViewSet): return obj # noinspection PyUnusedLocal - @action(detail=True, methods=["get"], url_path="feedbacks") + @action(detail=True, methods=("GET",), url_path="feedbacks") @method_decorator(ratelimit(key="ip", rate="2/s" if not settings.DEBUG else "44/s")) def feedbacks(self, request: Request, *args, **kwargs) -> Response: product = self.get_object() qs = Feedback.objects.filter(order_product__product=product) - if not request.user.has_perm("core.view_feedback"): + if not request.user.has_perm("core.view_feedback"): # ty:ignore[possibly-missing-attribute] qs = qs.filter(is_active=True) return Response(data=FeedbackSimpleSerializer(qs, many=True).data) # noinspection PyUnusedLocal @action( detail=True, - methods=["get"], + methods=("GET",), url_path="meta", permission_classes=[ AllowAny, @@ -640,7 +640,7 @@ class FeedbackViewSet(EvibesViewSet): def get_queryset(self): qs = super().get_queryset() - if self.request.user.has_perm("core.view_feedback"): + if self.request.user.has_perm("core.view_feedback"): # ty:ignore[possibly-missing-attribute] return qs return qs.filter(is_active=True) @@ -684,7 +684,7 @@ class OrderViewSet(EvibesViewSet): if not user.is_authenticated: return qs.filter(user__isnull=True) - if user.has_perm("core.view_order"): + if user.has_perm("core.view_order"): # ty:ignore[possibly-missing-attribute] return qs return qs.filter(user=user) @@ -703,7 +703,7 @@ class OrderViewSet(EvibesViewSet): self.check_object_permissions(self.request, obj) return obj - @action(detail=False, methods=["get"], url_path="current") + @action(detail=False, methods=("GET",), url_path="current") @method_decorator(ratelimit(key="ip", rate="1/s" if not settings.DEBUG else "44/s")) def current(self, request: Request, *args, **kwargs) -> Response: if not request.user.is_authenticated: @@ -717,7 +717,7 @@ class OrderViewSet(EvibesViewSet): data=OrderDetailSerializer(order).data, ) - @action(detail=True, methods=["post"], url_path="buy") + @action(detail=True, methods=("POST",), url_path="buy") @method_decorator(ratelimit(key="ip", rate="1/s" if not settings.DEBUG else "44/s")) def buy(self, request: Request, *args, **kwargs) -> Response: serializer = BuyOrderSerializer(data=request.data) @@ -762,7 +762,7 @@ class OrderViewSet(EvibesViewSet): except Exception as e: return Response(status=status.HTTP_400_BAD_REQUEST, data={"detail": str(e)}) - @action(detail=False, methods=["post"], url_path="buy_unregistered") + @action(detail=False, methods=("POST",), url_path="buy_unregistered") @method_decorator( ratelimit(key="ip", rate="10/h" if not settings.DEBUG else "888/h") ) @@ -795,7 +795,7 @@ class OrderViewSet(EvibesViewSet): except Exception as e: return Response(status=status.HTTP_400_BAD_REQUEST, data={"detail": str(e)}) - @action(detail=True, methods=["post"], url_path="add_order_product") + @action(detail=True, methods=("POST",), url_path="add_order_product") @method_decorator(ratelimit(key="ip", rate="1/s" if not settings.DEBUG else "44/s")) def add_order_product(self, request: Request, *args, **kwargs) -> Response: serializer = AddOrderProductSerializer(data=request.data) @@ -803,7 +803,7 @@ class OrderViewSet(EvibesViewSet): try: order = self.get_object() if not ( - request.user.has_perm("core.add_orderproduct") + request.user.has_perm("core.add_orderproduct") # ty:ignore[possibly-missing-attribute] or request.user == order.user ): raise PermissionDenied(permission_denied_message) @@ -824,7 +824,7 @@ class OrderViewSet(EvibesViewSet): status=status.HTTP_400_BAD_REQUEST, data={"detail": str(ve)} ) - @action(detail=True, methods=["post"], url_path="remove_order_product") + @action(detail=True, methods=("POST",), url_path="remove_order_product") @method_decorator(ratelimit(key="ip", rate="1/s" if not settings.DEBUG else "44/s")) def remove_order_product(self, request: Request, *args, **kwargs) -> Response: serializer = RemoveOrderProductSerializer(data=request.data) @@ -832,7 +832,7 @@ class OrderViewSet(EvibesViewSet): try: order = self.get_object() if not ( - request.user.has_perm("core.delete_orderproduct") + request.user.has_perm("core.delete_orderproduct") # ty:ignore[possibly-missing-attribute] or request.user == order.user ): raise PermissionDenied(permission_denied_message) @@ -853,7 +853,7 @@ class OrderViewSet(EvibesViewSet): status=status.HTTP_400_BAD_REQUEST, data={"detail": str(ve)} ) - @action(detail=True, methods=["post"], url_path="bulk_add_order_products") + @action(detail=True, methods=("POST",), url_path="bulk_add_order_products") @method_decorator(ratelimit(key="ip", rate="1/s" if not settings.DEBUG else "44/s")) def bulk_add_order_products(self, request: Request, *args, **kwargs) -> Response: serializer = BulkAddOrderProductsSerializer(data=request.data) @@ -862,7 +862,7 @@ class OrderViewSet(EvibesViewSet): try: order = Order.objects.get(uuid=str(lookup_val)) if not ( - request.user.has_perm("core.add_orderproduct") + request.user.has_perm("core.add_orderproduct") # ty:ignore[possibly-missing-attribute] or request.user == order.user ): raise PermissionDenied(permission_denied_message) @@ -880,7 +880,7 @@ class OrderViewSet(EvibesViewSet): status=status.HTTP_400_BAD_REQUEST, data={"detail": str(ve)} ) - @action(detail=True, methods=["post"], url_path="bulk_remove_order_products") + @action(detail=True, methods=("POST",), url_path="bulk_remove_order_products") @method_decorator(ratelimit(key="ip", rate="1/s" if not settings.DEBUG else "44/s")) def bulk_remove_order_products(self, request: Request, *args, **kwargs) -> Response: serializer = BulkRemoveOrderProductsSerializer(data=request.data) @@ -888,7 +888,7 @@ class OrderViewSet(EvibesViewSet): try: order = self.get_object() if not ( - request.user.has_perm("core.delete_orderproduct") + request.user.has_perm("core.delete_orderproduct") # ty:ignore[possibly-missing-attribute] or request.user == order.user ): raise PermissionDenied(permission_denied_message) @@ -932,12 +932,12 @@ class OrderProductViewSet(EvibesViewSet): qs = super().get_queryset() user = self.request.user - if user.has_perm("core.view_orderproduct"): + if user.has_perm("core.view_orderproduct"): # ty:ignore[possibly-missing-attribute] return qs return qs.filter(user=user) - @action(detail=True, methods=["post"], url_path="do_feedback") + @action(detail=True, methods=("POST",), url_path="do_feedback") def do_feedback(self, request: Request, *args, **kwargs) -> Response: serializer = self.get_serializer(request.data) serializer.is_valid(raise_exception=True) @@ -946,7 +946,7 @@ class OrderProductViewSet(EvibesViewSet): if not order_product.order: return Response(status=status.HTTP_404_NOT_FOUND) if not ( - request.user.has_perm("core.change_orderproduct") + request.user.has_perm("core.change_orderproduct") # ty:ignore[possibly-missing-attribute] or request.user == order_product.order.user ): raise PermissionDenied(permission_denied_message) @@ -1008,7 +1008,7 @@ class PromoCodeViewSet(EvibesViewSet): qs = super().get_queryset() user = self.request.user - if user.has_perm("core.view_promocode"): + if user.has_perm("core.view_promocode"): # ty:ignore[possibly-missing-attribute] return qs return qs.filter(user=user) @@ -1064,13 +1064,13 @@ class WishlistViewSet(EvibesViewSet): qs = super().get_queryset() user = self.request.user - if user.has_perm("core.view_wishlist"): + if user.has_perm("core.view_wishlist"): # ty:ignore[possibly-missing-attribute] return qs return qs.filter(user=user) # noinspection PyUnusedLocal - @action(detail=False, methods=["get"], url_path="current") + @action(detail=False, methods=("GET",), url_path="current") def current(self, request: Request, *args, **kwargs) -> Response: if not request.user.is_authenticated: raise PermissionDenied(permission_denied_message) @@ -1083,14 +1083,14 @@ class WishlistViewSet(EvibesViewSet): ) # noinspection PyUnusedLocal - @action(detail=True, methods=["post"], url_path="add_wishlist_product") + @action(detail=True, methods=("POST",), url_path="add_wishlist_product") def add_wishlist_product(self, request: Request, *args, **kwargs) -> Response: serializer = AddWishlistProductSerializer(data=request.data) serializer.is_valid(raise_exception=True) try: wishlist = self.get_object() if not ( - request.user.has_perm("core.change_wishlist") + request.user.has_perm("core.change_wishlist") # ty:ignore[possibly-missing-attribute] or request.user == wishlist.user ): raise PermissionDenied(permission_denied_message) @@ -1106,14 +1106,14 @@ class WishlistViewSet(EvibesViewSet): return Response(status=status.HTTP_404_NOT_FOUND) # noinspection PyUnusedLocal - @action(detail=True, methods=["post"], url_path="remove_wishlist_product") + @action(detail=True, methods=("POST",), url_path="remove_wishlist_product") def remove_wishlist_product(self, request: Request, *args, **kwargs) -> Response: serializer = RemoveWishlistProductSerializer(data=request.data) serializer.is_valid(raise_exception=True) try: wishlist = self.get_object() if not ( - request.user.has_perm("core.change_wishlist") + request.user.has_perm("core.change_wishlist") # ty:ignore[possibly-missing-attribute] or request.user == wishlist.user ): raise PermissionDenied(permission_denied_message) @@ -1129,14 +1129,14 @@ class WishlistViewSet(EvibesViewSet): return Response(status=status.HTTP_404_NOT_FOUND) # noinspection PyUnusedLocal - @action(detail=True, methods=["post"], url_path="bulk_add_wishlist_product") + @action(detail=True, methods=("POST",), url_path="bulk_add_wishlist_product") def bulk_add_wishlist_products(self, request: Request, *args, **kwargs) -> Response: serializer = BulkAddWishlistProductSerializer(data=request.data) serializer.is_valid(raise_exception=True) try: wishlist = self.get_object() if not ( - request.user.has_perm("core.change_wishlist") + request.user.has_perm("core.change_wishlist") # ty:ignore[possibly-missing-attribute] or request.user == wishlist.user ): raise PermissionDenied(permission_denied_message) @@ -1152,7 +1152,7 @@ class WishlistViewSet(EvibesViewSet): return Response(status=status.HTTP_404_NOT_FOUND) # noinspection PyUnusedLocal - @action(detail=True, methods=["post"], url_path="bulk_remove_wishlist_product") + @action(detail=True, methods=("POST",), url_path="bulk_remove_wishlist_product") def bulk_remove_wishlist_products( self, request: Request, *args, **kwargs ) -> Response: @@ -1161,7 +1161,7 @@ class WishlistViewSet(EvibesViewSet): try: wishlist = self.get_object() if not ( - request.user.has_perm("core.change_wishlist") + request.user.has_perm("core.change_wishlist") # ty:ignore[possibly-missing-attribute] or request.user == wishlist.user ): raise PermissionDenied(permission_denied_message) @@ -1201,7 +1201,7 @@ class AddressViewSet(EvibesViewSet): return AddressSerializer def get_queryset(self): - if self.request.user.has_perm("core.view_address"): + if self.request.user.has_perm("core.view_address"): # ty:ignore[possibly-missing-attribute] return super().get_queryset() if self.request.user.is_authenticated: @@ -1234,7 +1234,7 @@ class AddressViewSet(EvibesViewSet): ) # noinspection PyUnusedLocal - @action(detail=False, methods=["get"], url_path="autocomplete") + @action(detail=False, methods=("GET",), url_path="autocomplete") def autocomplete(self, request: Request, *args, **kwargs) -> Response: serializer = AddressAutocompleteInputSerializer(data=request.query_params) serializer.is_valid(raise_exception=True) diff --git a/engine/core/widgets.py b/engine/core/widgets.py index 10098d34..50d47c9b 100644 --- a/engine/core/widgets.py +++ b/engine/core/widgets.py @@ -11,7 +11,7 @@ from django.utils.safestring import SafeString class JSONTableWidget(forms.Widget): template_name = "json_table_widget.html" - def format_value(self, value: str | dict[str, Any]) -> str | dict[str, Any]: + def format_value(self, value: str | dict[str, Any]) -> str | dict[str, Any]: # ty: ignore[invalid-method-override] if isinstance(value, dict): return value try: @@ -40,8 +40,8 @@ class JSONTableWidget(forms.Widget): json_data = {} try: - keys = data.getlist(f"{name}_key") - values = data.getlist(f"{name}_value") + keys = data.getlist(f"{name}_key") # ty: ignore[unresolved-attribute] + values = data.getlist(f"{name}_value") # ty: ignore[unresolved-attribute] for key, value in zip(keys, values, strict=True): if key.strip(): try: diff --git a/engine/payments/admin.py b/engine/payments/admin.py index 222a7cb8..aed702ca 100644 --- a/engine/payments/admin.py +++ b/engine/payments/admin.py @@ -60,5 +60,5 @@ class GatewayAdmin(ActivationActionsMixin, ModelAdmin): def can_be_used(self, obj: Gateway) -> bool: return obj.can_be_used - can_be_used.boolean = True - can_be_used.short_description = _("can be used") + can_be_used.boolean = True # ty: ignore[unresolved-attribute] + can_be_used.short_description = _("can be used") # ty: ignore[unresolved-attribute] diff --git a/engine/payments/graphene/mutations.py b/engine/payments/graphene/mutations.py index 85873460..720b5c66 100644 --- a/engine/payments/graphene/mutations.py +++ b/engine/payments/graphene/mutations.py @@ -21,6 +21,6 @@ class Deposit(Mutation): currency="EUR", ) # noinspection PyTypeChecker - return Deposit(transaction=transaction) + return Deposit(transaction=transaction) # ty: ignore[unknown-argument] else: raise PermissionDenied(permission_denied_message) diff --git a/engine/payments/managers.py b/engine/payments/managers.py index 36a28f90..fd06c513 100644 --- a/engine/payments/managers.py +++ b/engine/payments/managers.py @@ -58,6 +58,6 @@ class GatewayQuerySet(QuerySet): ).order_by("-priority") -class GatewayManager(Manager.from_queryset(GatewayQuerySet)): +class GatewayManager(Manager.from_queryset(GatewayQuerySet)): # ty:ignore[unsupported-base] def get_queryset(self) -> QuerySet: return super().get_queryset().can_be_used() diff --git a/engine/payments/models.py b/engine/payments/models.py index aafed268..27af14f9 100644 --- a/engine/payments/models.py +++ b/engine/payments/models.py @@ -58,7 +58,7 @@ class Transaction(NiceModel): else f"{self.order.attributes.get('customer_email')} | {self.amount}" ) - def save(self, **kwargs): + def save(self, **kwargs): # ty: ignore[invalid-method-override] if len(str(self.amount).split(".")[1]) > 2: self.amount = round(self.amount, 2) super().save(**kwargs) @@ -91,7 +91,7 @@ class Balance(NiceModel): verbose_name = _("balance") verbose_name_plural = _("balances") - def save(self, **kwargs): + def save(self, **kwargs): # ty: ignore[invalid-method-override] if self.amount != 0.0 and len(str(self.amount).split(".")[1]) > 2: self.amount = round(self.amount, 2) super().save(**kwargs) @@ -170,13 +170,13 @@ class Gateway(NiceModel): month_end = timezone.make_aware(datetime.combine(next_month_date, time.min), tz) daily_sum = ( - self.transactions.filter(created__date=today).aggregate( + self.transactions.filter(created__date=today).aggregate( # ty: ignore[unresolved-attribute] total=Sum("amount") )["total"] or 0 ) monthly_sum = ( - self.transactions.filter( + self.transactions.filter( # ty: ignore[unresolved-attribute] created__gte=month_start, created__lt=month_end ).aggregate(total=Sum("amount"))["total"] or 0 diff --git a/engine/payments/views.py b/engine/payments/views.py index 4afd4628..e7c3316a 100644 --- a/engine/payments/views.py +++ b/engine/payments/views.py @@ -44,7 +44,7 @@ class DepositView(APIView): # noinspection PyUnresolvedReferences transaction = Transaction.objects.create( - balance=request.user.payments_balance, + balance=request.user.payments_balance, # ty: ignore[unresolved-attribute] amount=serializer.validated_data["amount"], currency="EUR", ) diff --git a/engine/vibes_auth/admin.py b/engine/vibes_auth/admin.py index 0e2aad00..73c85b5b 100644 --- a/engine/vibes_auth/admin.py +++ b/engine/vibes_auth/admin.py @@ -123,17 +123,17 @@ class UserAdmin(ActivationActionsMixin, BaseUserAdmin, ModelAdmin): ) ) - def save_model( + def save_model( # ty: ignore[invalid-method-override] self, request: HttpRequest, obj: Any, form: UserForm, change: Any ) -> None: if form.cleaned_data.get("attributes") is None: obj.attributes = None if ( form.cleaned_data.get("is_superuser", False) - and not request.user.is_superuser + and not request.user.is_superuser # ty: ignore[possibly-missing-attribute] ): raise PermissionDenied(_("You cannot jump over your head!")) - super().save_model(request, obj, form, change) + super().save_model(request, obj, form, change) # ty: ignore[invalid-argument-type] # noinspection PyUnusedLocal diff --git a/engine/vibes_auth/graphene/mutations.py b/engine/vibes_auth/graphene/mutations.py index 04a2e1a3..948d70ae 100644 --- a/engine/vibes_auth/graphene/mutations.py +++ b/engine/vibes_auth/graphene/mutations.py @@ -80,13 +80,13 @@ class CreateUser(Mutation): else {}, ) # noinspection PyTypeChecker - return CreateUser(success=True) + return CreateUser(success=True) # ty: ignore[unknown-argument] else: # noinspection PyTypeChecker - return CreateUser(success=False) + return CreateUser(success=False) # ty: ignore[unknown-argument] except IntegrityError: # noinspection PyTypeChecker - return CreateUser(success=True) + return CreateUser(success=True) # ty: ignore[unknown-argument] except Exception as e: raise BadRequest(str(e)) from e @@ -175,7 +175,7 @@ class UpdateUser(Mutation): user.save() - return UpdateUser(user=user) + return UpdateUser(user=user) # ty: ignore[unknown-argument] except User.DoesNotExist as dne: name = "User" @@ -203,7 +203,7 @@ class DeleteUser(Mutation): else: raise BadRequest("uuid or email must be specified") # noinspection PyTypeChecker - return DeleteUser(success=True) + return DeleteUser(success=True) # ty: ignore[unknown-argument] except User.DoesNotExist as dne: raise Http404( f"User with the given uuid: {uuid} or email: {email} does not exist." @@ -226,10 +226,11 @@ class ObtainJSONWebToken(Mutation): ) try: serializer.is_valid(raise_exception=True) - return ObtainJSONWebToken( - user=User.objects.get(uuid=serializer.validated_data["user"]), - refresh_token=serializer.validated_data["refresh"], - access_token=serializer.validated_data["access"], + obtained_user = User.objects.get(uuid=serializer.validated_data["user"]) + return ObtainJSONWebToken( # ty: ignore[unknown-argument] + user=obtained_user, # ty: ignore[unknown-argument] + refresh_token=serializer.validated_data["refresh"], # ty: ignore[unknown-argument] + access_token=serializer.validated_data["access"], # ty: ignore[unknown-argument] ) except Exception as e: raise PermissionDenied(f"invalid credentials provided: {e!s}") from e @@ -249,10 +250,11 @@ class RefreshJSONWebToken(Mutation): ) try: serializer.is_valid(raise_exception=True) - return RefreshJSONWebToken( - user=User.objects.get(uuid=serializer.validated_data["user"]), - access_token=serializer.validated_data["access"], - refresh_token=serializer.validated_data["refresh"], + refreshed_user = User.objects.get(uuid=serializer.validated_data["user"]) + return RefreshJSONWebToken( # ty: ignore[unknown-argument] + user=refreshed_user, # ty: ignore[unknown-argument] + access_token=serializer.validated_data["access"], # ty: ignore[unknown-argument] + refresh_token=serializer.validated_data["refresh"], # ty: ignore[unknown-argument] ) except Exception as e: raise PermissionDenied(f"invalid refresh token provided: {e!s}") from e @@ -270,14 +272,19 @@ class VerifyJSONWebToken(Mutation): serializer = TokenVerifySerializer(data={"token": token}, retrieve_user=False) with suppress(Exception): serializer.is_valid(raise_exception=True) + verified_user = User.objects.get(uuid=serializer.validated_data["user"]) # noinspection PyTypeChecker - return VerifyJSONWebToken( - token_is_valid=True, - user=User.objects.get(uuid=serializer.validated_data["user"]), + return VerifyJSONWebToken( # ty: ignore[unknown-argument] + token_is_valid=True, # ty: ignore[unknown-argument] + user=verified_user, # ty: ignore[unknown-argument] ) detail = traceback.format_exc() if settings.DEBUG else "" # noinspection PyTypeChecker - return VerifyJSONWebToken(token_is_valid=False, user=None, detail=detail) + return VerifyJSONWebToken( # ty: ignore[unknown-argument] + token_is_valid=False, # ty: ignore[unknown-argument] + user=None, # ty: ignore[unknown-argument] + detail=detail, # ty: ignore[unknown-argument] + ) class ActivateUser(Mutation): @@ -307,7 +314,7 @@ class ActivateUser(Mutation): raise BadRequest(_(f"something went wrong: {e!s}")) from e # noinspection PyTypeChecker - return ActivateUser(success=True) + return ActivateUser(success=True) # ty: ignore[unknown-argument] class ResetPassword(Mutation): @@ -321,12 +328,12 @@ class ResetPassword(Mutation): user = User.objects.get(email=email) except User.DoesNotExist: # noinspection PyTypeChecker - return ResetPassword(success=False) + return ResetPassword(success=False) # ty: ignore[unknown-argument] send_reset_password_email_task.delay(user_pk=user.uuid) # noinspection PyTypeChecker - return ResetPassword(success=True) + return ResetPassword(success=True) # ty: ignore[unknown-argument] class ConfirmResetPassword(Mutation): @@ -357,7 +364,7 @@ class ConfirmResetPassword(Mutation): user.save() # noinspection PyTypeChecker - return ConfirmResetPassword(success=True) + return ConfirmResetPassword(success=True) # ty: ignore[unknown-argument] except ( TypeError, @@ -386,4 +393,4 @@ class UploadAvatar(Mutation): except Exception as e: raise BadRequest(str(e)) from e - return UploadAvatar(user=info.context.user) + return UploadAvatar(user=info.context.user) # ty: ignore[unknown-argument] diff --git a/engine/vibes_auth/graphene/object_types.py b/engine/vibes_auth/graphene/object_types.py index 5c80c50d..b7f03b70 100644 --- a/engine/vibes_auth/graphene/object_types.py +++ b/engine/vibes_auth/graphene/object_types.py @@ -105,7 +105,7 @@ class UserType(DjangoObjectType): def resolve_wishlist(self: User, info) -> Wishlist | None: if info.context.user == self: - return self.user_related_wishlist + return self.user_related_wishlist # ty: ignore[unresolved-attribute] return None def resolve_balance(self: User, info) -> Balance | None: @@ -126,13 +126,13 @@ class UserType(DjangoObjectType): def resolve_orders(self: User, _info): # noinspection Mypy - return self.orders.all() if self.orders.count() >= 1 else [] + return self.orders.all() if self.orders.count() >= 1 else [] # ty: ignore[unresolved-attribute] def resolve_recently_viewed(self: User, _info, **kwargs): uuid_list = self.recently_viewed or [] if not uuid_list: - return connection_from_array([], kwargs) + return connection_from_array([], kwargs) # ty: ignore[invalid-argument-type] qs = Product.objects.filter(uuid__in=uuid_list) @@ -142,7 +142,7 @@ class UserType(DjangoObjectType): products_by_uuid[u] for u in uuid_list if u in products_by_uuid ] - return connection_from_array(ordered_products, kwargs) + return connection_from_array(ordered_products, kwargs) # ty: ignore[invalid-argument-type] def resolve_groups(self: User, _info): return self.groups.all() if self.groups.count() >= 1 else [] diff --git a/engine/vibes_auth/managers.py b/engine/vibes_auth/managers.py index d9803225..eb5d0cbd 100644 --- a/engine/vibes_auth/managers.py +++ b/engine/vibes_auth/managers.py @@ -87,7 +87,7 @@ class UserManager(BaseUserManager): ): if backend is None: # noinspection PyCallingNonCallable - backends = auth._get_backends(return_tuples=True) + backends = auth._get_backends(return_tuples=True) # ty: ignore[unresolved-attribute] if len(backends) == 1: backend, _ = backends[0] else: @@ -102,7 +102,7 @@ class UserManager(BaseUserManager): else: backend = auth.load_backend(backend) if hasattr(backend, "with_perm"): - return backend.with_perm( + return backend.with_perm( # ty: ignore[call-non-callable] perm, is_active=is_active, include_superusers=include_superusers, diff --git a/engine/vibes_auth/messaging/auth.py b/engine/vibes_auth/messaging/auth.py index f658efe5..1b7d959a 100644 --- a/engine/vibes_auth/messaging/auth.py +++ b/engine/vibes_auth/messaging/auth.py @@ -36,7 +36,8 @@ class JWTAuthMiddleware(BaseMiddleware): def __init__(self, token_str: str): self.META = {"HTTP_X_EVIBES_AUTH": f"Bearer {token_str}"} - user, _ = jwt_auth.authenticate(_Req(token)) + result = jwt_auth.authenticate(_Req(token)) # ty: ignore[invalid-argument-type] + user = result[0] if result else None scope["user"] = user return await super().__call__(scope, receive, send) diff --git a/engine/vibes_auth/messaging/consumers.py b/engine/vibes_auth/messaging/consumers.py index a04bb0fc..add33c96 100644 --- a/engine/vibes_auth/messaging/consumers.py +++ b/engine/vibes_auth/messaging/consumers.py @@ -93,7 +93,7 @@ class UserMessageConsumer(AsyncJsonWebsocketConsumer): async def connect(self) -> None: # noqa: D401 await self.accept() - @extend_ws_schema(**USER_MESSAGE_CONSUMER_SCHEMA) + @extend_ws_schema(**USER_MESSAGE_CONSUMER_SCHEMA) # ty: ignore[invalid-argument-type] async def receive_json(self, content: dict[str, Any], **kwargs) -> None: action = content.get("action") if action == "ping": @@ -145,7 +145,7 @@ class StaffInboxConsumer(AsyncJsonWebsocketConsumer): async def disconnect(self, code: int) -> None: await self.channel_layer.group_discard(STAFF_INBOX_GROUP, self.channel_name) - @extend_ws_schema(**STAFF_INBOX_CONSUMER_SCHEMA) + @extend_ws_schema(**STAFF_INBOX_CONSUMER_SCHEMA) # ty: ignore[invalid-argument-type] async def receive_json(self, content: dict[str, Any], **kwargs) -> None: action = content.get("action") user: User = self.scope.get("user") @@ -295,7 +295,7 @@ class ThreadConsumer(AsyncJsonWebsocketConsumer): f"{THREAD_GROUP_PREFIX}{self.thread_id}", self.channel_name ) - @extend_ws_schema(**THREAD_CONSUMER_SCHEMA) + @extend_ws_schema(**THREAD_CONSUMER_SCHEMA) # ty: ignore[invalid-argument-type] async def receive_json(self, content: dict[str, Any], **kwargs) -> None: action = content.get("action") user: User = self.scope.get("user") diff --git a/engine/vibes_auth/messaging/forwarders/telegram.py b/engine/vibes_auth/messaging/forwarders/telegram.py index 5e523e53..84157b62 100644 --- a/engine/vibes_auth/messaging/forwarders/telegram.py +++ b/engine/vibes_auth/messaging/forwarders/telegram.py @@ -111,7 +111,7 @@ def build_router() -> Router | None: # group check if not staff_user.groups.filter(name=USER_SUPPORT_GROUP_NAME).exists(): return None, None, None - text = message.text.strip() + text = message.text.strip() if message.text else "" if text.lower().startswith("reply "): parts = text.split(maxsplit=2) if len(parts) < 3: diff --git a/engine/vibes_auth/messaging/services.py b/engine/vibes_auth/messaging/services.py index 0c99e08c..8bc9ef07 100644 --- a/engine/vibes_auth/messaging/services.py +++ b/engine/vibes_auth/messaging/services.py @@ -64,7 +64,7 @@ def send_message( if not text or len(text) > 1028: raise ValidationError({"text": _("Message must be 1..1028 characters.")}) if sender_user and not sender_user.is_staff: - if thread.user_id != sender_user.pk: + if thread.user_id != sender_user.pk: # ty: ignore[unresolved-attribute] raise PermissionDenied msg = ChatMessage.objects.create( thread=thread, @@ -131,7 +131,7 @@ def auto_reply(thread: ChatThread) -> None: def claim_thread(thread: ChatThread, staff_user: User) -> ChatThread: if not staff_user.is_staff: raise PermissionDenied - if thread.assigned_to_id and not staff_user.is_superuser: + if thread.assigned_to_id and not staff_user.is_superuser: # ty: ignore[unresolved-attribute] raise PermissionDenied thread.assigned_to = staff_user thread.save(update_fields=["assigned_to", "modified"]) diff --git a/engine/vibes_auth/serializers.py b/engine/vibes_auth/serializers.py index 4f865a2c..e8b4d3e2 100644 --- a/engine/vibes_auth/serializers.py +++ b/engine/vibes_auth/serializers.py @@ -180,7 +180,7 @@ class TokenObtainSerializer(Serializer): @classmethod def get_token(cls, user: AuthUser) -> Token: if cls.token_class is not None: - return cls.token_class.for_user(user) + return cls.token_class.for_user(user) # ty: ignore[invalid-argument-type] else: raise RuntimeError(_("must set token_class attribute on class.")) @@ -200,7 +200,7 @@ class TokenObtainPairSerializer(TokenObtainSerializer): refresh = self.get_token(self.user) data["refresh"] = str(refresh) # noinspection PyUnresolvedReferences - data["access"] = str(refresh.access_token) + data["access"] = str(refresh.access_token) # ty: ignore[unresolved-attribute] data["user"] = ( UserSerializer(self.user).data if self.retrieve_user else self.user.pk ) diff --git a/evibes/middleware.py b/evibes/middleware.py index 6cc88264..a4632511 100644 --- a/evibes/middleware.py +++ b/evibes/middleware.py @@ -3,7 +3,7 @@ import traceback from os import getenv from typing import Any, Callable, cast -from django.contrib.auth.models import AbstractBaseUser, AnonymousUser +from django.contrib.auth.models import AnonymousUser from django.core.exceptions import ( BadRequest, DisallowedHost, @@ -27,6 +27,7 @@ from rest_framework_simplejwt.authentication import JWTAuthentication from rest_framework_simplejwt.exceptions import InvalidToken from sentry_sdk import capture_exception +from engine.vibes_auth.models import User from evibes.settings.drf import JSON_UNDERSCOREIZE from evibes.utils.misc import RatelimitedError from evibes.utils.parsers import underscoreize @@ -80,11 +81,11 @@ class GrapheneJWTAuthorizationMiddleware: return next(root, info, **args) @staticmethod - def get_jwt_user(request: HttpRequest) -> AbstractBaseUser | AnonymousUser: + def get_jwt_user(request: HttpRequest) -> "User" | AnonymousUser: jwt_authenticator = JWTAuthentication() try: user_obj, _ = jwt_authenticator.authenticate(request) # type: ignore[assignment] - user: AbstractBaseUser | AnonymousUser = cast(AbstractBaseUser, user_obj) + user: "User" | AnonymousUser = cast(User, user_obj) except InvalidToken: user = AnonymousUser() except TypeError: diff --git a/pyproject.toml b/pyproject.toml index 28459778..be495925 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -132,16 +132,7 @@ known-first-party = ["evibes", "engine"] quote-style = "double" indent-style = "space" -[tool.ty.environment] -python-version = "3.12" - -[tool.ty.terminal] -output-format = "concise" - -[tool.ty.rules] -possibly-unresolved-reference = "warn" - -[[tool.ty.overrides]] +[tool.ty.src] exclude = [ "Dockerfiles/**", "monitoring/**", @@ -152,5 +143,18 @@ exclude = [ "media/**", ] +[tool.ty.environment] +python-version = "3.12" + +[tool.ty.terminal] +output-format = "concise" + +[tool.ty.rules] +possibly-unresolved-reference = "warn" +possibly-missing-attribute = "warn" +possibly-missing-import = "warn" +unsupported-base = "warn" + + [tool.django-stubs] django_settings_module = "evibes.settings.__init__" From 29fb56be89ff74df30b5123a267a3ccb3f125c73 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Fri, 19 Dec 2025 17:27:36 +0300 Subject: [PATCH 5/9] Features: 1) Add async and sync capabilities to `CamelCaseMiddleWare`; 2) Include OpenAPI support for Enum name overrides in DRF settings; 3) Integrate OpenAPI types in DRF views for improved schema accuracy. Fixes: 1) Correct `lookup_field` to `uuid` in various viewsets; 2) Replace `type=str` with `OpenApiTypes.STR` in path parameters of multiple DRF endpoints; 3) Add missing import `iscoroutinefunction` and `markcoroutinefunction`. Extra: 1) Refactor `__call__` method in `CamelCaseMiddleWare` to separate sync and async logic; 2) Enhance documentation schema responses with precise types in multiple DRF views. --- engine/core/docs/drf/views.py | 7 +++++-- engine/core/docs/drf/viewsets.py | 10 +++++----- engine/core/viewsets.py | 8 ++++---- evibes/middleware.py | 27 +++++++++++++++++++++------ evibes/settings/drf.py | 6 ++++++ 5 files changed, 41 insertions(+), 17 deletions(-) diff --git a/engine/core/docs/drf/views.py b/engine/core/docs/drf/views.py index 361cc4ec..de61f3de 100644 --- a/engine/core/docs/drf/views.py +++ b/engine/core/docs/drf/views.py @@ -1,6 +1,6 @@ from django.conf import settings -from django.http import FileResponse from django.utils.translation import gettext_lazy as _ +from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import OpenApiParameter, extend_schema, inline_serializer from rest_framework import status from rest_framework.fields import CharField, DictField, JSONField, ListField @@ -32,6 +32,9 @@ CUSTOM_OPENAPI_SCHEMA = { "OpenApi3 schema for this API. Format can be selected via content negotiation. " "Language can be selected with Accept-Language and query parameter both." ), + responses={ + status.HTTP_200_OK: OpenApiTypes.OBJECT, + }, ) } @@ -176,7 +179,7 @@ DOWNLOAD_DIGITAL_ASSET_SCHEMA = { ], summary=_("download a digital asset from purchased digital order"), responses={ - status.HTTP_200_OK: FileResponse, + status.HTTP_200_OK: OpenApiTypes.BINARY, status.HTTP_400_BAD_REQUEST: error, }, ) diff --git a/engine/core/docs/drf/viewsets.py b/engine/core/docs/drf/viewsets.py index 42e254a0..5d7e0a67 100644 --- a/engine/core/docs/drf/viewsets.py +++ b/engine/core/docs/drf/viewsets.py @@ -234,7 +234,7 @@ CATEGORY_SCHEMA = { name="lookup_value", location="path", description=_("Category UUID or slug"), - type=str, + type=OpenApiTypes.STR, ), ], responses={status.HTTP_200_OK: CategoryDetailSerializer(), **BASE_ERRORS}, @@ -284,7 +284,7 @@ CATEGORY_SCHEMA = { name="lookup_value", location="path", description=_("Category UUID or slug"), - type=str, + type=OpenApiTypes.STR, ), ], responses={ @@ -369,7 +369,7 @@ ORDER_SCHEMA = { name="lookup_value", location="path", description=_("Order UUID or human-readable id"), - type=str, + type=OpenApiTypes.STR, ), ], responses={status.HTTP_200_OK: OrderDetailSerializer(), **BASE_ERRORS}, @@ -1006,7 +1006,7 @@ BRAND_SCHEMA = { name="lookup_value", location="path", description=_("Brand UUID or slug"), - type=str, + type=OpenApiTypes.STR, ), ], responses={status.HTTP_200_OK: BrandDetailSerializer(), **BASE_ERRORS}, @@ -1049,7 +1049,7 @@ BRAND_SCHEMA = { name="lookup_value", location="path", description=_("Brand UUID or slug"), - type=str, + type=OpenApiTypes.STR, ), ], responses={status.HTTP_200_OK: SeoSnapshotSerializer(), **BASE_ERRORS}, diff --git a/engine/core/viewsets.py b/engine/core/viewsets.py index 3ea81fbf..b06111f9 100644 --- a/engine/core/viewsets.py +++ b/engine/core/viewsets.py @@ -228,7 +228,7 @@ class CategoryViewSet(EvibesViewSet): action_serializer_classes = { "list": CategorySimpleSerializer, } - lookup_field = "lookup_value" + lookup_field = "uuid" lookup_url_kwarg = "lookup_value" additional = {"seo_meta": "ALLOW"} @@ -356,7 +356,7 @@ class BrandViewSet(EvibesViewSet): action_serializer_classes = { "list": BrandSimpleSerializer, } - lookup_field = "lookup_value" + lookup_field = "uuid" lookup_url_kwarg = "lookup_value" additional = {"seo_meta": "ALLOW"} @@ -658,7 +658,7 @@ class OrderViewSet(EvibesViewSet): "performed and enforces permissions accordingly while interacting with order data." ) - lookup_field = "lookup_value" + lookup_field = "uuid" lookup_url_kwarg = "lookup_value" queryset = Order.objects.prefetch_related("order_products").all() filter_backends = [DjangoFilterBackend] @@ -690,7 +690,7 @@ class OrderViewSet(EvibesViewSet): return qs.filter(user=user) def get_object(self): - lookup_val = self.kwargs[self.lookup_field] + lookup_val = self.kwargs[self.lookup_url_kwarg] qs = self.get_queryset() try: diff --git a/evibes/middleware.py b/evibes/middleware.py index a4632511..c2d01e0e 100644 --- a/evibes/middleware.py +++ b/evibes/middleware.py @@ -3,6 +3,7 @@ import traceback from os import getenv from typing import Any, Callable, cast +from asgiref.sync import iscoroutinefunction, markcoroutinefunction from django.contrib.auth.models import AnonymousUser from django.core.exceptions import ( BadRequest, @@ -81,11 +82,11 @@ class GrapheneJWTAuthorizationMiddleware: return next(root, info, **args) @staticmethod - def get_jwt_user(request: HttpRequest) -> "User" | AnonymousUser: + def get_jwt_user(request: HttpRequest) -> User | AnonymousUser: jwt_authenticator = JWTAuthentication() try: user_obj, _ = jwt_authenticator.authenticate(request) # type: ignore[assignment] - user: "User" | AnonymousUser = cast(User, user_obj) + user: User | AnonymousUser = cast(User, user_obj) except InvalidToken: user = AnonymousUser() except TypeError: @@ -175,10 +176,27 @@ class RateLimitMiddleware: class CamelCaseMiddleWare: + async_capable = True + sync_capable = True + def __init__(self, get_response): self.get_response = get_response + if iscoroutinefunction(get_response): + markcoroutinefunction(self) # ty:ignore[invalid-argument-type] - def __call__(self, request): + async def __call__(self, request): + if iscoroutinefunction(self.get_response): + self._underscoreize_request(request) + response = await self.get_response(request) + return response + return self._sync_call(request) + + def _sync_call(self, request): + self._underscoreize_request(request) + response = self.get_response(request) + return response + + def _underscoreize_request(self, request): underscoreized_get = underscoreize( {k: v for k, v in request.GET.lists()}, **JSON_UNDERSCOREIZE, @@ -194,6 +212,3 @@ class CamelCaseMiddleWare: new_get._mutable = False request.GET = new_get - - response = self.get_response(request) - return response diff --git a/evibes/settings/drf.py b/evibes/settings/drf.py index 37473c48..df6c81e1 100644 --- a/evibes/settings/drf.py +++ b/evibes/settings/drf.py @@ -143,4 +143,10 @@ SPECTACULAR_SETTINGS = { "email": "contact@fureunoir.com", "URL": "https://t.me/fureunoir", }, + "ENUM_NAME_OVERRIDES": { + "OrderStatusEnum": "engine.core.choices.ORDER_STATUS_CHOICES", + "OrderProductStatusEnum": "engine.core.choices.ORDER_PRODUCT_STATUS_CHOICES", + "TransactionStatusEnum": "engine.core.choices.TRANSACTION_STATUS_CHOICES", + "ThreadStatusEnum": "engine.vibes_auth.choices.ThreadStatus", + }, } From 95fd17bb43a02ac843db04b52b6dfd30d6dab57a Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Sun, 21 Dec 2025 02:11:51 +0300 Subject: [PATCH 6/9] Features: DRF docs I18N --- .../blog/locale/ar_AR/LC_MESSAGES/django.po | 2 +- .../blog/locale/cs_CZ/LC_MESSAGES/django.po | 2 +- .../blog/locale/da_DK/LC_MESSAGES/django.po | 2 +- .../blog/locale/de_DE/LC_MESSAGES/django.po | 2 +- .../blog/locale/en_GB/LC_MESSAGES/django.po | 2 +- .../blog/locale/en_US/LC_MESSAGES/django.po | 2 +- .../blog/locale/es_ES/LC_MESSAGES/django.po | 2 +- .../blog/locale/fa_IR/LC_MESSAGES/django.po | 2 +- .../blog/locale/fr_FR/LC_MESSAGES/django.po | 2 +- .../blog/locale/he_IL/LC_MESSAGES/django.po | 2 +- .../blog/locale/hi_IN/LC_MESSAGES/django.po | 2 +- .../blog/locale/hr_HR/LC_MESSAGES/django.po | 2 +- .../blog/locale/id_ID/LC_MESSAGES/django.po | 2 +- .../blog/locale/it_IT/LC_MESSAGES/django.po | 2 +- .../blog/locale/ja_JP/LC_MESSAGES/django.po | 2 +- .../blog/locale/kk_KZ/LC_MESSAGES/django.po | 2 +- .../blog/locale/ko_KR/LC_MESSAGES/django.po | 2 +- .../blog/locale/nl_NL/LC_MESSAGES/django.po | 2 +- .../blog/locale/no_NO/LC_MESSAGES/django.po | 2 +- .../blog/locale/pl_PL/LC_MESSAGES/django.po | 2 +- .../blog/locale/pt_BR/LC_MESSAGES/django.po | 2 +- .../blog/locale/ro_RO/LC_MESSAGES/django.po | 2 +- .../blog/locale/ru_RU/LC_MESSAGES/django.po | 2 +- .../blog/locale/sv_SE/LC_MESSAGES/django.po | 2 +- .../blog/locale/th_TH/LC_MESSAGES/django.po | 2 +- .../blog/locale/tr_TR/LC_MESSAGES/django.po | 2 +- .../blog/locale/vi_VN/LC_MESSAGES/django.po | 2 +- .../blog/locale/zh_Hans/LC_MESSAGES/django.po | 2 +- .../core/locale/ar_AR/LC_MESSAGES/django.mo | Bin 108271 -> 108552 bytes .../core/locale/ar_AR/LC_MESSAGES/django.po | 1165 +++++++------ .../core/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 92724 -> 92964 bytes .../core/locale/cs_CZ/LC_MESSAGES/django.po | 1117 +++++++------ .../core/locale/da_DK/LC_MESSAGES/django.mo | Bin 90477 -> 90700 bytes .../core/locale/da_DK/LC_MESSAGES/django.po | 1165 +++++++------ .../core/locale/de_DE/LC_MESSAGES/django.mo | Bin 95741 -> 95990 bytes .../core/locale/de_DE/LC_MESSAGES/django.po | 1273 +++++++------- .../core/locale/en_GB/LC_MESSAGES/django.mo | Bin 87160 -> 87386 bytes .../core/locale/en_GB/LC_MESSAGES/django.po | 1130 +++++++------ .../core/locale/en_US/LC_MESSAGES/django.mo | Bin 87151 -> 87377 bytes .../core/locale/en_US/LC_MESSAGES/django.po | 1127 +++++++------ .../core/locale/es_ES/LC_MESSAGES/django.mo | Bin 93700 -> 93939 bytes .../core/locale/es_ES/LC_MESSAGES/django.po | 1185 +++++++------ .../core/locale/fa_IR/LC_MESSAGES/django.po | 845 +++++----- .../core/locale/fr_FR/LC_MESSAGES/django.mo | Bin 96536 -> 96786 bytes .../core/locale/fr_FR/LC_MESSAGES/django.po | 1244 +++++++------- .../core/locale/he_IL/LC_MESSAGES/django.mo | Bin 100865 -> 101120 bytes .../core/locale/he_IL/LC_MESSAGES/django.po | 1121 +++++++------ .../core/locale/hi_IN/LC_MESSAGES/django.po | 845 +++++----- .../core/locale/hr_HR/LC_MESSAGES/django.po | 845 +++++----- .../core/locale/id_ID/LC_MESSAGES/django.mo | Bin 90734 -> 90973 bytes .../core/locale/id_ID/LC_MESSAGES/django.po | 1155 +++++++------ .../core/locale/it_IT/LC_MESSAGES/django.mo | Bin 94012 -> 94251 bytes .../core/locale/it_IT/LC_MESSAGES/django.po | 1243 +++++++------- .../core/locale/ja_JP/LC_MESSAGES/django.mo | Bin 99295 -> 99557 bytes .../core/locale/ja_JP/LC_MESSAGES/django.po | 1441 +++++++--------- .../core/locale/kk_KZ/LC_MESSAGES/django.po | 845 +++++----- .../core/locale/ko_KR/LC_MESSAGES/django.mo | Bin 93886 -> 94150 bytes .../core/locale/ko_KR/LC_MESSAGES/django.po | 1384 ++++++++-------- .../core/locale/nl_NL/LC_MESSAGES/django.mo | Bin 93549 -> 93788 bytes .../core/locale/nl_NL/LC_MESSAGES/django.po | 1174 +++++++------ .../core/locale/no_NO/LC_MESSAGES/django.mo | Bin 91119 -> 91345 bytes .../core/locale/no_NO/LC_MESSAGES/django.po | 1200 +++++++------- .../core/locale/pl_PL/LC_MESSAGES/django.mo | Bin 92859 -> 93104 bytes .../core/locale/pl_PL/LC_MESSAGES/django.po | 1122 +++++++------ .../core/locale/pt_BR/LC_MESSAGES/django.mo | Bin 93436 -> 93672 bytes .../core/locale/pt_BR/LC_MESSAGES/django.po | 1180 +++++++------ .../core/locale/ro_RO/LC_MESSAGES/django.mo | Bin 95308 -> 95551 bytes .../core/locale/ro_RO/LC_MESSAGES/django.po | 1187 +++++++------ .../core/locale/ru_RU/LC_MESSAGES/django.mo | Bin 123404 -> 123716 bytes .../core/locale/ru_RU/LC_MESSAGES/django.po | 1146 +++++++------ .../core/locale/sv_SE/LC_MESSAGES/django.mo | Bin 91186 -> 91415 bytes .../core/locale/sv_SE/LC_MESSAGES/django.po | 1167 +++++++------ .../core/locale/th_TH/LC_MESSAGES/django.mo | Bin 147349 -> 147731 bytes .../core/locale/th_TH/LC_MESSAGES/django.po | 1462 +++++++++-------- .../core/locale/tr_TR/LC_MESSAGES/django.mo | Bin 93529 -> 93773 bytes .../core/locale/tr_TR/LC_MESSAGES/django.po | 1175 +++++++------ .../core/locale/vi_VN/LC_MESSAGES/django.mo | Bin 105357 -> 105647 bytes .../core/locale/vi_VN/LC_MESSAGES/django.po | 1267 +++++++------- .../core/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 82054 -> 82262 bytes .../core/locale/zh_Hans/LC_MESSAGES/django.po | 843 +++++----- .../locale/ar_AR/LC_MESSAGES/django.po | 2 +- .../locale/cs_CZ/LC_MESSAGES/django.po | 2 +- .../locale/da_DK/LC_MESSAGES/django.po | 2 +- .../locale/de_DE/LC_MESSAGES/django.po | 2 +- .../locale/en_GB/LC_MESSAGES/django.po | 2 +- .../locale/en_US/LC_MESSAGES/django.po | 2 +- .../locale/es_ES/LC_MESSAGES/django.po | 2 +- .../locale/fa_IR/LC_MESSAGES/django.po | 2 +- .../locale/fr_FR/LC_MESSAGES/django.po | 2 +- .../locale/he_IL/LC_MESSAGES/django.po | 2 +- .../locale/hi_IN/LC_MESSAGES/django.po | 2 +- .../locale/hr_HR/LC_MESSAGES/django.po | 2 +- .../locale/id_ID/LC_MESSAGES/django.po | 2 +- .../locale/it_IT/LC_MESSAGES/django.po | 2 +- .../locale/ja_JP/LC_MESSAGES/django.po | 2 +- .../locale/kk_KZ/LC_MESSAGES/django.po | 2 +- .../locale/ko_KR/LC_MESSAGES/django.po | 2 +- .../locale/nl_NL/LC_MESSAGES/django.po | 2 +- .../locale/no_NO/LC_MESSAGES/django.po | 2 +- .../locale/pl_PL/LC_MESSAGES/django.po | 2 +- .../locale/pt_BR/LC_MESSAGES/django.po | 2 +- .../locale/ro_RO/LC_MESSAGES/django.po | 2 +- .../locale/ru_RU/LC_MESSAGES/django.po | 2 +- .../locale/sv_SE/LC_MESSAGES/django.po | 2 +- .../locale/th_TH/LC_MESSAGES/django.po | 2 +- .../locale/tr_TR/LC_MESSAGES/django.po | 2 +- .../locale/vi_VN/LC_MESSAGES/django.po | 2 +- .../locale/zh_Hans/LC_MESSAGES/django.po | 2 +- .../locale/ar_AR/LC_MESSAGES/django.po | 28 +- .../locale/cs_CZ/LC_MESSAGES/django.po | 28 +- .../locale/da_DK/LC_MESSAGES/django.po | 28 +- .../locale/de_DE/LC_MESSAGES/django.po | 28 +- .../locale/en_GB/LC_MESSAGES/django.po | 28 +- .../locale/en_US/LC_MESSAGES/django.po | 28 +- .../locale/es_ES/LC_MESSAGES/django.po | 28 +- .../locale/fa_IR/LC_MESSAGES/django.po | 28 +- .../locale/fr_FR/LC_MESSAGES/django.po | 28 +- .../locale/he_IL/LC_MESSAGES/django.po | 28 +- .../locale/hi_IN/LC_MESSAGES/django.po | 28 +- .../locale/hr_HR/LC_MESSAGES/django.po | 28 +- .../locale/id_ID/LC_MESSAGES/django.po | 28 +- .../locale/it_IT/LC_MESSAGES/django.po | 28 +- .../locale/ja_JP/LC_MESSAGES/django.po | 28 +- .../locale/kk_KZ/LC_MESSAGES/django.po | 28 +- .../locale/ko_KR/LC_MESSAGES/django.po | 28 +- .../locale/nl_NL/LC_MESSAGES/django.po | 28 +- .../locale/no_NO/LC_MESSAGES/django.po | 28 +- .../locale/pl_PL/LC_MESSAGES/django.po | 28 +- .../locale/pt_BR/LC_MESSAGES/django.po | 28 +- .../locale/ro_RO/LC_MESSAGES/django.po | 28 +- .../locale/ru_RU/LC_MESSAGES/django.po | 28 +- .../locale/sv_SE/LC_MESSAGES/django.po | 28 +- .../locale/th_TH/LC_MESSAGES/django.po | 28 +- .../locale/tr_TR/LC_MESSAGES/django.po | 28 +- .../locale/vi_VN/LC_MESSAGES/django.po | 28 +- .../locale/zh_Hans/LC_MESSAGES/django.po | 28 +- evibes/locale/ar_AR/LC_MESSAGES/django.mo | Bin 10177 -> 0 bytes evibes/locale/ar_AR/LC_MESSAGES/django.po | 299 ---- evibes/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 8567 -> 0 bytes evibes/locale/cs_CZ/LC_MESSAGES/django.po | 299 ---- evibes/locale/da_DK/LC_MESSAGES/django.mo | Bin 8253 -> 0 bytes evibes/locale/da_DK/LC_MESSAGES/django.po | 299 ---- evibes/locale/de_DE/LC_MESSAGES/django.mo | Bin 8702 -> 0 bytes evibes/locale/de_DE/LC_MESSAGES/django.po | 302 ---- evibes/locale/en_GB/LC_MESSAGES/django.mo | Bin 8102 -> 0 bytes evibes/locale/en_GB/LC_MESSAGES/django.po | 303 ---- evibes/locale/en_US/LC_MESSAGES/django.mo | Bin 8107 -> 0 bytes evibes/locale/en_US/LC_MESSAGES/django.po | 299 ---- evibes/locale/es_ES/LC_MESSAGES/django.mo | Bin 8741 -> 0 bytes evibes/locale/es_ES/LC_MESSAGES/django.po | 301 ---- evibes/locale/fa_IR/LC_MESSAGES/django.mo | Bin 337 -> 0 bytes evibes/locale/fa_IR/LC_MESSAGES/django.po | 272 --- evibes/locale/fr_FR/LC_MESSAGES/django.mo | Bin 8993 -> 0 bytes evibes/locale/fr_FR/LC_MESSAGES/django.po | 304 ---- evibes/locale/he_IL/LC_MESSAGES/django.mo | Bin 9362 -> 0 bytes evibes/locale/he_IL/LC_MESSAGES/django.po | 262 --- evibes/locale/hi_IN/LC_MESSAGES/django.mo | Bin 337 -> 0 bytes evibes/locale/hi_IN/LC_MESSAGES/django.po | 272 --- evibes/locale/hr_HR/LC_MESSAGES/django.mo | Bin 337 -> 0 bytes evibes/locale/hr_HR/LC_MESSAGES/django.po | 272 --- evibes/locale/id_ID/LC_MESSAGES/django.mo | Bin 8300 -> 0 bytes evibes/locale/id_ID/LC_MESSAGES/django.po | 299 ---- evibes/locale/it_IT/LC_MESSAGES/django.mo | Bin 8664 -> 0 bytes evibes/locale/it_IT/LC_MESSAGES/django.po | 300 ---- evibes/locale/ja_JP/LC_MESSAGES/django.mo | Bin 9146 -> 0 bytes evibes/locale/ja_JP/LC_MESSAGES/django.po | 297 ---- evibes/locale/kk_KZ/LC_MESSAGES/django.mo | Bin 337 -> 0 bytes evibes/locale/kk_KZ/LC_MESSAGES/django.po | 272 --- evibes/locale/ko_KR/LC_MESSAGES/django.mo | Bin 8491 -> 0 bytes evibes/locale/ko_KR/LC_MESSAGES/django.po | 297 ---- evibes/locale/nl_NL/LC_MESSAGES/django.mo | Bin 8377 -> 0 bytes evibes/locale/nl_NL/LC_MESSAGES/django.po | 301 ---- evibes/locale/no_NO/LC_MESSAGES/django.mo | Bin 8307 -> 0 bytes evibes/locale/no_NO/LC_MESSAGES/django.po | 299 ---- evibes/locale/pl_PL/LC_MESSAGES/django.mo | Bin 8625 -> 0 bytes evibes/locale/pl_PL/LC_MESSAGES/django.po | 299 ---- evibes/locale/pt_BR/LC_MESSAGES/django.mo | Bin 8702 -> 0 bytes evibes/locale/pt_BR/LC_MESSAGES/django.po | 300 ---- evibes/locale/ro_RO/LC_MESSAGES/django.mo | Bin 8761 -> 0 bytes evibes/locale/ro_RO/LC_MESSAGES/django.po | 300 ---- evibes/locale/ru_RU/LC_MESSAGES/django.mo | Bin 11202 -> 0 bytes evibes/locale/ru_RU/LC_MESSAGES/django.po | 299 ---- evibes/locale/sv_SE/LC_MESSAGES/django.mo | Bin 8393 -> 0 bytes evibes/locale/sv_SE/LC_MESSAGES/django.po | 299 ---- evibes/locale/th_TH/LC_MESSAGES/django.mo | Bin 12942 -> 0 bytes evibes/locale/th_TH/LC_MESSAGES/django.po | 263 --- evibes/locale/tr_TR/LC_MESSAGES/django.mo | Bin 8745 -> 0 bytes evibes/locale/tr_TR/LC_MESSAGES/django.po | 300 ---- evibes/locale/vi_VN/LC_MESSAGES/django.mo | Bin 9304 -> 0 bytes evibes/locale/vi_VN/LC_MESSAGES/django.po | 265 --- evibes/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 7842 -> 0 bytes evibes/locale/zh_Hans/LC_MESSAGES/django.po | 297 ---- evibes/settings/drf.py | 9 +- 193 files changed, 16345 insertions(+), 24784 deletions(-) delete mode 100644 evibes/locale/ar_AR/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/ar_AR/LC_MESSAGES/django.po delete mode 100644 evibes/locale/cs_CZ/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/cs_CZ/LC_MESSAGES/django.po delete mode 100644 evibes/locale/da_DK/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/da_DK/LC_MESSAGES/django.po delete mode 100644 evibes/locale/de_DE/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/de_DE/LC_MESSAGES/django.po delete mode 100644 evibes/locale/en_GB/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/en_GB/LC_MESSAGES/django.po delete mode 100644 evibes/locale/en_US/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/en_US/LC_MESSAGES/django.po delete mode 100644 evibes/locale/es_ES/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/es_ES/LC_MESSAGES/django.po delete mode 100644 evibes/locale/fa_IR/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/fa_IR/LC_MESSAGES/django.po delete mode 100644 evibes/locale/fr_FR/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/fr_FR/LC_MESSAGES/django.po delete mode 100644 evibes/locale/he_IL/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/he_IL/LC_MESSAGES/django.po delete mode 100644 evibes/locale/hi_IN/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/hi_IN/LC_MESSAGES/django.po delete mode 100644 evibes/locale/hr_HR/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/hr_HR/LC_MESSAGES/django.po delete mode 100644 evibes/locale/id_ID/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/id_ID/LC_MESSAGES/django.po delete mode 100644 evibes/locale/it_IT/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/it_IT/LC_MESSAGES/django.po delete mode 100644 evibes/locale/ja_JP/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/ja_JP/LC_MESSAGES/django.po delete mode 100644 evibes/locale/kk_KZ/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/kk_KZ/LC_MESSAGES/django.po delete mode 100644 evibes/locale/ko_KR/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/ko_KR/LC_MESSAGES/django.po delete mode 100644 evibes/locale/nl_NL/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/nl_NL/LC_MESSAGES/django.po delete mode 100644 evibes/locale/no_NO/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/no_NO/LC_MESSAGES/django.po delete mode 100644 evibes/locale/pl_PL/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/pl_PL/LC_MESSAGES/django.po delete mode 100644 evibes/locale/pt_BR/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/pt_BR/LC_MESSAGES/django.po delete mode 100644 evibes/locale/ro_RO/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/ro_RO/LC_MESSAGES/django.po delete mode 100644 evibes/locale/ru_RU/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/ru_RU/LC_MESSAGES/django.po delete mode 100644 evibes/locale/sv_SE/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/sv_SE/LC_MESSAGES/django.po delete mode 100644 evibes/locale/th_TH/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/th_TH/LC_MESSAGES/django.po delete mode 100644 evibes/locale/tr_TR/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/tr_TR/LC_MESSAGES/django.po delete mode 100644 evibes/locale/vi_VN/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/vi_VN/LC_MESSAGES/django.po delete mode 100644 evibes/locale/zh_Hans/LC_MESSAGES/django.mo delete mode 100644 evibes/locale/zh_Hans/LC_MESSAGES/django.po diff --git a/engine/blog/locale/ar_AR/LC_MESSAGES/django.po b/engine/blog/locale/ar_AR/LC_MESSAGES/django.po index 36928391..f4ee6f16 100644 --- a/engine/blog/locale/ar_AR/LC_MESSAGES/django.po +++ b/engine/blog/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po b/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po index 531b3f07..be8a3c25 100644 --- a/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po +++ b/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/da_DK/LC_MESSAGES/django.po b/engine/blog/locale/da_DK/LC_MESSAGES/django.po index 7ba181c6..c6dd2945 100644 --- a/engine/blog/locale/da_DK/LC_MESSAGES/django.po +++ b/engine/blog/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/de_DE/LC_MESSAGES/django.po b/engine/blog/locale/de_DE/LC_MESSAGES/django.po index 0f899268..72e94f8f 100644 --- a/engine/blog/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/blog/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/en_GB/LC_MESSAGES/django.po b/engine/blog/locale/en_GB/LC_MESSAGES/django.po index 5cd5706f..988fc15f 100644 --- a/engine/blog/locale/en_GB/LC_MESSAGES/django.po +++ b/engine/blog/locale/en_GB/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/en_US/LC_MESSAGES/django.po b/engine/blog/locale/en_US/LC_MESSAGES/django.po index 64661b18..6b015707 100644 --- a/engine/blog/locale/en_US/LC_MESSAGES/django.po +++ b/engine/blog/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/es_ES/LC_MESSAGES/django.po b/engine/blog/locale/es_ES/LC_MESSAGES/django.po index f54145ca..b3c61275 100644 --- a/engine/blog/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/blog/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/fa_IR/LC_MESSAGES/django.po b/engine/blog/locale/fa_IR/LC_MESSAGES/django.po index ca6a33d6..8a32ef7a 100644 --- a/engine/blog/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/blog/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/fr_FR/LC_MESSAGES/django.po b/engine/blog/locale/fr_FR/LC_MESSAGES/django.po index e22e8cfc..757a2d1a 100644 --- a/engine/blog/locale/fr_FR/LC_MESSAGES/django.po +++ b/engine/blog/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/he_IL/LC_MESSAGES/django.po b/engine/blog/locale/he_IL/LC_MESSAGES/django.po index ba976d53..c959eda2 100644 --- a/engine/blog/locale/he_IL/LC_MESSAGES/django.po +++ b/engine/blog/locale/he_IL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/hi_IN/LC_MESSAGES/django.po b/engine/blog/locale/hi_IN/LC_MESSAGES/django.po index bf2876f6..2b04f58f 100644 --- a/engine/blog/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/blog/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/hr_HR/LC_MESSAGES/django.po b/engine/blog/locale/hr_HR/LC_MESSAGES/django.po index ca6a33d6..8a32ef7a 100644 --- a/engine/blog/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/blog/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/id_ID/LC_MESSAGES/django.po b/engine/blog/locale/id_ID/LC_MESSAGES/django.po index 8592e02d..1eeab21c 100644 --- a/engine/blog/locale/id_ID/LC_MESSAGES/django.po +++ b/engine/blog/locale/id_ID/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/it_IT/LC_MESSAGES/django.po b/engine/blog/locale/it_IT/LC_MESSAGES/django.po index a6b7dd83..6831d1d6 100644 --- a/engine/blog/locale/it_IT/LC_MESSAGES/django.po +++ b/engine/blog/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/ja_JP/LC_MESSAGES/django.po b/engine/blog/locale/ja_JP/LC_MESSAGES/django.po index 606de971..88f0fdf8 100644 --- a/engine/blog/locale/ja_JP/LC_MESSAGES/django.po +++ b/engine/blog/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po b/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po index bf2876f6..2b04f58f 100644 --- a/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/ko_KR/LC_MESSAGES/django.po b/engine/blog/locale/ko_KR/LC_MESSAGES/django.po index 5bce4fd5..cda7553b 100644 --- a/engine/blog/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/blog/locale/ko_KR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/nl_NL/LC_MESSAGES/django.po b/engine/blog/locale/nl_NL/LC_MESSAGES/django.po index 5afad4af..f57545af 100644 --- a/engine/blog/locale/nl_NL/LC_MESSAGES/django.po +++ b/engine/blog/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/no_NO/LC_MESSAGES/django.po b/engine/blog/locale/no_NO/LC_MESSAGES/django.po index b279564c..6d1cd090 100644 --- a/engine/blog/locale/no_NO/LC_MESSAGES/django.po +++ b/engine/blog/locale/no_NO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/pl_PL/LC_MESSAGES/django.po b/engine/blog/locale/pl_PL/LC_MESSAGES/django.po index dbff05c4..48d3271e 100644 --- a/engine/blog/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/blog/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/pt_BR/LC_MESSAGES/django.po b/engine/blog/locale/pt_BR/LC_MESSAGES/django.po index c092e9e6..555d7381 100644 --- a/engine/blog/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/blog/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/ro_RO/LC_MESSAGES/django.po b/engine/blog/locale/ro_RO/LC_MESSAGES/django.po index f44050e4..6643ee9b 100644 --- a/engine/blog/locale/ro_RO/LC_MESSAGES/django.po +++ b/engine/blog/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/ru_RU/LC_MESSAGES/django.po b/engine/blog/locale/ru_RU/LC_MESSAGES/django.po index 91d3c813..f4e2822e 100644 --- a/engine/blog/locale/ru_RU/LC_MESSAGES/django.po +++ b/engine/blog/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/sv_SE/LC_MESSAGES/django.po b/engine/blog/locale/sv_SE/LC_MESSAGES/django.po index 7c77d545..ac541991 100644 --- a/engine/blog/locale/sv_SE/LC_MESSAGES/django.po +++ b/engine/blog/locale/sv_SE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/th_TH/LC_MESSAGES/django.po b/engine/blog/locale/th_TH/LC_MESSAGES/django.po index c80cda96..eec1d11e 100644 --- a/engine/blog/locale/th_TH/LC_MESSAGES/django.po +++ b/engine/blog/locale/th_TH/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/tr_TR/LC_MESSAGES/django.po b/engine/blog/locale/tr_TR/LC_MESSAGES/django.po index 458a405f..71c1693e 100644 --- a/engine/blog/locale/tr_TR/LC_MESSAGES/django.po +++ b/engine/blog/locale/tr_TR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/vi_VN/LC_MESSAGES/django.po b/engine/blog/locale/vi_VN/LC_MESSAGES/django.po index 181d7254..04881f4e 100644 --- a/engine/blog/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/blog/locale/vi_VN/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po b/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po index 97af618e..e42eb266 100644 --- a/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po +++ b/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/core/locale/ar_AR/LC_MESSAGES/django.mo b/engine/core/locale/ar_AR/LC_MESSAGES/django.mo index 10d265536a4c38354689543de750c77eeb1427ed..ecb6590819a6448daece10e3189ac3e6448a101c 100644 GIT binary patch delta 14876 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 delta 14681 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 mN$;y-?~^KhJMG=DY=>`e@`_xa9JtfgH#N\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "نشط" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "إذا تم تعيينه على خطأ، لا يمكن للمستخدمين رؤية هذا الكائن دون الحاجة إلى إذن" @@ -71,65 +72,65 @@ msgstr "البيانات الوصفية" msgid "timestamps" msgstr "الطوابع الزمنية" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "تنشيط المحدد _PH_0__%(verbose_name_plural)s" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "تم تفعيل العناصر المختارة!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "إلغاء التنشيط المحدد _PH_0_%(verbose_name_plural)s" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "تم إلغاء تنشيط العناصر المحددة!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "قيمة السمة" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "قيم السمات" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "الصورة" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "الصور" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "المخزون" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "الأسهم" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "طلب المنتج" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "اطلب المنتجات" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "الأطفال" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "التكوين" @@ -153,7 +154,8 @@ msgstr "تم التسليم" msgid "canceled" msgstr "تم الإلغاء" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "فشل" @@ -191,52 +193,51 @@ msgid "" "negotiation. Language can be selected with Accept-Language and query " "parameter both." msgstr "" -"مخطط OpenApi3 لواجهة برمجة التطبيقات هذه. يمكن تحديد التنسيق عبر التفاوض على " -"المحتوى. يمكن تحديد اللغة باستخدام معلمة قبول اللغة ومعلمة الاستعلام على حد " -"سواء." +"مخطط OpenApi3 لواجهة برمجة التطبيقات هذه. يمكن تحديد التنسيق عبر التفاوض على" +" المحتوى. يمكن تحديد اللغة باستخدام معلمة قبول اللغة ومعلمة الاستعلام على حد" +" سواء." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "ذاكرة التخزين المؤقت للإدخال/الإخراج" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "تطبيق مفتاح فقط لقراءة البيانات المسموح بها من ذاكرة التخزين المؤقت.\n" -"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين " -"المؤقت." +"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين المؤقت." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "الحصول على قائمة باللغات المدعومة" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "الحصول على معلمات التطبيق القابلة للكشف" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "إرسال رسالة إلى فريق الدعم" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "طلب عنوان URL مرتبط بـ CORSed. مسموح بـ https فقط." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "البحث بين المنتجات والفئات والعلامات التجارية" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "نقطة نهاية بحث عالمية للاستعلام عبر جداول المشروع" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "شراء طلب شراء كشركة" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -244,7 +245,7 @@ msgstr "" "اشترِ طلبًا كعمل تجاري، باستخدام \"المنتجات\" المتوفرة مع \"معرّف_المنتج\" " "و\"السمات\"." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "تنزيل أصل رقمي من طلب رقمي تم شراؤه" @@ -269,7 +270,8 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "إعادة كتابة مجموعة سمات موجودة تحفظ غير القابلة للتعديل" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "إعادة كتابة بعض حقول مجموعة سمات موجودة تحفظ غير القابلة للتعديل" #: engine/core/docs/drf/viewsets.py:118 @@ -317,7 +319,8 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "إعادة كتابة قيمة سمة موجودة تحفظ غير القابلة للتعديل" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "إعادة كتابة بعض حقول قيمة سمة موجودة حفظ غير قابل للتعديل" #: engine/core/docs/drf/viewsets.py:219 engine/core/docs/drf/viewsets.py:220 @@ -350,9 +353,9 @@ msgstr "إعادة كتابة بعض حقول فئة موجودة حفظ غير #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "لقطة تعريفية لتحسين محركات البحث SEO" @@ -370,8 +373,8 @@ msgstr "بالنسبة للمستخدمين من غير الموظفين، يت #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "البحث في سلسلة فرعية غير حساسة لحالة الأحرف عبر human_readable_id و " "order_products.product.name و order_products.product.partnumber" @@ -407,9 +410,9 @@ msgstr "تصفية حسب حالة الطلب (مطابقة سلسلة فرعي #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "الترتيب حسب واحد من: uuid، معرف_بشري_مقروء، بريد_إلكتروني_مستخدم، مستخدم، " "حالة، إنشاء، تعديل، وقت_الشراء، عشوائي. البادئة بحرف \"-\" للترتيب التنازلي " @@ -464,7 +467,7 @@ msgstr "استرداد الطلب المعلق الحالي للمستخدم" msgid "retrieves a current pending order of an authenticated user" msgstr "استرداد الطلب الحالي المعلق لمستخدم مصادق عليه" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "شراء طلب شراء بدون إنشاء حساب" @@ -491,7 +494,8 @@ msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -"يضيف قائمة من المنتجات إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." +"يضيف قائمة من المنتجات إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" " +"المتوفرة." #: engine/core/docs/drf/viewsets.py:472 msgid "remove product from order" @@ -501,8 +505,7 @@ msgstr "إزالة منتج من الطلب" msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." +msgstr "يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." #: engine/core/docs/drf/viewsets.py:483 msgid "remove product from order, quantities will not count" @@ -596,32 +599,20 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "تصفية حسب زوج واحد أو أكثر من أسماء/قيم السمات. \n" "- **صيغة**: `attr_name=الطريقة-القيمة[ ؛ attr2=الطريقة2-القيمة2]...`\n" -"- **الأساليب** (افتراضيًا إلى \"يحتوي على\" إذا تم حذفها): \"بالضبط\"، " -"\"بالضبط\"، \"بالضبط\"، \"يحتوي\"، \"يحتوي\"، \"لاغية\"، \"يبدأ ب\"، \"يبدأ " -"ب\"، \"يبدأ ب\"، \"ينتهي ب\"، \"ينتهي ب\"، \"regex\"، \"iregex\"، \"lt\"، " -"\"lte\"، \"gt\"، \"gte\"، \"in\n" -"- **كتابة القيمة**: تتم تجربة JSON أولًا (حتى تتمكن من تمرير القوائم/" -"المجادلات)، \"صحيح\"/\"خطأ\" للمنطقيين والأعداد الصحيحة والعوامات؛ وإلا يتم " -"التعامل معها كسلسلة. \n" -"- **القاعدة 64**: البادئة ب \"b64-\" لتشفير القيمة الخام بأمان لقاعدة 64- " -"لتشفير القيمة الخام. \n" +"- **الأساليب** (افتراضيًا إلى \"يحتوي على\" إذا تم حذفها): \"بالضبط\"، \"بالضبط\"، \"بالضبط\"، \"يحتوي\"، \"يحتوي\"، \"لاغية\"، \"يبدأ ب\"، \"يبدأ ب\"، \"يبدأ ب\"، \"ينتهي ب\"، \"ينتهي ب\"، \"regex\"، \"iregex\"، \"lt\"، \"lte\"، \"gt\"، \"gte\"، \"in\n" +"- **كتابة القيمة**: تتم تجربة JSON أولًا (حتى تتمكن من تمرير القوائم/المجادلات)، \"صحيح\"/\"خطأ\" للمنطقيين والأعداد الصحيحة والعوامات؛ وإلا يتم التعامل معها كسلسلة. \n" +"- **القاعدة 64**: البادئة ب \"b64-\" لتشفير القيمة الخام بأمان لقاعدة 64- لتشفير القيمة الخام. \n" "أمثلة: \n" -"'color=exact-red'، 'size=gt-10'، 'features=in-[\"wifi\"،\"bluetooth\"]، " -"'fatures=in-[\"wifi\",\"bluetooth\"],\n" +"'color=exact-red'، 'size=gt-10'، 'features=in-[\"wifi\"،\"bluetooth\"]، 'fatures=in-[\"wifi\",\"bluetooth\"],\n" "\"b64-description=icontains-aGVhdC1jb2xk" #: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 @@ -634,8 +625,7 @@ msgstr "(بالضبط) UUID المنتج" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" "قائمة مفصولة بفواصل من الحقول للفرز حسب. البادئة بـ \"-\" للفرز التنازلي. \n" @@ -652,9 +642,6 @@ msgid "Product UUID or slug" msgstr "معرف المنتج UUID أو سبيكة المنتج" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "إنشاء منتج" @@ -945,8 +932,8 @@ msgstr "إعادة كتابة علامة منتج موجود حفظ غير قا msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "إعادة كتابة بعض حقول علامة منتج موجود حفظ غير قابل للتعديل" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "لم يتم توفير مصطلح بحث." @@ -955,8 +942,8 @@ msgstr "لم يتم توفير مصطلح بحث." msgid "Search" msgstr "بحث" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1002,8 +989,8 @@ msgid "Quantity" msgstr "الكمية" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "سبيكة" @@ -1019,7 +1006,7 @@ msgstr "تضمين الفئات الفرعية" msgid "Include personal ordered" msgstr "تضمين المنتجات المطلوبة شخصيًا" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "وحدة التخزين" @@ -1040,12 +1027,12 @@ msgid "Bought before (inclusive)" msgstr "تم الشراء من قبل (شامل)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "البريد الإلكتروني للمستخدم" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "معرّف المستخدم UUID" @@ -1069,250 +1056,251 @@ msgstr "الفئة الكاملة (تحتوي على منتج واحد على ا msgid "Level" msgstr "المستوى" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "UUID المنتج" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "" "مفتاح للبحث عنه في ذاكرة التخزين المؤقت أو تعيينه في ذاكرة التخزين المؤقت" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "البيانات المراد تخزينها في ذاكرة التخزين المؤقت" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "المهلة بالثواني لتعيين البيانات في ذاكرة التخزين المؤقت" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "البيانات المخزنة مؤقتاً" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "بيانات JSON مجمّلة من عنوان URL المطلوب" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "يُسمح فقط بعناوين URL التي تبدأ ب http(s)://" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "إضافة منتج إلى الطلب" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "الطلب {order_uuid} غير موجود!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "إزالة منتج من الطلب" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "إزالة جميع المنتجات من الطلب" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "شراء طلبية" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "يرجى تقديم إما Order_uuid أو order_uid_hr_hr_id - متنافيان!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "جاء نوع خاطئ من طريقة order.buy(): {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "تنفيذ إجراء على قائمة من المنتجات بالترتيب" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "إزالة/إضافة" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "يجب أن يكون الإجراء إما \"إضافة\" أو \"إزالة\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "تنفيذ إجراء على قائمة المنتجات في قائمة الأمنيات" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "يُرجى تقديم قيمة \"wishlist_uid\"." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "قائمة الرغبات {wishlist_uuid} غير موجودة!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "إضافة منتج إلى الطلب" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "إزالة منتج من الطلب" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "إزالة منتج من الطلب" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "إزالة منتج من الطلب" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "شراء طلبية" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "الرجاء إرسال السمات كسلسلة منسقة مثل attr1=قيمة1، attr2=قيمة2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "إضافة أو حذف تعليق على طلبالمنتج" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "يجب أن يكون الإجراء إما \"إضافة\" أو \"إزالة\"!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "طلب المنتج {order_product_uuid} غير موجود!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "سلسلة العنوان الأصلي المقدمة من المستخدم" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} غير موجود: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "يجب أن يكون الحد بين 1 و10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - يعمل مثل السحر" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "السمات" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "السمات المجمعة" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "مجموعات السمات" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "الفئات" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "العلامات التجارية" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "الفئات" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "النسبة المئوية للترميز" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "ما هي السمات والقيم التي يمكن استخدامها لتصفية هذه الفئة." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "الحد الأدنى والحد الأقصى لأسعار المنتجات في هذه الفئة، إذا كانت متوفرة." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "العلامات الخاصة بهذه الفئة" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "المنتجات في هذه الفئة" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "البائعون" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "خط العرض (الإحداثي Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "خط الطول (الإحداثي X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "كيفية" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "قيمة التصنيف من 1 إلى 10، شاملة، أو 0 إذا لم يتم تعيينها." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "يمثل ملاحظات من المستخدم." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "الإشعارات" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "تحميل الرابط الخاص بمنتج الطلب هذا إن أمكن" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "الملاحظات" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "قائمة بطلب المنتجات بهذا الترتيب" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "عنوان إرسال الفواتير" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1320,53 +1308,53 @@ msgstr "" "عنوان الشحن لهذا الطلب، اترك العنوان فارغًا إذا كان هو نفسه عنوان إرسال " "الفواتير أو إذا لم يكن منطبقًا" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "السعر الإجمالي لهذا الطلب" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "إجمالي كمية المنتجات بالترتيب" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "هل جميع المنتجات في الطلب رقمي" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "المعاملات الخاصة بهذا الطلب" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "الطلبات" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "رابط الصورة" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "صور المنتج" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "الفئة" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "الملاحظات" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "العلامة التجارية" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "مجموعات السمات" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1374,7 +1362,7 @@ msgstr "مجموعات السمات" msgid "price" msgstr "السعر" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1382,39 +1370,39 @@ msgstr "السعر" msgid "quantity" msgstr "الكمية" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "عدد الملاحظات" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "المنتجات متاحة للطلبات الشخصية فقط" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "سعر الخصم" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "المنتجات" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "الرموز الترويجية" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "المنتجات المعروضة للبيع" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "العروض الترويجية" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "البائع" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1422,100 +1410,100 @@ msgstr "البائع" msgid "product" msgstr "المنتج" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "المنتجات المفضلة" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "قوائم التمنيات" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "المنتجات الموسومة" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "علامات المنتج" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "الفئات الموسومة" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "علامات الفئات" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "اسم المشروع" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "اسم الشركة" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "عنوان الشركة" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "رقم هاتف الشركة" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -"\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم " -"المضيف" +"\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم" +" المضيف" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "مستخدم البريد الإلكتروني المضيف" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "الحد الأقصى لمبلغ السداد" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "الحد الأدنى لمبلغ السداد" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "بيانات التحليلات" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "بيانات الإعلانات" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "التكوين" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "رمز اللغة" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "اسم اللغة" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "علم اللغة، إذا كان موجوداً :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "الحصول على قائمة باللغات المدعومة" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "نتائج البحث عن المنتجات" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "نتائج البحث عن المنتجات" @@ -1531,23 +1519,23 @@ msgstr "" "يشكل بنية هرمية. يمكن أن يكون هذا مفيدًا لتصنيف السمات وإدارتها بشكل أكثر " "فعالية في النظام المعقد." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "والد هذه المجموعة" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "مجموعة السمات الرئيسية" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "اسم مجموعة السمات" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "مجموعة السمات" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1561,52 +1549,52 @@ msgstr "" "تفاعلهم. يتم استخدام فئة البائع لتعريف وإدارة المعلومات المتعلقة ببائع " "خارجي. وهو يخزن اسم البائع، وتفاصيل المصادقة المطلوبة للاتصال، والنسبة " "المئوية للترميز المطبقة على المنتجات المسترجعة من البائع. يحتفظ هذا النموذج " -"أيضًا ببيانات وصفية وقيود إضافية، مما يجعله مناسبًا للاستخدام في الأنظمة التي " -"تتفاعل مع البائعين الخارجيين." +"أيضًا ببيانات وصفية وقيود إضافية، مما يجعله مناسبًا للاستخدام في الأنظمة " +"التي تتفاعل مع البائعين الخارجيين." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "تخزين بيانات الاعتماد ونقاط النهاية المطلوبة لاتصالات واجهة برمجة التطبيقات " "الخاصة بالمورّد" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "معلومات المصادقة" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "تحديد الترميز للمنتجات المسترجعة من هذا البائع" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "نسبة هامش الربح للبائع" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "اسم هذا البائع" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "اسم البائع" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "ملف الاستجابة" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "استجابة البائع الأخيرة للمعالجة" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "مسار ملف تكامل البائع" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "مسار التكامل" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1615,48 +1603,48 @@ msgid "" "metadata customization for administrative purposes." msgstr "" "يمثل علامة منتج تُستخدم لتصنيف المنتجات أو تعريفها. صُممت فئة ProductTag " -"لتعريف المنتجات وتصنيفها بشكل فريد من خلال مزيج من معرّف علامة داخلي واسم عرض " -"سهل الاستخدام. وهي تدعم العمليات التي يتم تصديرها من خلال mixins وتوفر تخصيص " -"البيانات الوصفية لأغراض إدارية." +"لتعريف المنتجات وتصنيفها بشكل فريد من خلال مزيج من معرّف علامة داخلي واسم " +"عرض سهل الاستخدام. وهي تدعم العمليات التي يتم تصديرها من خلال mixins وتوفر " +"تخصيص البيانات الوصفية لأغراض إدارية." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "معرّف العلامة الداخلي لعلامة المنتج" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "اسم العلامة" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "اسم سهل الاستخدام لعلامة المنتج" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "اسم عرض العلامة" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "علامة المنتج" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -"يمثل علامة فئة تستخدم للمنتجات. تمثل هذه الفئة علامة فئة يمكن استخدامها لربط " -"المنتجات وتصنيفها. وهي تتضمن سمات لمعرف علامة داخلي واسم عرض سهل الاستخدام." +"يمثل علامة فئة تستخدم للمنتجات. تمثل هذه الفئة علامة فئة يمكن استخدامها لربط" +" المنتجات وتصنيفها. وهي تتضمن سمات لمعرف علامة داخلي واسم عرض سهل الاستخدام." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "علامة الفئة" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "علامات الفئة" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1672,110 +1660,111 @@ msgstr "" "علاقات هرمية مع فئات أخرى، مما يدعم العلاقات بين الأصل والطفل. تتضمن الفئة " "حقول للبيانات الوصفية والتمثيل المرئي، والتي تعمل كأساس للميزات المتعلقة " "بالفئات. تُستخدم هذه الفئة عادةً لتعريف وإدارة فئات المنتجات أو غيرها من " -"التجميعات المماثلة داخل التطبيق، مما يسمح للمستخدمين أو المسؤولين بتحديد اسم " -"الفئات ووصفها وتسلسلها الهرمي، بالإضافة إلى تعيين سمات مثل الصور أو العلامات " -"أو الأولوية." +"التجميعات المماثلة داخل التطبيق، مما يسمح للمستخدمين أو المسؤولين بتحديد اسم" +" الفئات ووصفها وتسلسلها الهرمي، بالإضافة إلى تعيين سمات مثل الصور أو " +"العلامات أو الأولوية." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "تحميل صورة تمثل هذه الفئة" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "صورة الفئة" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "تحديد نسبة ترميز للمنتجات في هذه الفئة" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "أصل هذه الفئة لتكوين بنية هرمية" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "الفئة الرئيسية" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "اسم الفئة" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "تقديم اسم لهذه الفئة" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "إضافة وصف تفصيلي لهذه الفئة" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "وصف الفئة" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "العلامات التي تساعد في وصف هذه الفئة أو تجميعها" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "الأولوية" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "يمثل كائن العلامة التجارية في النظام. تتعامل هذه الفئة مع المعلومات والسمات " "المتعلقة بالعلامة التجارية، بما في ذلك اسمها وشعاراتها ووصفها والفئات " "المرتبطة بها وسبيكة فريدة وترتيب الأولوية. يسمح بتنظيم وتمثيل البيانات " "المتعلقة بالعلامة التجارية داخل التطبيق." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "اسم هذه العلامة التجارية" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "اسم العلامة التجارية" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "تحميل شعار يمثل هذه العلامة التجارية" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "صورة العلامة التجارية الصغيرة" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "رفع شعار كبير يمثل هذه العلامة التجارية" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "صورة كبيرة للعلامة التجارية" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "إضافة وصف تفصيلي للعلامة التجارية" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "وصف العلامة التجارية" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "الفئات الاختيارية التي ترتبط بها هذه العلامة التجارية" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "الفئات" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1787,72 +1776,72 @@ msgstr "" "والأصول الرقمية. وهي جزء من نظام إدارة المخزون للسماح بتتبع وتقييم المنتجات " "المتاحة من مختلف البائعين." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "البائع الذي يورد هذا المنتج المخزون" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "البائع المرتبط" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "السعر النهائي للعميل بعد هوامش الربح" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "سعر البيع" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "المنتج المرتبط بإدخال المخزون هذا" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "المنتج المرتبط" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "السعر المدفوع للبائع مقابل هذا المنتج" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "سعر الشراء من البائع" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "الكمية المتوفرة من المنتج في المخزون" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "الكمية في المخزون" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU المعين من قبل البائع لتحديد المنتج" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "وحدة تخزين البائع" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "الملف الرقمي المرتبط بهذا المخزون إن أمكن" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "ملف رقمي" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "سمات النظام" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "إدخالات المخزون" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1865,68 +1854,76 @@ msgid "" msgstr "" "يمثل منتجًا بخصائص مثل الفئة والعلامة التجارية والعلامات والحالة الرقمية " "والاسم والوصف ورقم الجزء والعلامة التجارية والحالة الرقمية والاسم والوصف " -"ورقم الجزء والسبيكة. يوفر خصائص الأداة المساعدة ذات الصلة لاسترداد التقييمات " -"وعدد الملاحظات والسعر والكمية وإجمالي الطلبات. مصمم للاستخدام في نظام يتعامل " -"مع التجارة الإلكترونية أو إدارة المخزون. تتفاعل هذه الفئة مع النماذج ذات " -"الصلة (مثل الفئة والعلامة التجارية وعلامة المنتج) وتدير التخزين المؤقت " +"ورقم الجزء والسبيكة. يوفر خصائص الأداة المساعدة ذات الصلة لاسترداد التقييمات" +" وعدد الملاحظات والسعر والكمية وإجمالي الطلبات. مصمم للاستخدام في نظام " +"يتعامل مع التجارة الإلكترونية أو إدارة المخزون. تتفاعل هذه الفئة مع النماذج " +"ذات الصلة (مثل الفئة والعلامة التجارية وعلامة المنتج) وتدير التخزين المؤقت " "للخصائص التي يتم الوصول إليها بشكل متكرر لتحسين الأداء. يتم استخدامه لتعريف " "ومعالجة بيانات المنتج والمعلومات المرتبطة به داخل التطبيق." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "الفئة التي ينتمي إليها هذا المنتج" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "ربط هذا المنتج اختياريًا بعلامة تجارية" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "العلامات التي تساعد في وصف أو تجميع هذا المنتج" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "يشير إلى ما إذا كان هذا المنتج يتم تسليمه رقميًا أم لا" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "هل المنتج رقمي" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "يشير إلى ما إذا كان يجب تحديث هذا المنتج من المهمة الدورية" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "هو منتج قابل للتحديث" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "توفير اسم تعريفي واضح للمنتج" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "اسم المنتج" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "إضافة وصف تفصيلي للمنتج" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "وصف المنتج" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "رقم الجزء لهذا المنتج" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "رقم الجزء" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "وحدة حفظ المخزون لهذا المنتج" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "يمثل سمة في النظام. تُستخدم هذه الفئة لتعريف السمات وإدارتها، وهي عبارة عن " @@ -1935,89 +1932,89 @@ msgstr "" "من القيم، بما في ذلك السلسلة، والعدد الصحيح، والعائم، والمنطقي، والصفيف، " "والكائن. وهذا يسمح بهيكلة ديناميكية ومرنة للبيانات." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "مجموعة هذه السمة" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "الخيط" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "عدد صحيح" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "تعويم" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "منطقية" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "المصفوفة" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "الكائن" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "نوع قيمة السمة" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "نوع القيمة" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "اسم هذه السمة" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "اسم السمة" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "قابل للتصفية" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "يحدد ما إذا كان يمكن استخدام هذه السمة للتصفية أم لا" -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "السمة" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "يمثل قيمة محددة لسمة مرتبطة بمنتج ما. يربط \"السمة\" بـ \"قيمة\" فريدة، مما " "يسمح بتنظيم أفضل وتمثيل ديناميكي لخصائص المنتج." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "سمة هذه القيمة" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "المنتج المحدد المرتبط بقيمة هذه السمة" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "القيمة المحددة لهذه السمة" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2025,209 +2022,210 @@ msgstr "" "بالمنتجات، بما في ذلك وظيفة تحميل ملفات الصور، وربطها بمنتجات معينة، وتحديد " "ترتيب عرضها. وتتضمن أيضًا ميزة إمكانية الوصول مع نص بديل للصور." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "توفير نص بديل للصورة لإمكانية الوصول" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "النص البديل للصورة" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "تحميل ملف الصورة لهذا المنتج" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "صورة المنتج" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "يحدد الترتيب الذي يتم عرض الصور به" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "أولوية العرض" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "المنتج الذي تمثله هذه الصورة" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "صور المنتج" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"يمثل حملة ترويجية للمنتجات ذات الخصم. تُستخدم هذه الفئة لتعريف وإدارة الحملات " -"الترويجية التي تقدم خصمًا على أساس النسبة المئوية للمنتجات. تتضمن الفئة سمات " -"لتعيين معدل الخصم وتوفير تفاصيل حول العرض الترويجي وربطه بالمنتجات القابلة " -"للتطبيق. تتكامل مع كتالوج المنتجات لتحديد العناصر المتأثرة في الحملة." +"يمثل حملة ترويجية للمنتجات ذات الخصم. تُستخدم هذه الفئة لتعريف وإدارة " +"الحملات الترويجية التي تقدم خصمًا على أساس النسبة المئوية للمنتجات. تتضمن " +"الفئة سمات لتعيين معدل الخصم وتوفير تفاصيل حول العرض الترويجي وربطه " +"بالمنتجات القابلة للتطبيق. تتكامل مع كتالوج المنتجات لتحديد العناصر المتأثرة" +" في الحملة." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "النسبة المئوية للخصم على المنتجات المختارة" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "نسبة الخصم" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "تقديم اسم فريد لهذا العرض الترويجي" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "اسم الترقية" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "وصف الترقية" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "حدد المنتجات المشمولة في هذا العرض الترويجي" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "المنتجات المشمولة" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "الترقية" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"يمثل قائمة أمنيات المستخدم لتخزين وإدارة المنتجات المطلوبة. توفر الفئة وظائف " -"لإدارة مجموعة من المنتجات، وتدعم عمليات مثل إضافة المنتجات وإزالتها، " +"يمثل قائمة أمنيات المستخدم لتخزين وإدارة المنتجات المطلوبة. توفر الفئة وظائف" +" لإدارة مجموعة من المنتجات، وتدعم عمليات مثل إضافة المنتجات وإزالتها، " "بالإضافة إلى دعم عمليات إضافة وإزالة منتجات متعددة في وقت واحد." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "المنتجات التي حددها المستخدم على أنها مطلوبة" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "المستخدم الذي يمتلك قائمة الرغبات هذه" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "مالك قائمة الرغبات" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "قائمة الرغبات" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"يمثل سجل وثائقي مرتبط بمنتج ما. تُستخدم هذه الفئة لتخزين معلومات حول الأفلام " -"الوثائقية المرتبطة بمنتجات محددة، بما في ذلك تحميلات الملفات وبياناتها " +"يمثل سجل وثائقي مرتبط بمنتج ما. تُستخدم هذه الفئة لتخزين معلومات حول الأفلام" +" الوثائقية المرتبطة بمنتجات محددة، بما في ذلك تحميلات الملفات وبياناتها " "الوصفية. يحتوي على أساليب وخصائص للتعامل مع نوع الملف ومسار التخزين للملفات " "الوثائقية. وهو يوسع الوظائف من مزيج معين ويوفر ميزات مخصصة إضافية." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "فيلم وثائقي" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "الأفلام الوثائقية" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "لم يتم حلها" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "يمثل كيان عنوان يتضمن تفاصيل الموقع والارتباطات مع المستخدم. يوفر وظائف " "لتخزين البيانات الجغرافية وبيانات العنوان، بالإضافة إلى التكامل مع خدمات " -"الترميز الجغرافي. صُممت هذه الفئة لتخزين معلومات العنوان التفصيلية بما في ذلك " -"مكونات مثل الشارع والمدينة والمنطقة والبلد والموقع الجغرافي (خطوط الطول " +"الترميز الجغرافي. صُممت هذه الفئة لتخزين معلومات العنوان التفصيلية بما في " +"ذلك مكونات مثل الشارع والمدينة والمنطقة والبلد والموقع الجغرافي (خطوط الطول " "والعرض). وهو يدعم التكامل مع واجهات برمجة التطبيقات للترميز الجغرافي، مما " "يتيح تخزين استجابات واجهة برمجة التطبيقات الخام لمزيد من المعالجة أو الفحص. " "تسمح الفئة أيضًا بربط عنوان مع مستخدم، مما يسهل التعامل مع البيانات الشخصية." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "سطر العنوان للعميل" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "سطر العنوان" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "الشارع" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "المنطقة" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "المدينة" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "المنطقة" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "الرمز البريدي" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "البلد" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "نقطة تحديد الموقع الجغرافي(خط الطول، خط العرض)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "استجابة JSON كاملة من أداة التشفير الجغرافي لهذا العنوان" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "استجابة JSON مخزّنة من خدمة الترميز الجغرافي" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "العنوان" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "العناوين" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2236,99 +2234,100 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"يمثل الرمز الترويجي الذي يمكن استخدامه للحصول على خصومات وإدارة صلاحيته ونوع " -"الخصم والتطبيق. تقوم فئة PromoCode بتخزين تفاصيل حول الرمز الترويجي، بما في " -"ذلك معرفه الفريد، وخصائص الخصم (المبلغ أو النسبة المئوية)، وفترة الصلاحية، " +"يمثل الرمز الترويجي الذي يمكن استخدامه للحصول على خصومات وإدارة صلاحيته ونوع" +" الخصم والتطبيق. تقوم فئة PromoCode بتخزين تفاصيل حول الرمز الترويجي، بما في" +" ذلك معرفه الفريد، وخصائص الخصم (المبلغ أو النسبة المئوية)، وفترة الصلاحية، " "والمستخدم المرتبط به (إن وجد)، وحالة استخدامه. ويتضمن وظيفة للتحقق من صحة " "الرمز الترويجي وتطبيقه على الطلب مع ضمان استيفاء القيود." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "الرمز الفريد الذي يستخدمه المستخدم لاسترداد قيمة الخصم" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "معرّف الرمز الترويجي" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "مبلغ الخصم الثابت المطبق في حالة عدم استخدام النسبة المئوية" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "مبلغ الخصم الثابت" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "النسبة المئوية للخصم المطبق في حالة عدم استخدام مبلغ ثابت" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "النسبة المئوية للخصم" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "الطابع الزمني عند انتهاء صلاحية الرمز الترويجي" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "وقت انتهاء الصلاحية" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "الطابع الزمني الذي يكون هذا الرمز الترويجي صالحاً منه" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "وقت بدء الصلاحية" -#: engine/core/models.py:1151 -msgid "timestamp when the promocode was used, blank if not used yet" -msgstr "الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" - #: engine/core/models.py:1152 +msgid "timestamp when the promocode was used, blank if not used yet" +msgstr "" +"الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" + +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "الطابع الزمني للاستخدام" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "المستخدم المعين لهذا الرمز الترويجي إن أمكن" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "المستخدم المعين" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "الرمز الترويجي" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "الرموز الترويجية" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين " -"أو لا هذا ولا ذاك." +"يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين" +" أو لا هذا ولا ذاك." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "تم استخدام الرمز الترويجي بالفعل" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "نوع الخصم غير صالح للرمز الترويجي {self.uuid}" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2338,150 +2337,150 @@ msgstr "" "مرتبطة، ويمكن تطبيق العروض الترويجية، وتعيين العناوين، وتحديث تفاصيل الشحن " "أو الفوترة. وبالمثل، تدعم الوظيفة إدارة المنتجات في دورة حياة الطلب." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "عنوان إرسال الفواتير المستخدم لهذا الطلب" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "الرمز الترويجي الاختياري المطبق على هذا الطلب" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "الرمز الترويجي المطبق" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "عنوان الشحن المستخدم لهذا الطلب" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "عنوان الشحن" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "الحالة الحالية للطلب في دورة حياته" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "حالة الطلب" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "بنية JSON للإشعارات التي سيتم عرضها للمستخدمين، في واجهة مستخدم المشرف، يتم " "استخدام عرض الجدول" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "تمثيل JSON لسمات الطلب لهذا الطلب" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "المستخدم الذي قدم الطلب" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "المستخدم" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "الطابع الزمني عند الانتهاء من الطلب" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "وقت الشراء" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "معرّف يمكن قراءته بواسطة البشر للطلب" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "معرّف يمكن قراءته من قبل البشر" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "الطلب" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "يجب أن يكون لدى المستخدم طلب واحد فقط معلق في كل مرة!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "لا يمكنك إضافة منتجات إلى طلب غير معلق إلى طلب غير معلق" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "لا يمكنك إضافة منتجات غير نشطة للطلب" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "لا يمكنك إضافة منتجات أكثر من المتوفرة في المخزون" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "لا يمكنك إزالة المنتجات من طلب غير معلق من طلب غير معلق" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} غير موجود مع الاستعلام <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "الرمز الترويجي غير موجود" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "يمكنك فقط شراء المنتجات المادية مع تحديد عنوان الشحن فقط!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "العنوان غير موجود" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "لا يمكنك الشراء في هذه اللحظة، يرجى المحاولة مرة أخرى بعد بضع دقائق." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "قيمة القوة غير صالحة" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "لا يمكنك شراء طلبية فارغة!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "لا يمكنك شراء طلب بدون مستخدم!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "المستخدم بدون رصيد لا يمكنه الشراء بالرصيد!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "عدم كفاية الأموال لإكمال الطلب" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -"لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد " -"الإلكتروني للعميل، رقم هاتف العميل" +"لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد" +" الإلكتروني للعميل، رقم هاتف العميل" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "طريقة الدفع غير صالحة: {payment_method} من {available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2494,31 +2493,32 @@ msgstr "" "المستخدم، ومرجع إلى المنتج ذي الصلة في الطلب، وتقييم معين من قبل المستخدم. " "يستخدم الفصل حقول قاعدة البيانات لنمذجة وإدارة بيانات الملاحظات بشكل فعال." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "التعليقات المقدمة من المستخدمين حول تجربتهم مع المنتج" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "تعليقات على الملاحظات" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "الإشارة إلى المنتج المحدد في الطلب الذي تدور حوله هذه الملاحظات" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "منتجات الطلبات ذات الصلة" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "التصنيف المعين من قبل المستخدم للمنتج" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "تصنيف المنتج" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2533,131 +2533,131 @@ msgstr "" "يمثل المنتجات المرتبطة بالطلبات وسماتها. يحتفظ نموذج OrderProduct بمعلومات " "حول المنتج الذي هو جزء من الطلب، بما في ذلك تفاصيل مثل سعر الشراء والكمية " "وسمات المنتج وحالته. يدير الإشعارات للمستخدم والمسؤولين ويتعامل مع عمليات " -"مثل إرجاع رصيد المنتج أو إضافة ملاحظات. يوفر هذا النموذج أيضًا أساليب وخصائص " -"تدعم منطق العمل، مثل حساب السعر الإجمالي أو إنشاء عنوان URL للتنزيل للمنتجات " -"الرقمية. يتكامل النموذج مع نموذجي الطلب والمنتج ويخزن مرجعًا لهما." +"مثل إرجاع رصيد المنتج أو إضافة ملاحظات. يوفر هذا النموذج أيضًا أساليب وخصائص" +" تدعم منطق العمل، مثل حساب السعر الإجمالي أو إنشاء عنوان URL للتنزيل " +"للمنتجات الرقمية. يتكامل النموذج مع نموذجي الطلب والمنتج ويخزن مرجعًا لهما." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "السعر الذي دفعه العميل لهذا المنتج وقت الشراء" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "سعر الشراء وقت الطلب" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "تعليقات داخلية للمسؤولين حول هذا المنتج المطلوب" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "التعليقات الداخلية" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "إشعارات المستخدم" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "تمثيل JSON لسمات هذا العنصر" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "سمات المنتج المطلوبة" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "الإشارة إلى الطلب الأصلي الذي يحتوي على هذا المنتج" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "ترتيب الوالدين" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "المنتج المحدد المرتبط بخط الطلب هذا" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "كمية هذا المنتج المحدد في الطلب" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "كمية المنتج" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "الحالة الحالية لهذا المنتج بالترتيب" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "حالة خط الإنتاج" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "يجب أن يكون لـ Orderproduct طلب مرتبط به!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "تم تحديد إجراء خاطئ للتغذية الراجعة: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "لا يمكنك التعليق على طلب لم يتم استلامه" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "الاسم" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "رابط التكامل" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "بيانات اعتماد المصادقة" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "يمكن أن يكون لديك موفر CRM افتراضي واحد فقط" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "إدارة علاقات العملاء" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "إدارة علاقات العملاء" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "رابط إدارة علاقات العملاء الخاصة بالطلب" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "روابط إدارة علاقات العملاء الخاصة بالطلبات" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "يمثل وظيفة التنزيل للأصول الرقمية المرتبطة بالطلبات. توفر فئة " "DigitalAssetDownload القدرة على إدارة التنزيلات المتعلقة بمنتجات الطلبات " "والوصول إليها. وتحتفظ بمعلومات حول منتج الطلب المرتبط، وعدد التنزيلات، وما " -"إذا كان الأصل مرئيًا للعامة. وتتضمن طريقة لإنشاء عنوان URL لتنزيل الأصل عندما " -"يكون الطلب المرتبط في حالة مكتملة." +"إذا كان الأصل مرئيًا للعامة. وتتضمن طريقة لإنشاء عنوان URL لتنزيل الأصل " +"عندما يكون الطلب المرتبط في حالة مكتملة." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "تنزيل" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "التنزيلات" @@ -2856,12 +2856,11 @@ msgstr "مرحباً %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"شكرًا لك على طلبك #%(order.pk)s! يسعدنا إبلاغك بأننا قد أخذنا طلبك في العمل. " -"فيما يلي تفاصيل طلبك:" +"شكرًا لك على طلبك #%(order.pk)s! يسعدنا إبلاغك بأننا قد أخذنا طلبك في العمل." +" فيما يلي تفاصيل طلبك:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2968,8 +2967,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "شكرًا لك على طلبك! يسعدنا تأكيد طلبك. فيما يلي تفاصيل طلبك:" @@ -2998,11 +2996,11 @@ msgstr "" "جميع الحقوق\n" " محفوظة" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "كل من البيانات والمهلة مطلوبة" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "قيمة المهلة غير صالحة، يجب أن تكون بين 0 و216000 ثانية" @@ -3034,12 +3032,12 @@ msgstr "ليس لديك إذن لتنفيذ هذا الإجراء." msgid "NOMINATIM_URL must be configured." msgstr "يجب تكوين معلمة NOMINATIM_URL!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "يجب ألا تتجاوز أبعاد الصورة w{max_width} x h{max_height} بكسل!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3047,7 +3045,7 @@ msgstr "" "يتعامل مع طلب فهرس خريطة الموقع ويعيد استجابة XML. يضمن أن تتضمن الاستجابة " "رأس نوع المحتوى المناسب ل XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3056,16 +3054,16 @@ msgstr "" "يعالج استجابة العرض التفصيلي لخريطة الموقع. تقوم هذه الدالة بمعالجة الطلب، " "وجلب استجابة تفاصيل خريطة الموقع المناسبة، وتعيين رأس نوع المحتوى ل XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "إرجاع قائمة باللغات المدعومة والمعلومات الخاصة بها." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "إرجاع معلمات الموقع الإلكتروني ككائن JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3073,11 +3071,11 @@ msgstr "" "يعالج عمليات ذاكرة التخزين المؤقت مثل قراءة بيانات ذاكرة التخزين المؤقت " "وتعيينها بمفتاح ومهلة محددة." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "يتعامل مع عمليات إرسال نموذج \"اتصل بنا\"." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3085,82 +3083,74 @@ msgstr "" "يعالج طلبات معالجة عناوين URL والتحقق من صحة عناوين URL من طلبات POST " "الواردة." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "يتعامل مع استعلامات البحث العامة." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "يتعامل بمنطق الشراء كشركة تجارية دون تسجيل." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "يتعامل مع تنزيل الأصل الرقمي المرتبط بأمر ما.\n" -"تحاول هذه الدالة خدمة ملف الأصل الرقمي الموجود في دليل التخزين الخاص " -"بالمشروع. إذا لم يتم العثور على الملف، يتم رفع خطأ HTTP 404 للإشارة إلى أن " -"المورد غير متوفر." +"تحاول هذه الدالة خدمة ملف الأصل الرقمي الموجود في دليل التخزين الخاص بالمشروع. إذا لم يتم العثور على الملف، يتم رفع خطأ HTTP 404 للإشارة إلى أن المورد غير متوفر." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "الطلب_برو_منتج_uuid مطلوب" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "طلب المنتج غير موجود" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "يمكنك تنزيل الأصل الرقمي مرة واحدة فقط" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "يجب دفع الطلب قبل تنزيل الأصل الرقمي" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "لا يحتوي منتج الطلب على منتج" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "الرمز المفضل غير موجود" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "يتعامل مع طلبات الرمز المفضل لموقع ويب.\n" -"تحاول هذه الدالة عرض ملف الأيقونة المفضلة الموجود في الدليل الثابت للمشروع. " -"إذا لم يتم العثور على ملف الأيقونة المفضلة، يتم رفع خطأ HTTP 404 للإشارة إلى " -"أن المورد غير متوفر." +"تحاول هذه الدالة عرض ملف الأيقونة المفضلة الموجود في الدليل الثابت للمشروع. إذا لم يتم العثور على ملف الأيقونة المفضلة، يتم رفع خطأ HTTP 404 للإشارة إلى أن المورد غير متوفر." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -"يعيد توجيه الطلب إلى صفحة فهرس المشرف. تعالج الدالة طلبات HTTP الواردة وتعيد " -"توجيهها إلى صفحة فهرس واجهة إدارة Django. تستخدم دالة \"إعادة التوجيه\" في " +"يعيد توجيه الطلب إلى صفحة فهرس المشرف. تعالج الدالة طلبات HTTP الواردة وتعيد" +" توجيهها إلى صفحة فهرس واجهة إدارة Django. تستخدم دالة \"إعادة التوجيه\" في " "Django للتعامل مع إعادة توجيه HTTP." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "إرجاع الإصدار الحالي من eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "الإيرادات والطلبات (آخر %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "إرجاع المتغيرات المخصصة للوحة التحكم." @@ -3172,22 +3162,23 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"يحدد مجموعة طرق عرض لإدارة العمليات المتعلقة ب Evibes. يرث صنف EvibesViewSet " -"من ModelViewSet ويوفر وظائف للتعامل مع الإجراءات والعمليات على كيانات " -"Evibes. وتتضمن دعمًا لفئات المتسلسلات الديناميكية استنادًا إلى الإجراء الحالي، " -"والأذونات القابلة للتخصيص، وتنسيقات العرض." +"يحدد مجموعة طرق عرض لإدارة العمليات المتعلقة ب Evibes. يرث صنف EvibesViewSet" +" من ModelViewSet ويوفر وظائف للتعامل مع الإجراءات والعمليات على كيانات " +"Evibes. وتتضمن دعمًا لفئات المتسلسلات الديناميكية استنادًا إلى الإجراء " +"الحالي، والأذونات القابلة للتخصيص، وتنسيقات العرض." #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "يمثل مجموعة طرق عرض لإدارة كائنات AttributeGroup. يتعامل مع العمليات " "المتعلقة ب AttributeGroup، بما في ذلك التصفية والتسلسل واسترجاع البيانات. " -"تعد هذه الفئة جزءًا من طبقة واجهة برمجة التطبيقات الخاصة بالتطبيق وتوفر طريقة " -"موحدة لمعالجة الطلبات والاستجابات لبيانات AttributeGroup." +"تعد هذه الفئة جزءًا من طبقة واجهة برمجة التطبيقات الخاصة بالتطبيق وتوفر " +"طريقة موحدة لمعالجة الطلبات والاستجابات لبيانات AttributeGroup." #: engine/core/viewsets.py:179 msgid "" @@ -3209,13 +3200,14 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"مجموعة طرق عرض لإدارة كائنات AttributeValue. توفر مجموعة طرق العرض هذه وظائف " -"لإدراج كائنات AttributeValue واسترجاعها وإنشائها وتحديثها وحذفها. وهي تتكامل " -"مع آليات مجموعة طرق عرض Django REST Framework وتستخدم المتسلسلات المناسبة " -"للإجراءات المختلفة. يتم توفير إمكانيات التصفية من خلال DjangoFilterBackend." +"مجموعة طرق عرض لإدارة كائنات AttributeValue. توفر مجموعة طرق العرض هذه وظائف" +" لإدراج كائنات AttributeValue واسترجاعها وإنشائها وتحديثها وحذفها. وهي " +"تتكامل مع آليات مجموعة طرق عرض Django REST Framework وتستخدم المتسلسلات " +"المناسبة للإجراءات المختلفة. يتم توفير إمكانيات التصفية من خلال " +"DjangoFilterBackend." #: engine/core/viewsets.py:217 msgid "" @@ -3226,8 +3218,8 @@ msgid "" "can access specific data." msgstr "" "يدير طرق العرض للعمليات المتعلقة بالفئة. فئة CategoryViewSet مسؤولة عن " -"التعامل مع العمليات المتعلقة بنموذج الفئة في النظام. وهي تدعم استرجاع بيانات " -"الفئة وتصفيتها وتسلسلها. تفرض مجموعة طرق العرض أيضًا الأذونات لضمان وصول " +"التعامل مع العمليات المتعلقة بنموذج الفئة في النظام. وهي تدعم استرجاع بيانات" +" الفئة وتصفيتها وتسلسلها. تفرض مجموعة طرق العرض أيضًا الأذونات لضمان وصول " "المستخدمين المصرح لهم فقط إلى بيانات محددة." #: engine/core/viewsets.py:346 @@ -3267,34 +3259,35 @@ msgid "" "Vendor-related resources through the Django REST framework." msgstr "" "يمثل مجموعة طرق عرض لإدارة كائنات المورد. تسمح مجموعة العرض هذه بجلب بيانات " -"البائع وتصفيتها وتسلسلها. وهي تُعرِّف مجموعة الاستعلام، وتكوينات التصفية، وفئات " -"أداة التسلسل المستخدمة للتعامل مع الإجراءات المختلفة. الغرض من هذه الفئة هو " -"توفير وصول مبسط إلى الموارد المتعلقة بالمورد من خلال إطار عمل Django REST." +"البائع وتصفيتها وتسلسلها. وهي تُعرِّف مجموعة الاستعلام، وتكوينات التصفية، " +"وفئات أداة التسلسل المستخدمة للتعامل مع الإجراءات المختلفة. الغرض من هذه " +"الفئة هو توفير وصول مبسط إلى الموارد المتعلقة بالمورد من خلال إطار عمل " +"Django REST." #: engine/core/viewsets.py:625 msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "تمثيل مجموعة عرض تتعامل مع كائنات الملاحظات. تدير هذه الفئة العمليات " "المتعلقة بكائنات الملاحظات، بما في ذلك الإدراج والتصفية واسترجاع التفاصيل. " "الغرض من مجموعة العرض هذه هو توفير متسلسلات مختلفة لإجراءات مختلفة وتنفيذ " -"معالجة قائمة على الأذونات لكائنات الملاحظات التي يمكن الوصول إليها. وهي توسع " -"\"مجموعة عرض الملاحظات\" الأساسية وتستفيد من نظام تصفية Django للاستعلام عن " -"البيانات." +"معالجة قائمة على الأذونات لكائنات الملاحظات التي يمكن الوصول إليها. وهي توسع" +" \"مجموعة عرض الملاحظات\" الأساسية وتستفيد من نظام تصفية Django للاستعلام عن" +" البيانات." #: engine/core/viewsets.py:652 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet لإدارة الطلبات والعمليات ذات الصلة. توفر هذه الفئة وظائف لاسترداد " @@ -3308,8 +3301,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "يوفر مجموعة طرق عرض لإدارة كيانات OrderProduct. تتيح مجموعة طرق العرض هذه " @@ -3341,15 +3334,15 @@ msgstr "يتعامل مع العمليات المتعلقة ببيانات ال msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" -"ViewSet لإدارة عمليات قائمة الرغبات. توفر مجموعة طرق عرض قائمة الأمنيات نقاط " -"نهاية للتفاعل مع قائمة أمنيات المستخدم، مما يسمح باسترجاع المنتجات وتعديلها " -"وتخصيصها ضمن قائمة الأمنيات. تسهل مجموعة العرض هذه وظائف مثل الإضافة " +"ViewSet لإدارة عمليات قائمة الرغبات. توفر مجموعة طرق عرض قائمة الأمنيات نقاط" +" نهاية للتفاعل مع قائمة أمنيات المستخدم، مما يسمح باسترجاع المنتجات وتعديلها" +" وتخصيصها ضمن قائمة الأمنيات. تسهل مجموعة العرض هذه وظائف مثل الإضافة " "والإزالة والإجراءات المجمعة لمنتجات قائمة الرغبات. يتم دمج عمليات التحقق من " "الأذونات للتأكد من أن المستخدمين يمكنهم فقط إدارة قوائم الرغبات الخاصة بهم " "ما لم يتم منح أذونات صريحة." diff --git a/engine/core/locale/cs_CZ/LC_MESSAGES/django.mo b/engine/core/locale/cs_CZ/LC_MESSAGES/django.mo index 55e735d6b0b5aa25699b38271d3b6aed0c9f0ab4..153c591254fae4c03161433d6707598a3094da1f 100644 GIT binary patch delta 14876 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 Ee{NK@kpKVy delta 14681 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 XcJ^P?ZSn5xReXQ=b{C2Bg(UnR3Itpb diff --git a/engine/core/locale/cs_CZ/LC_MESSAGES/django.po b/engine/core/locale/cs_CZ/LC_MESSAGES/django.po index 682be696..c76abc07 100644 --- a/engine/core/locale/cs_CZ/LC_MESSAGES/django.po +++ b/engine/core/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -28,7 +28,8 @@ msgstr "Je aktivní" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Pokud je nastaveno na false, nemohou tento objekt vidět uživatelé bez " "potřebného oprávnění." @@ -73,65 +74,65 @@ msgstr "Metadata" msgid "timestamps" msgstr "Časová razítka" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktivace vybraného %(verbose_name_plural)s" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Vybrané položky byly aktivovány!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deaktivace vybraných %(verbose_name_plural)s" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Vybrané položky byly deaktivovány!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Hodnota atributu" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Hodnoty atributů" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Obrázek" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Obrázky" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Stock" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Zásoby" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Objednat produkt" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Objednat produkty" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Děti" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Konfigurace" @@ -155,7 +156,8 @@ msgstr "Doručeno na" msgid "canceled" msgstr "Zrušeno" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Neúspěšný" @@ -197,11 +199,11 @@ msgstr "" "vyjednávání obsahu. Jazyk lze zvolit pomocí Accept-Language a parametru " "dotazu." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Vstup/výstup mezipaměti" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -209,36 +211,36 @@ msgstr "" "Použijte pouze klíč pro čtení povolených dat z mezipaměti.\n" "Pro zápis dat do mezipaměti použijte klíč, data a časový limit s ověřením." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Získat seznam podporovaných jazyků" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Získání vystavitelných parametrů aplikace" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Odeslání zprávy týmu podpory" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Vyžádejte si adresu URL s protokolem CORS. Povoleno pouze https." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Vyhledávání mezi produkty, kategoriemi a značkami" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" "Globální koncový bod vyhledávání pro dotazování napříč tabulkami projektu" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Zakoupit objednávku jako firma" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -246,7 +248,7 @@ msgstr "" "Zakoupit objednávku jako podnik s použitím zadaných `produktů` s " "`product_uuid` a `atributy`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "stáhnout digitální aktivum ze zakoupené digitální objednávky" @@ -272,7 +274,8 @@ msgstr "" "Přepsání existující skupiny atributů s uložením neupravitelných položek" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Přepsání některých polí existující skupiny atributů s uložením " "neupravitelných položek" @@ -324,7 +327,8 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Přepsání existující hodnoty atributu uložením neupravitelných položek" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Přepsání některých polí existující hodnoty atributu s uložením " "neupravitelných položek" @@ -360,9 +364,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "Meta snímek SEO" @@ -382,12 +386,12 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Vyhledávání podřetězců bez ohledu na velikost písmen v položkách " -"human_readable_id, order_products.product.name a order_products.product." -"partnumber" +"human_readable_id, order_products.product.name a " +"order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -423,9 +427,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Řazení podle jedné z následujících možností: uuid, human_readable_id, " "user_email, user, status, created, modified, buy_time, random. Pro sestupné " @@ -470,8 +474,8 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"Dokončí nákup objednávky. Pokud je použito `force_balance`, nákup se dokončí " -"s použitím zůstatku uživatele; pokud je použito `force_payment`, zahájí se " +"Dokončí nákup objednávky. Pokud je použito `force_balance`, nákup se dokončí" +" s použitím zůstatku uživatele; pokud je použito `force_payment`, zahájí se " "transakce." #: engine/core/docs/drf/viewsets.py:427 @@ -482,7 +486,7 @@ msgstr "načtení aktuální nevyřízené objednávky uživatele." msgid "retrieves a current pending order of an authenticated user" msgstr "načte aktuální čekající objednávku ověřeného uživatele." -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "zakoupení objednávky bez vytvoření účtu" @@ -602,7 +606,8 @@ msgstr "Přidání mnoha produktů do seznamu přání" #: engine/core/docs/drf/viewsets.py:579 msgid "adds many products to an wishlist using the provided `product_uuids`" -msgstr "Přidá mnoho produktů do seznamu přání pomocí zadaných `product_uuids`." +msgstr "" +"Přidá mnoho produktů do seznamu přání pomocí zadaných `product_uuids`." #: engine/core/docs/drf/viewsets.py:588 msgid "remove many products from wishlist" @@ -618,28 +623,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrování podle jedné nebo více dvojic název/hodnota atributu. \n" "- **Syntaxe**: `attr_name=method-value[;attr2=method2-value2]...`\n" -"- **Metody** (pokud je vynecháno, výchozí hodnota je `obsahuje`): `iexact`, " -"`exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, " -"`endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- **Typování hodnot**: Pro booleany, celá čísla, floaty se nejprve zkouší " -"JSON (takže můžete předávat seznamy/dicty), `true`/`false`; jinak se s nimi " -"zachází jako s řetězci. \n" -"- **Base64**: předpona `b64-` pro bezpečné zakódování surové hodnoty do URL " -"base64. \n" +"- **Metody** (pokud je vynecháno, výchozí hodnota je `obsahuje`): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Typování hodnot**: Pro booleany, celá čísla, floaty se nejprve zkouší JSON (takže můžete předávat seznamy/dicty), `true`/`false`; jinak se s nimi zachází jako s řetězci. \n" +"- **Base64**: předpona `b64-` pro bezpečné zakódování surové hodnoty do URL base64. \n" "Příklady: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" @@ -654,12 +649,10 @@ msgstr "(přesně) UUID produktu" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Seznam polí oddělených čárkou, podle kterých se má třídit. Pro sestupné " -"řazení použijte předponu `-`. \n" +"Seznam polí oddělených čárkou, podle kterých se má třídit. Pro sestupné řazení použijte předponu `-`. \n" "**Povolené:** uuid, rating, name, slug, created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -673,9 +666,6 @@ msgid "Product UUID or slug" msgstr "Identifikátor UUID produktu nebo Slug" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Vytvoření produktu" @@ -917,7 +907,8 @@ msgstr "Odstranění povýšení" #: engine/core/docs/drf/viewsets.py:1244 msgid "rewrite an existing promotion saving non-editables" -msgstr "Přepsání existující propagační akce s uložením neupravitelných položek" +msgstr "" +"Přepsání existující propagační akce s uložením neupravitelných položek" #: engine/core/docs/drf/viewsets.py:1251 msgid "rewrite some fields of an existing promotion saving non-editables" @@ -968,15 +959,16 @@ msgstr "Odstranění značky produktu" #: engine/core/docs/drf/viewsets.py:1342 msgid "rewrite an existing product tag saving non-editables" -msgstr "Přepsání existující značky produktu s uložením neupravitelných položek" +msgstr "" +"Přepsání existující značky produktu s uložením neupravitelných položek" #: engine/core/docs/drf/viewsets.py:1350 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Nebyl zadán žádný vyhledávací termín." @@ -985,8 +977,8 @@ msgstr "Nebyl zadán žádný vyhledávací termín." msgid "Search" msgstr "Vyhledávání" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1032,8 +1024,8 @@ msgid "Quantity" msgstr "Množství" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Slug" @@ -1049,7 +1041,7 @@ msgstr "Zahrnout podkategorie" msgid "Include personal ordered" msgstr "Zahrnout osobně objednané produkty" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1071,12 +1063,12 @@ msgid "Bought before (inclusive)" msgstr "Koupeno před (včetně)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "E-mail uživatele" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "UUID uživatele" @@ -1100,251 +1092,253 @@ msgstr "Celá kategorie (má nebo nemá alespoň 1 produkt)" msgid "Level" msgstr "Úroveň" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "UUID produktu" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Klíč k vyhledání v keši nebo nastavení do keše" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Data k uložení do mezipaměti" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Časový limit v sekundách pro nastavení dat do mezipaměti" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Data uložená v mezipaměti" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Kamelizovaná data JSON z požadované adresy URL" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Povoleny jsou pouze adresy URL začínající http(s)://." -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Přidání produktu do objednávky" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Objednávka {order_uuid} nebyla nalezena!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Odstranění produktu z objednávky" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Odstranění všech produktů z objednávky" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Koupit objednávku" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Zadejte prosím order_uuid nebo order_hr_id - vzájemně se vylučují!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Z metody order.buy() pochází nesprávný typ: {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Provedení akce na seznamu produktů v objednávce" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Odebrat/přidat" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Akce musí být buď \"přidat\", nebo \"odebrat\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Provedení akce na seznamu produktů v seznamu přání" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Zadejte prosím hodnotu `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Seznam přání {wishlist_uuid} nenalezen!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Přidání produktu do objednávky" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Odstranění produktu z objednávky" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Odstranění produktu z objednávky" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Odstranění produktu z objednávky" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Koupit objednávku" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Prosím, pošlete atributy jako řetězec ve formátu attr1=hodnota1," -"attr2=hodnota2." +"Prosím, pošlete atributy jako řetězec ve formátu " +"attr1=hodnota1,attr2=hodnota2." -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Přidání nebo odstranění zpětné vazby pro objednávkuprodukt" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Akce musí být buď `add` nebo `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Orderproduct {order_product_uuid} nenalezen!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Původní řetězec adresy zadaný uživatelem" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} neexistuje: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Limit musí být mezi 1 a 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funguje jako kouzlo" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Atributy" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Seskupené atributy" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Skupiny atributů" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Kategorie" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Značky" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Kategorie" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Procento přirážky" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "Které atributy a hodnoty lze použít pro filtrování této kategorie." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" -"Minimální a maximální ceny produktů v této kategorii, pokud jsou k dispozici." +"Minimální a maximální ceny produktů v této kategorii, pokud jsou k " +"dispozici." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Štítky pro tuto kategorii" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Produkty v této kategorii" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Prodejci" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Zeměpisná šířka (souřadnice Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Zeměpisná délka (souřadnice X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Jak na to" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Hodnota hodnocení od 1 do 10 včetně nebo 0, pokud není nastaveno." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Představuje zpětnou vazbu od uživatele." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Oznámení" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Stáhněte si url adresu pro tento objednaný produkt, pokud je to možné" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Zpětná vazba" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Seznam objednaných produktů v tomto pořadí" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Fakturační adresa" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1352,53 +1346,53 @@ msgstr "" "Dodací adresa pro tuto objednávku, pokud je stejná jako fakturační adresa " "nebo pokud není použitelná, ponechte prázdné." -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Celková cena této objednávky" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Celkové množství objednaných produktů" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Jsou všechny produkty v objednávce digitální" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transakce pro tuto objednávku" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Objednávky" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "Adresa URL obrázku" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Obrázky produktu" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Kategorie" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Zpětná vazba" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Značka" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Skupiny atributů" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1406,7 +1400,7 @@ msgstr "Skupiny atributů" msgid "price" msgstr "Cena" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1414,39 +1408,39 @@ msgstr "Cena" msgid "quantity" msgstr "Množství" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Počet zpětných vazeb" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Produkty jsou k dispozici pouze pro osobní objednávky" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Cena se slevou" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Produkty" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Propagační kódy" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Produkty v prodeji" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Propagační akce" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Prodejce" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1454,99 +1448,99 @@ msgstr "Prodejce" msgid "product" msgstr "Produkt" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Produkty uvedené na seznamu přání" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Seznamy přání" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Produkty s příznakem" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Štítky produktu" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Kategorie s příznakem" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Štítky kategorií" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Název projektu" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Název společnosti" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Adresa společnosti" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Telefonní číslo společnosti" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', někdy se musí použít místo hodnoty hostitelského uživatele." -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Uživatel hostitelského e-mailu" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Maximální částka pro platbu" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Minimální částka pro platbu" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Analytická data" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Reklamní údaje" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Konfigurace" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Kód jazyka" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Název jazyka" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Příznak jazyka, pokud existuje :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Získat seznam podporovaných jazyků" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Výsledky vyhledávání produktů" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Výsledky vyhledávání produktů" @@ -1563,23 +1557,23 @@ msgstr "" "užitečné pro efektivnější kategorizaci a správu atributů v komplexním " "systému." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Rodič této skupiny" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Nadřazená skupina atributů" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Název skupiny atributů" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Skupina atributů" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1593,53 +1587,53 @@ msgstr "" "dodavatelích a jejich požadavcích na interakci. Třída Vendor se používá k " "definování a správě informací týkajících se externího dodavatele. Uchovává " "jméno prodejce, údaje o ověření požadované pro komunikaci a procentuální " -"přirážku použitou na produkty získané od prodejce. Tento model také uchovává " -"další metadata a omezení, takže je vhodný pro použití v systémech, které " +"přirážku použitou na produkty získané od prodejce. Tento model také uchovává" +" další metadata a omezení, takže je vhodný pro použití v systémech, které " "komunikují s prodejci třetích stran." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Ukládá pověření a koncové body potřebné pro komunikaci s rozhraním API " "dodavatele." -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Informace o ověřování" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "Definice přirážky pro produkty získané od tohoto dodavatele" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Procento přirážky prodejce" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Název tohoto prodejce" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Název prodejce" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "soubor s odpovědí" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "poslední odpověď prodejce na zpracování" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Cesta k integračnímu souboru prodejce" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Cesta integrace" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1653,27 +1647,27 @@ msgstr "" "přívětivého zobrazovacího názvu. Podporuje operace exportované " "prostřednictvím mixinů a poskytuje přizpůsobení metadat pro účely správy." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Interní identifikátor značky produktu" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Název štítku" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Uživatelsky přívětivý název pro značku produktu" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Zobrazení názvu štítku" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Štítek produktu" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1684,15 +1678,15 @@ msgstr "" "Obsahuje atributy pro interní identifikátor značky a uživatelsky přívětivý " "zobrazovací název." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "značka kategorie" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "štítky kategorií" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1709,111 +1703,112 @@ msgstr "" "jinými kategoriemi a podporovat vztahy rodič-dítě. Třída obsahuje pole pro " "metadata a vizuální zobrazení, která slouží jako základ pro funkce " "související s kategoriemi. Tato třída se obvykle používá k definování a " -"správě kategorií produktů nebo jiných podobných seskupení v rámci aplikace a " -"umožňuje uživatelům nebo správcům zadávat název, popis a hierarchii " +"správě kategorií produktů nebo jiných podobných seskupení v rámci aplikace a" +" umožňuje uživatelům nebo správcům zadávat název, popis a hierarchii " "kategorií a také přiřazovat atributy, jako jsou obrázky, značky nebo " "priorita." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Nahrát obrázek reprezentující tuto kategorii" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Obrázek kategorie" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Definovat procento přirážky pro produkty v této kategorii." -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Nadřízený této kategorie, který tvoří hierarchickou strukturu." -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Nadřazená kategorie" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Název kategorie" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Uveďte název této kategorie" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Přidejte podrobný popis této kategorie" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Popis kategorie" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "značky, které pomáhají popsat nebo seskupit tuto kategorii" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Priorita" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Reprezentuje objekt značky v systému. Tato třída zpracovává informace a " "atributy související se značkou, včetně jejího názvu, loga, popisu, " "přidružených kategorií, jedinečného slugu a pořadí důležitosti. Umožňuje " "organizaci a reprezentaci dat souvisejících se značkou v rámci aplikace." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Název této značky" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Název značky" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Nahrát logo reprezentující tuto značku" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Malý obrázek značky" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Nahrát velké logo reprezentující tuto značku" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Velká image značky" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Přidejte podrobný popis značky" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Popis značky" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Volitelné kategorie, se kterými je tato značka spojena" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Kategorie" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1826,72 +1821,72 @@ msgstr "" "zásob, který umožňuje sledovat a vyhodnocovat produkty dostupné od různých " "dodavatelů." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Prodejce dodávající tento výrobek na sklad" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Přidružený prodejce" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Konečná cena pro zákazníka po přirážkách" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Prodejní cena" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Produkt spojený s touto skladovou položkou" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Související produkt" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Cena zaplacená prodejci za tento výrobek" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Kupní cena prodejce" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Dostupné množství produktu na skladě" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Množství na skladě" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU přidělený prodejcem pro identifikaci výrobku" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "SKU prodejce" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Digitální soubor spojený s touto zásobou, je-li to vhodné" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Digitální soubor" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Atributy systému" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Zápisy do zásob" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1906,67 +1901,75 @@ msgstr "" "digitální stav, název, popis, číslo dílu a přípona. Poskytuje související " "užitečné vlastnosti pro získání hodnocení, počtu zpětných vazeb, ceny, " "množství a celkového počtu objednávek. Určeno pro použití v systému, který " -"zpracovává elektronické obchodování nebo správu zásob. Tato třída komunikuje " -"se souvisejícími modely (například Category, Brand a ProductTag) a spravuje " -"ukládání často přistupovaných vlastností do mezipaměti pro zlepšení výkonu. " -"Používá se k definování a manipulaci s údaji o produktu a souvisejícími " +"zpracovává elektronické obchodování nebo správu zásob. Tato třída komunikuje" +" se souvisejícími modely (například Category, Brand a ProductTag) a spravuje" +" ukládání často přistupovaných vlastností do mezipaměti pro zlepšení výkonu." +" Používá se k definování a manipulaci s údaji o produktu a souvisejícími " "informacemi v rámci aplikace." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Kategorie, do které tento produkt patří" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Volitelně přiřadit tento produkt ke značce" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Značky, které pomáhají popsat nebo seskupit tento produkt" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Označuje, zda je tento produkt dodáván digitálně" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Je produkt digitální" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "označuje, zda má být tento produkt aktualizován z periodické úlohy." + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "je produkt aktualizovatelný" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Uveďte jasný identifikační název výrobku" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Název produktu" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Přidejte podrobný popis produktu" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Popis produktu" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Číslo dílu pro tento produkt" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Číslo dílu" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Skladová jednotka pro tento produkt" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Reprezentuje atribut v systému. Tato třída slouží k definování a správě " @@ -1976,179 +1979,179 @@ msgstr "" "booleanu, pole a objektu. To umožňuje dynamické a flexibilní strukturování " "dat." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Skupina tohoto atributu" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Řetězec" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Celé číslo" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Float" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Boolean" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Pole" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Objekt" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Typ hodnoty atributu" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Typ hodnoty" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Název tohoto atributu" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Název atributu" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "je filtrovatelný" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "určuje, zda lze tento atribut použít pro filtrování, nebo ne." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Atribut" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Představuje konkrétní hodnotu atributu, který je spojen s produktem. Spojuje " -"\"atribut\" s jedinečnou \"hodnotou\", což umožňuje lepší organizaci a " +"Představuje konkrétní hodnotu atributu, který je spojen s produktem. Spojuje" +" \"atribut\" s jedinečnou \"hodnotou\", což umožňuje lepší organizaci a " "dynamickou reprezentaci vlastností produktu." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Atribut této hodnoty" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Konkrétní produkt spojený s hodnotou tohoto atributu" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Konkrétní hodnota tohoto atributu" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Představuje obrázek produktu spojený s produktem v systému. Tato třída je " "určena ke správě obrázků produktů, včetně funkcí pro nahrávání souborů s " -"obrázky, jejich přiřazování ke konkrétním produktům a určování pořadí jejich " -"zobrazení. Obsahuje také funkci pro zpřístupnění alternativního textu pro " +"obrázky, jejich přiřazování ke konkrétním produktům a určování pořadí jejich" +" zobrazení. Obsahuje také funkci pro zpřístupnění alternativního textu pro " "obrázky." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Poskytněte alternativní text k obrázku kvůli přístupnosti." -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Text alt obrázku" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Nahrát soubor s obrázkem tohoto produktu" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Obrázek produktu" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Určuje pořadí, v jakém se obrázky zobrazují." -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Priorita zobrazení" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Výrobek, který tento obrázek představuje" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Obrázky produktů" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"Představuje propagační kampaň na produkty se slevou. Tato třída se používá k " -"definici a správě propagačních kampaní, které nabízejí procentuální slevu na " -"produkty. Třída obsahuje atributy pro nastavení slevové sazby, poskytnutí " -"podrobností o akci a její propojení s příslušnými produkty. Integruje se s " +"Představuje propagační kampaň na produkty se slevou. Tato třída se používá k" +" definici a správě propagačních kampaní, které nabízejí procentuální slevu " +"na produkty. Třída obsahuje atributy pro nastavení slevové sazby, poskytnutí" +" podrobností o akci a její propojení s příslušnými produkty. Integruje se s " "katalogem produktů, aby bylo možné určit položky, kterých se kampaň týká." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Procentuální sleva na vybrané produkty" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Procento slevy" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Uveďte jedinečný název této propagační akce" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Název akce" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Popis propagace" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Vyberte, které produkty jsou zahrnuty do této akce" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Zahrnuté produkty" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Propagace" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2160,30 +2163,30 @@ msgstr "" "operace, jako je přidávání a odebírání produktů, a také operace pro " "přidávání a odebírání více produktů najednou." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Výrobky, které uživatel označil jako požadované" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Uživatel, který vlastní tento seznam přání" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Majitel seznamu přání" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Seznam přání" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Představuje dokumentační záznam vázaný na produkt. Tato třída se používá k " "ukládání informací o dokumentech souvisejících s konkrétními produkty, " @@ -2191,91 +2194,91 @@ msgstr "" "zpracování typu souboru a cesty k uložení souborů dokumentů. Rozšiřuje " "funkčnost konkrétních mixinů a poskytuje další vlastní funkce." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Dokumentární film" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Dokumentární filmy" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Nevyřešené" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Reprezentuje entitu adresy, která obsahuje údaje o umístění a asociace s " "uživatelem. Poskytuje funkce pro ukládání geografických a adresních dat a " "integraci se službami geokódování. Tato třída je určena k ukládání " "podrobných informací o adrese včetně komponent, jako je ulice, město, " "region, země a geolokace (zeměpisná délka a šířka). Podporuje integraci se " -"službami API pro geokódování a umožňuje ukládání nezpracovaných odpovědí API " -"pro další zpracování nebo kontrolu. Třída také umožňuje přiřadit adresu k " +"službami API pro geokódování a umožňuje ukládání nezpracovaných odpovědí API" +" pro další zpracování nebo kontrolu. Třída také umožňuje přiřadit adresu k " "uživateli, což usnadňuje personalizované zpracování dat." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Adresní řádek pro zákazníka" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Adresní řádek" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Ulice" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Okres" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Město" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Region" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Poštovní směrovací číslo" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Země" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokace Bod(Zeměpisná délka, Zeměpisná šířka)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Úplná odpověď JSON z geokodéru pro tuto adresu" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Uložená odpověď JSON ze služby geokódování" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Adresa" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adresy" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2291,71 +2294,71 @@ msgstr "" "existuje) a stavu jeho použití. Obsahuje funkce pro ověření platnosti a " "použití propagačního kódu na objednávku při zajištění splnění omezení." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Jedinečný kód, který uživatel použije k uplatnění slevy." -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Identifikátor propagačního kódu" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Pevná výše slevy, pokud není použito procento" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Pevná výše slevy" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentuální sleva uplatněná v případě nevyužití pevné částky" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Procentuální sleva" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Časové razítko ukončení platnosti promokódu" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Doba ukončení platnosti" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Časové razítko, od kterého je tento promokód platný" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Čas zahájení platnosti" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Časové razítko použití promokódu, prázdné, pokud ještě nebyl použit." -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Časové razítko použití" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Uživatel přiřazený k tomuto promokódu, je-li to relevantní" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Přiřazený uživatel" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Propagační kód" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Propagační kódy" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2363,21 +2366,21 @@ msgstr "" "Měl by být definován pouze jeden typ slevy (částka nebo procento), nikoli " "však oba typy slev nebo žádný z nich." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Promo kód byl již použit" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Neplatný typ slevy pro promokód {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2389,136 +2392,137 @@ msgstr "" "fakturaci. Stejně tak funkce podporuje správu produktů v životním cyklu " "objednávky." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Fakturační adresa použitá pro tuto objednávku" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Volitelný promo kód použitý na tuto objednávku" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Použitý promo kód" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Dodací adresa použitá pro tuto objednávku" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Dodací adresa" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Aktuální stav zakázky v jejím životním cyklu" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Stav objednávky" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "JSON struktura oznámení pro zobrazení uživatelům, v uživatelském rozhraní " "administrátora se používá tabulkové zobrazení." -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "JSON reprezentace atributů objednávky pro tuto objednávku" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "Uživatel, který zadal objednávku" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Uživatel" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Časové razítko, kdy byla objednávka dokončena." -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Kupte si čas" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Lidsky čitelný identifikátor objednávky" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "lidsky čitelné ID" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Objednávka" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "Uživatel smí mít vždy pouze jednu čekající objednávku!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" -msgstr "Do objednávky, která není v procesu vyřizování, nelze přidat produkty." +msgstr "" +"Do objednávky, která není v procesu vyřizování, nelze přidat produkty." -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Do objednávky nelze přidat neaktivní produkty" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "Nelze přidat více produktů, než je dostupné na skladě" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "Nelze odebrat produkty z objednávky, která není nevyřízená." -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} neexistuje s dotazem <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Promo kód neexistuje" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "Fyzické produkty můžete zakoupit pouze se zadanou dodací adresou!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Adresa neexistuje" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "V tuto chvíli nemůžete nakupovat, zkuste to prosím znovu za několik minut." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Neplatná hodnota síly" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Nelze zakoupit prázdnou objednávku!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "Bez uživatele nelze objednávku zakoupit!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Uživatel bez zůstatku nemůže nakupovat se zůstatkem!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Nedostatek finančních prostředků na dokončení objednávky" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2526,14 +2530,14 @@ msgstr "" "bez registrace nelze nakupovat, uveďte prosím následující údaje: jméno " "zákazníka, e-mail zákazníka, telefonní číslo zákazníka." -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Neplatný způsob platby: {payment_method} z {available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2542,38 +2546,39 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "spravuje zpětnou vazbu uživatelů k produktům. Tato třída je určena k " -"zachycování a ukládání zpětné vazby uživatelů ke konkrétním produktům, které " -"si zakoupili. Obsahuje atributy pro ukládání komentářů uživatelů, odkaz na " +"zachycování a ukládání zpětné vazby uživatelů ke konkrétním produktům, které" +" si zakoupili. Obsahuje atributy pro ukládání komentářů uživatelů, odkaz na " "související produkt v objednávce a hodnocení přiřazené uživatelem. Třída " "využívá databázová pole k efektivnímu modelování a správě dat zpětné vazby." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "Komentáře uživatelů o jejich zkušenostech s produktem" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Zpětná vazba" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "Odkazuje na konkrétní produkt v objednávce, kterého se tato zpětná vazba " "týká." -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Související objednávka produktu" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Hodnocení produktu přidělené uživatelem" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Hodnocení produktu" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2595,115 +2600,115 @@ msgstr "" "produktů. Model se integruje s modely objednávek a produktů a ukládá na ně " "odkaz." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "Cena, kterou zákazník zaplatil za tento produkt v době nákupu." -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Nákupní cena v době objednávky" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Interní komentáře pro administrátory k tomuto objednanému produktu" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Interní připomínky" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Oznámení uživatele" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "JSON reprezentace atributů této položky" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Objednané atributy produktu" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Odkaz na nadřazenou objednávku, která obsahuje tento produkt" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Objednávka rodičů" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Konkrétní produkt spojený s touto objednávkou" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Množství tohoto konkrétního produktu v objednávce" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Množství produktu" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Aktuální stav tohoto produktu v objednávce" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Stav produktové řady" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Orderproduct musí mít přiřazenou objednávku!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Špatně zadaná akce pro zpětnou vazbu: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "nelze poskytnout zpětnou vazbu na objednávku, která nebyla přijata" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Název" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "Adresa URL integrace" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Ověřovací pověření" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Můžete mít pouze jednoho výchozího poskytovatele CRM" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Odkaz na CRM objednávky" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Odkazy CRM objednávek" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Představuje funkci stahování digitálních aktiv spojených s objednávkami. " "Třída DigitalAssetDownload poskytuje možnost spravovat a zpřístupňovat " @@ -2712,11 +2717,11 @@ msgstr "" "veřejně viditelné. Obsahuje metodu pro generování adresy URL pro stažení " "aktiva, když je přidružená objednávka ve stavu dokončena." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Stáhnout" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Ke stažení na" @@ -2916,8 +2921,7 @@ msgstr "Ahoj %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Děkujeme vám za vaši objednávku #%(order.pk)s! S potěšením Vám oznamujeme, " @@ -3032,8 +3036,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Děkujeme vám za vaši objednávku! S potěšením potvrzujeme váš nákup. Níže " @@ -3064,11 +3067,11 @@ msgstr "" "všechna práva\n" " vyhrazeno" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Jsou vyžadována data i časový limit" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Nesprávná hodnota timeoutu, musí být v rozmezí 0 až 216000 sekund." @@ -3100,13 +3103,13 @@ msgstr "K provedení této akce nemáte oprávnění." msgid "NOMINATIM_URL must be configured." msgstr "Parametr NOMINATIM_URL musí být nakonfigurován!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Rozměry obrázku by neměly přesáhnout w{max_width} x h{max_height} pixelů." -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3114,7 +3117,7 @@ msgstr "" "Zpracuje požadavek na index mapy stránek a vrátí odpověď XML. Zajistí, aby " "odpověď obsahovala odpovídající hlavičku typu obsahu XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3124,28 +3127,28 @@ msgstr "" "požadavek, načte příslušnou podrobnou odpověď mapy stránek a nastaví " "hlavičku Content-Type pro XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Vrátí seznam podporovaných jazyků a odpovídajících informací." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Vrátí parametry webové stránky jako objekt JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"Zpracovává operace mezipaměti, jako je čtení a nastavování dat mezipaměti se " -"zadaným klíčem a časovým limitem." +"Zpracovává operace mezipaměti, jako je čtení a nastavování dat mezipaměti se" +" zadaným klíčem a časovým limitem." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Zpracovává odeslání formuláře `contact us`." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3153,83 +3156,75 @@ msgstr "" "Zpracovává požadavky na zpracování a ověřování adres URL z příchozích " "požadavků POST." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Zpracovává globální vyhledávací dotazy." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Řeší logiku nákupu jako firmy bez registrace." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Zpracovává stahování digitálního aktiva spojeného s objednávkou.\n" -"Tato funkce se pokusí obsloužit soubor digitálního aktiva umístěný v " -"adresáři úložiště projektu. Pokud soubor není nalezen, je vyvolána chyba " -"HTTP 404, která označuje, že zdroj není k dispozici." +"Tato funkce se pokusí obsloužit soubor digitálního aktiva umístěný v adresáři úložiště projektu. Pokud soubor není nalezen, je vyvolána chyba HTTP 404, která označuje, že zdroj není k dispozici." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid je povinné" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "objednávka produktu neexistuje" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Digitální aktivum můžete stáhnout pouze jednou" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "objednávka musí být zaplacena před stažením digitálního aktiva." -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Objednaný produkt nemá produkt" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon nebyl nalezen" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Zpracovává požadavky na favicon webové stránky.\n" -"Tato funkce se pokusí obsloužit soubor favicon umístěný ve statickém " -"adresáři projektu. Pokud soubor favicon není nalezen, je vyvolána chyba HTTP " -"404, která označuje, že zdroj není k dispozici." +"Tato funkce se pokusí obsloužit soubor favicon umístěný ve statickém adresáři projektu. Pokud soubor favicon není nalezen, je vyvolána chyba HTTP 404, která označuje, že zdroj není k dispozici." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Přesměruje požadavek na indexovou stránku správce. Funkce zpracovává " "příchozí požadavky HTTP a přesměrovává je na indexovou stránku " -"administrátorského rozhraní Django. Pro zpracování přesměrování HTTP používá " -"funkci `redirect` Djanga." +"administrátorského rozhraní Django. Pro zpracování přesměrování HTTP používá" +" funkci `redirect` Djanga." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Vrací aktuální verzi systému eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Příjmy a objednávky (poslední %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Vrací vlastní proměnné pro Dashboard." @@ -3244,14 +3239,16 @@ msgstr "" "Definuje sadu pohledů pro správu operací souvisejících s Evibes. Třída " "EvibesViewSet dědí z ModelViewSet a poskytuje funkce pro zpracování akcí a " "operací s entitami Evibes. Zahrnuje podporu dynamických tříd serializátorů " -"na základě aktuální akce, přizpůsobitelných oprávnění a formátů vykreslování." +"na základě aktuální akce, přizpůsobitelných oprávnění a formátů " +"vykreslování." #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Představuje sadu pohledů pro správu objektů AttributeGroup. Zpracovává " "operace související s AttributeGroup, včetně filtrování, serializace a " @@ -3280,8 +3277,8 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Sada pohledů pro správu objektů AttributeValue. Tato sada pohledů poskytuje " "funkce pro výpis, načítání, vytváření, aktualizaci a mazání objektů " @@ -3330,8 +3327,8 @@ msgstr "" "serializace a operací s konkrétními instancemi. Rozšiřuje se z " "`EvibesViewSet`, aby využívala společné funkce, a integruje se s rámcem " "Django REST pro operace RESTful API. Obsahuje metody pro načítání " -"podrobností o produktu, uplatňování oprávnění a přístup k související zpětné " -"vazbě produktu." +"podrobností o produktu, uplatňování oprávnění a přístup k související zpětné" +" vazbě produktu." #: engine/core/viewsets.py:605 msgid "" @@ -3352,8 +3349,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Reprezentace sady zobrazení, která zpracovává objekty zpětné vazby. Tato " @@ -3368,31 +3365,31 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet pro správu objednávek a souvisejících operací. Tato třída poskytuje " "funkce pro načítání, úpravu a správu objektů objednávek. Obsahuje různé " "koncové body pro zpracování operací s objednávkami, jako je přidávání nebo " "odebírání produktů, provádění nákupů pro registrované i neregistrované " -"uživatele a načítání nevyřízených objednávek aktuálního ověřeného uživatele. " -"Sada ViewSet používá několik serializátorů podle konkrétní prováděné akce a " -"podle toho vynucuje oprávnění při interakci s daty objednávek." +"uživatele a načítání nevyřízených objednávek aktuálního ověřeného uživatele." +" Sada ViewSet používá několik serializátorů podle konkrétní prováděné akce a" +" podle toho vynucuje oprávnění při interakci s daty objednávek." #: engine/core/viewsets.py:914 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Poskytuje sadu pohledů pro správu entit OrderProduct. Tato sada pohledů " "umožňuje operace CRUD a vlastní akce specifické pro model OrderProduct. " -"Zahrnuje filtrování, kontroly oprávnění a přepínání serializátoru na základě " -"požadované akce. Kromě toho poskytuje podrobnou akci pro zpracování zpětné " +"Zahrnuje filtrování, kontroly oprávnění a přepínání serializátoru na základě" +" požadované akce. Kromě toho poskytuje podrobnou akci pro zpracování zpětné " "vazby na instance OrderProduct" #: engine/core/viewsets.py:974 @@ -3419,8 +3416,8 @@ msgstr "Zpracovává operace související s údaji o zásobách v systému." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3441,9 +3438,9 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"Tato třída poskytuje funkce sady pohledů pro správu objektů `Address`. Třída " -"AddressViewSet umožňuje operace CRUD, filtrování a vlastní akce související " -"s entitami adres. Obsahuje specializované chování pro různé metody HTTP, " +"Tato třída poskytuje funkce sady pohledů pro správu objektů `Address`. Třída" +" AddressViewSet umožňuje operace CRUD, filtrování a vlastní akce související" +" s entitami adres. Obsahuje specializované chování pro různé metody HTTP, " "přepisování serializátoru a zpracování oprávnění na základě kontextu " "požadavku." @@ -3463,5 +3460,5 @@ msgstr "" "Zpracovává operace související se značkami produktů v rámci aplikace. Tato " "třída poskytuje funkce pro načítání, filtrování a serializaci objektů " "Product Tag. Podporuje flexibilní filtrování podle konkrétních atributů " -"pomocí zadaného filtru backend a dynamicky používá různé serializátory podle " -"prováděné akce." +"pomocí zadaného filtru backend a dynamicky používá různé serializátory podle" +" prováděné akce." diff --git a/engine/core/locale/da_DK/LC_MESSAGES/django.mo b/engine/core/locale/da_DK/LC_MESSAGES/django.mo index e5e008a115da33c57074eab5cd78141fa3052719..e6617767cc610fd62b981271ba61ab0342b2933d 100644 GIT binary patch delta 14840 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 P_=X delta 14681 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "Er aktiv" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Hvis det er sat til false, kan dette objekt ikke ses af brugere uden den " "nødvendige tilladelse." @@ -72,65 +73,65 @@ msgstr "Metadata" msgid "timestamps" msgstr "Tidsstempler" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktivér valgt %(verbose_name_plural)s." -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Udvalgte varer er blevet aktiveret!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deaktiver valgte %(verbose_name_plural)s." -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Udvalgte varer er blevet deaktiveret!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Attributværdi" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Attributværdier" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Billede" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Billeder" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Lager" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Aktier" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Bestil produkt" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Bestil produkter" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Børn" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Konfig" @@ -154,7 +155,8 @@ msgstr "Leveret" msgid "canceled" msgstr "Annulleret" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Mislykket" @@ -195,48 +197,47 @@ msgstr "" "OpenApi3-skema for denne API. Format kan vælges via indholdsforhandling. " "Sprog kan vælges med både Accept-Language og query parameter." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Cache-I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Anvend kun en nøgle til at læse tilladte data fra cachen.\n" -"Anvend nøgle, data og timeout med autentificering for at skrive data til " -"cachen." +"Anvend nøgle, data og timeout med autentificering for at skrive data til cachen." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Få en liste over understøttede sprog" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Hent applikationens eksponerbare parametre" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Send en besked til supportteamet" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Anmod om en CORSed URL. Kun https er tilladt." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Søg mellem produkter, kategorier og mærker" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "Globalt søgepunkt til at søge på tværs af projektets tabeller" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Køb en ordre som virksomhed" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -244,7 +245,7 @@ msgstr "" "Køb en ordre som en virksomhed ved hjælp af de angivne `produkter` med " "`produkt_uuid` og `attributter`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "Download et digitalt aktiv fra en købt digital ordre" @@ -271,7 +272,8 @@ msgstr "" "attributter" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende attributgruppe og gem ikke-" "redigerbare felter" @@ -324,10 +326,11 @@ msgstr "" "Omskriv en eksisterende attributværdi, der gemmer ikke-redigerbare filer" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" -"Omskriv nogle felter i en eksisterende attributværdi og gem ikke-redigerbare " -"felter" +"Omskriv nogle felter i en eksisterende attributværdi og gem ikke-redigerbare" +" felter" #: engine/core/docs/drf/viewsets.py:219 engine/core/docs/drf/viewsets.py:220 msgid "list all categories (simple view)" @@ -361,9 +364,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO-meta-snapshot" @@ -377,16 +380,17 @@ msgstr "Liste over alle kategorier (enkel visning)" #: engine/core/docs/drf/viewsets.py:303 msgid "for non-staff users, only their own orders are returned." -msgstr "For ikke-ansatte brugere er det kun deres egne ordrer, der returneres." +msgstr "" +"For ikke-ansatte brugere er det kun deres egne ordrer, der returneres." #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Substringsøgning uden brug af store og små bogstaver på tværs af " -"human_readable_id, order_products.product.name og order_products.product." -"partnumber" +"human_readable_id, order_products.product.name og " +"order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -418,13 +422,13 @@ msgstr "Filtrer efter ordrestatus (case-insensitive substring match)" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Bestil efter en af: uuid, human_readable_id, user_email, user, status, " -"created, modified, buy_time, random. Præfiks med '-' for faldende rækkefølge " -"(f.eks. '-buy_time')." +"created, modified, buy_time, random. Præfiks med '-' for faldende rækkefølge" +" (f.eks. '-buy_time')." #: engine/core/docs/drf/viewsets.py:366 msgid "retrieve a single order (detailed view)" @@ -478,7 +482,7 @@ msgstr "Hent en brugers aktuelle afventende ordre" msgid "retrieves a current pending order of an authenticated user" msgstr "henter en aktuel afventende ordre fra en autentificeret bruger" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "Køb en ordre uden at oprette en konto" @@ -594,7 +598,8 @@ msgstr "Fjern et produkt fra ønskelisten" #: engine/core/docs/drf/viewsets.py:568 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -"Fjerner et produkt fra en ønskeliste ved hjælp af den angivne `product_uuid`." +"Fjerner et produkt fra en ønskeliste ved hjælp af den angivne " +"`product_uuid`." #: engine/core/docs/drf/viewsets.py:577 msgid "add many products to wishlist" @@ -621,28 +626,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrer efter et eller flere attributnavn/værdipar. \n" "- **Syntaks**: `attr_name=method-value[;attr2=method2-value2]...`.\n" -"- **Metoder** (standard er `icontains`, hvis udeladt): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- Værdiindtastning**: JSON forsøges først (så du kan sende lister/dikter), " -"`true`/`false` for booleans, heltal, floats; ellers behandles de som " -"strenge. \n" -"- **Base64**: præfiks med `b64-` for URL-sikker base64-kodning af den rå " -"værdi. \n" +"- **Metoder** (standard er `icontains`, hvis udeladt): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- Værdiindtastning**: JSON forsøges først (så du kan sende lister/dikter), `true`/`false` for booleans, heltal, floats; ellers behandles de som strenge. \n" +"- **Base64**: præfiks med `b64-` for URL-sikker base64-kodning af den rå værdi. \n" "Eksempler på dette: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." @@ -657,12 +652,10 @@ msgstr "(præcis) Produkt-UUID" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Kommasepareret liste over felter, der skal sorteres efter. Præfiks med `-` " -"for faldende. \n" +"Kommasepareret liste over felter, der skal sorteres efter. Præfiks med `-` for faldende. \n" "**Tilladt:** uuid, vurdering, navn, slug, oprettet, ændret, pris, tilfældig" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -676,9 +669,6 @@ msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Opret et produkt" @@ -982,8 +972,8 @@ msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Der er ikke angivet noget søgeord." @@ -992,8 +982,8 @@ msgstr "Der er ikke angivet noget søgeord." msgid "Search" msgstr "Søg efter" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1039,8 +1029,8 @@ msgid "Quantity" msgstr "Mængde" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Snegl" @@ -1056,7 +1046,7 @@ msgstr "Inkluder underkategorier" msgid "Include personal ordered" msgstr "Inkluder personligt bestilte produkter" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "VARENUMMER" @@ -1078,12 +1068,12 @@ msgid "Bought before (inclusive)" msgstr "Købt før (inklusive)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "Brugerens e-mail" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "Bruger UUID" @@ -1107,255 +1097,257 @@ msgstr "Hele kategorien (har mindst 1 produkt eller ej)" msgid "Level" msgstr "Niveau" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "Produkt UUID" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Nøgle til at lede efter i eller lægge i cachen" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Data, der skal gemmes i cachen" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout i sekunder for at lægge data i cachen" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Cachelagrede data" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Cameliserede JSON-data fra den ønskede URL" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Kun URL'er, der starter med http(s)://, er tilladt." -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Tilføj et produkt til ordren" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Ordre {order_uuid} ikke fundet!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Fjern et produkt fra ordren" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Fjern alle produkter fra ordren" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Køb en ordre" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Angiv enten order_uuid eller order_hr_id - det udelukker hinanden!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Forkert type kom fra metoden order.buy(): {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Udfør en handling på en liste af produkter i ordren" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Fjern/tilføj" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Handlingen skal være enten \"tilføj\" eller \"fjern\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Udfør en handling på en liste af produkter i ønskelisten" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Angiv venligst værdien `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Ønskeliste {wishlist_uuid} ikke fundet!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Tilføj et produkt til ordren" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Fjern et produkt fra ordren" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Fjern et produkt fra ordren" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Fjern et produkt fra ordren" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Køb en ordre" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Send venligst attributterne som en streng formateret som attr1=værdi1," -"attr2=værdi2" +"Send venligst attributterne som en streng formateret som " +"attr1=værdi1,attr2=værdi2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Tilføj eller slet en feedback til ordreproduktet" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Handlingen skal være enten `add` eller `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Ordreprodukt {order_product_uuid} ikke fundet!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Original adressestreng leveret af brugeren" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} findes ikke: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Grænsen skal være mellem 1 og 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fungerer som en charme" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Egenskaber" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Grupperede attributter" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Grupper af attributter" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Kategorier" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Mærker" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Kategorier" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Markup-procentdel" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" -"Hvilke attributter og værdier, der kan bruges til at filtrere denne kategori." +"Hvilke attributter og værdier, der kan bruges til at filtrere denne " +"kategori." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimums- og maksimumspriser for produkter i denne kategori, hvis de er " "tilgængelige." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Tags for denne kategori" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Produkter i denne kategori" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Leverandører" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Breddegrad (Y-koordinat)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Længdegrad (X-koordinat)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Sådan gør du" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Vurderingsværdi fra 1 til 10, inklusive, eller 0, hvis den ikke er " "indstillet." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Repræsenterer feedback fra en bruger." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Meddelelser" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Download url for dette ordreprodukt, hvis det er relevant" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Feedback" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "En liste over bestillingsprodukter i denne ordre" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Faktureringsadresse" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1363,53 +1355,53 @@ msgstr "" "Leveringsadresse for denne ordre, lad den være tom, hvis den er den samme " "som faktureringsadressen, eller hvis den ikke er relevant" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Samlet pris for denne ordre" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Samlet antal produkter i ordren" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Er alle produkterne i ordren digitale?" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transaktioner for denne ordre" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Bestillinger" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "Billed-URL" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Produktets billeder" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Kategori" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Tilbagemeldinger" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Brand" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Attributgrupper" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1417,7 +1409,7 @@ msgstr "Attributgrupper" msgid "price" msgstr "Pris" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1425,39 +1417,39 @@ msgstr "Pris" msgid "quantity" msgstr "Mængde" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Antal tilbagemeldinger" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Produkter kun tilgængelige for personlige bestillinger" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Rabatpris" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Produkter" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Promokoder" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Produkter til salg" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Kampagner" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Leverandør" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1465,99 +1457,99 @@ msgstr "Leverandør" msgid "product" msgstr "Produkt" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Produkter på ønskelisten" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Ønskelister" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Mærkede produkter" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Produktmærker" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Tagged kategorier" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Kategoriernes tags" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Projektets navn" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Virksomhedens navn" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Virksomhedens adresse" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Virksomhedens telefonnummer" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'e-mail fra', nogle gange skal den bruges i stedet for værtsbrugerværdien" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "E-mail-værtsbruger" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Maksimalt beløb til betaling" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Minimumsbeløb for betaling" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Analytiske data" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Data om reklamer" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Konfiguration" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Sprogkode" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Sprogets navn" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Sprogflag, hvis det findes :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Få en liste over understøttede sprog" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Søgeresultater for produkter" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Søgeresultater for produkter" @@ -1574,23 +1566,23 @@ msgstr "" "struktur. Dette kan være nyttigt til at kategorisere og styre attributter " "mere effektivt i et komplekst system." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Forælder til denne gruppe" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Overordnet attributgruppe" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Attributgruppens navn" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Attributgruppe" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1602,56 +1594,56 @@ msgid "" msgstr "" "Repræsenterer en vendor-enhed, der er i stand til at lagre oplysninger om " "eksterne leverandører og deres interaktionskrav. Vendor-klassen bruges til " -"at definere og administrere oplysninger om en ekstern leverandør. Den gemmer " -"leverandørens navn, godkendelsesoplysninger, der kræves til kommunikation, " +"at definere og administrere oplysninger om en ekstern leverandør. Den gemmer" +" leverandørens navn, godkendelsesoplysninger, der kræves til kommunikation, " "og den procentvise markering, der anvendes på produkter, der hentes fra " "leverandøren. Denne model vedligeholder også yderligere metadata og " -"begrænsninger, hvilket gør den velegnet til brug i systemer, der interagerer " -"med tredjepartsleverandører." +"begrænsninger, hvilket gør den velegnet til brug i systemer, der interagerer" +" med tredjepartsleverandører." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Gemmer legitimationsoplysninger og slutpunkter, der er nødvendige for " "leverandørens API-kommunikation" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Oplysninger om godkendelse" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "Definer markeringen for produkter, der hentes fra denne leverandør" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Sælgerens markup-procentdel" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Navn på denne leverandør" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Leverandørens navn" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "Svarfil" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "leverandørens sidste behandlingssvar" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Leverandørens sti til integrationsfilen" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Integrationsvej" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1663,30 +1655,30 @@ msgstr "" "identificere produkter. ProductTag-klassen er designet til entydigt at " "identificere og klassificere produkter gennem en kombination af en intern " "tag-identifikator og et brugervenligt visningsnavn. Den understøtter " -"operationer, der eksporteres gennem mixins, og giver mulighed for tilpasning " -"af metadata til administrative formål." +"operationer, der eksporteres gennem mixins, og giver mulighed for tilpasning" +" af metadata til administrative formål." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Intern tag-identifikator for produkttagget" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Tag-navn" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Brugervenligt navn til produktmærket" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Navn på tag-visning" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Produktmærke" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1697,15 +1689,15 @@ msgstr "" "produkter. Den indeholder attributter til en intern tag-identifikator og et " "brugervenligt visningsnavn." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "Kategori-tag" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "Kategori-tags" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1723,111 +1715,112 @@ msgstr "" "Klassen indeholder felter til metadata og visuel repræsentation, som " "fungerer som et fundament for kategorirelaterede funktioner. Denne klasse " "bruges typisk til at definere og administrere produktkategorier eller andre " -"lignende grupperinger i en applikation, så brugere eller administratorer kan " -"angive navn, beskrivelse og hierarki for kategorier samt tildele attributter " -"som billeder, tags eller prioritet." +"lignende grupperinger i en applikation, så brugere eller administratorer kan" +" angive navn, beskrivelse og hierarki for kategorier samt tildele " +"attributter som billeder, tags eller prioritet." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Upload et billede, der repræsenterer denne kategori" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Kategori billede" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Definer en markup-procentdel for produkter i denne kategori" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Forælder til denne kategori for at danne en hierarkisk struktur" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Overordnet kategori" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Navn på kategori" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Giv et navn til denne kategori" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Tilføj en detaljeret beskrivelse af denne kategori" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Beskrivelse af kategori" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "tags, der hjælper med at beskrive eller gruppere denne kategori" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Prioritet" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"Repræsenterer et brand-objekt i systemet. Denne klasse håndterer oplysninger " -"og attributter relateret til et brand, herunder dets navn, logoer, " -"beskrivelse, tilknyttede kategorier, en unik slug og prioriteret rækkefølge. " -"Den gør det muligt at organisere og repræsentere brand-relaterede data i " +"Repræsenterer et brand-objekt i systemet. Denne klasse håndterer oplysninger" +" og attributter relateret til et brand, herunder dets navn, logoer, " +"beskrivelse, tilknyttede kategorier, en unik slug og prioriteret rækkefølge." +" Den gør det muligt at organisere og repræsentere brand-relaterede data i " "applikationen." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Navnet på dette mærke" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Varemærke" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Upload et logo, der repræsenterer dette brand" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Brandets lille image" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Upload et stort logo, der repræsenterer dette brand" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Brandets store image" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Tilføj en detaljeret beskrivelse af brandet" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Varemærkebeskrivelse" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Valgfrie kategorier, som dette brand er forbundet med" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Kategorier" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1835,77 +1828,77 @@ msgid "" msgstr "" "Repræsenterer lageret af et produkt, der administreres i systemet. Denne " "klasse giver detaljer om forholdet mellem leverandører, produkter og deres " -"lageroplysninger samt lagerrelaterede egenskaber som pris, købspris, mængde, " -"SKU og digitale aktiver. Den er en del af lagerstyringssystemet for at " +"lageroplysninger samt lagerrelaterede egenskaber som pris, købspris, mængde," +" SKU og digitale aktiver. Den er en del af lagerstyringssystemet for at " "muliggøre sporing og evaluering af produkter, der er tilgængelige fra " "forskellige leverandører." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Den leverandør, der leverer dette produkt, lagerfører" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Tilknyttet leverandør" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Endelig pris til kunden efter tillæg" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Salgspris" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Det produkt, der er knyttet til denne lagerpost" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Tilknyttet produkt" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Den pris, der er betalt til sælgeren for dette produkt" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Leverandørens købspris" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Tilgængelig mængde af produktet på lager" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Antal på lager" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "Leverandørtildelt SKU til identifikation af produktet" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "Leverandørens SKU" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Digital fil knyttet til dette lager, hvis relevant" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Digital fil" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Systemets egenskaber" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Lagerposteringer" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1921,160 +1914,169 @@ msgstr "" "egenskaber til at hente vurderinger, antal tilbagemeldinger, pris, antal og " "samlede ordrer. Designet til brug i et system, der håndterer e-handel eller " "lagerstyring. Denne klasse interagerer med relaterede modeller (såsom " -"Category, Brand og ProductTag) og administrerer caching for hyppigt anvendte " -"egenskaber for at forbedre ydeevnen. Den bruges til at definere og " +"Category, Brand og ProductTag) og administrerer caching for hyppigt anvendte" +" egenskaber for at forbedre ydeevnen. Den bruges til at definere og " "manipulere produktdata og tilhørende oplysninger i en applikation." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Kategori, som dette produkt tilhører" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Tilknyt eventuelt dette produkt til et brand" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Tags, der hjælper med at beskrive eller gruppere dette produkt" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Angiver, om dette produkt leveres digitalt" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Er produktet digitalt?" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "angiver, om dette produkt skal opdateres fra periodisk opgave" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "kan produktet opdateres" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Giv produktet et klart identificerende navn" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Produktets navn" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Tilføj en detaljeret beskrivelse af produktet" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Produktbeskrivelse" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Reservedelsnummer for dette produkt" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Varenummer" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Lagerbeholdning for dette produkt" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"Repræsenterer en attribut i systemet. Denne klasse bruges til at definere og " -"administrere attributter, som er data, der kan tilpasses, og som kan knyttes " -"til andre enheder. Attributter har tilknyttede kategorier, grupper, " +"Repræsenterer en attribut i systemet. Denne klasse bruges til at definere og" +" administrere attributter, som er data, der kan tilpasses, og som kan " +"knyttes til andre enheder. Attributter har tilknyttede kategorier, grupper, " "værdityper og navne. Modellen understøtter flere typer værdier, herunder " "string, integer, float, boolean, array og object. Det giver mulighed for " "dynamisk og fleksibel datastrukturering." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Gruppe af denne attribut" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Streng" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Heltal" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Flyder" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Boolsk" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Array" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Objekt" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Type af attributtens værdi" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Værditype" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Navn på denne attribut" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Attributtens navn" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "er filtrerbar" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" -"Hvilke attributter og værdier, der kan bruges til at filtrere denne kategori." +"Hvilke attributter og værdier, der kan bruges til at filtrere denne " +"kategori." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribut" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Repræsenterer en specifik værdi for en attribut, der er knyttet til et " "produkt. Den forbinder 'attributten' med en unik 'værdi', hvilket giver " "mulighed for bedre organisering og dynamisk repræsentation af " "produktegenskaber." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Attribut for denne værdi" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Det specifikke produkt, der er knyttet til denne attributs værdi" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Den specifikke værdi for denne attribut" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2084,46 +2086,46 @@ msgstr "" "specifikke produkter og bestemme deres visningsrækkefølge. Den indeholder " "også en tilgængelighedsfunktion med alternativ tekst til billederne." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Giv alternativ tekst til billedet af hensyn til tilgængeligheden" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Billedets alt-tekst" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Upload billedfilen til dette produkt" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Produktbillede" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Bestemmer den rækkefølge, billederne vises i" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Skærm-prioritet" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Det produkt, som dette billede repræsenterer" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Produktbilleder" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Repræsenterer en reklamekampagne for produkter med rabat. Denne klasse " "bruges til at definere og administrere kampagner, der tilbyder en " @@ -2132,39 +2134,39 @@ msgstr "" "relevante produkter. Den integreres med produktkataloget for at bestemme de " "berørte varer i kampagnen." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Procentvis rabat for de valgte produkter" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Rabatprocent" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Giv et unikt navn til denne kampagne" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Navn på kampagne" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Beskrivelse af kampagnen" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Vælg, hvilke produkter der er inkluderet i denne kampagne" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Inkluderede produkter" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Forfremmelse" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2177,30 +2179,30 @@ msgstr "" "produkter samt operationer til at tilføje og fjerne flere produkter på én " "gang." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Produkter, som brugeren har markeret som ønskede" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Bruger, der ejer denne ønskeliste" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Ønskelistens ejer" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Ønskeliste" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Repræsenterer en dokumentarisk post, der er knyttet til et produkt. Denne " "klasse bruges til at gemme oplysninger om dokumentarfilm relateret til " @@ -2209,28 +2211,28 @@ msgstr "" "dokumentarfilerne. Den udvider funktionaliteten fra specifikke mixins og " "giver yderligere brugerdefinerede funktioner." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Dokumentarfilm" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Dokumentarfilm" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Uafklaret" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Repræsenterer en adresseenhed, der indeholder placeringsoplysninger og " "tilknytninger til en bruger. Indeholder funktionalitet til lagring af " @@ -2242,59 +2244,59 @@ msgstr "" "Klassen gør det også muligt at knytte en adresse til en bruger, hvilket " "letter personlig datahåndtering." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Adresselinje til kunden" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Adresselinje" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Gade" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Distrikt" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "By" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Region" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Postnummer" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Land" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokaliseringspunkt (længdegrad, breddegrad)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Fuldt JSON-svar fra geokoderen for denne adresse" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Gemt JSON-svar fra geokodningstjenesten" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Adresse" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adresser" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2305,77 +2307,77 @@ msgid "" msgstr "" "Repræsenterer en kampagnekode, der kan bruges til rabatter, og styrer dens " "gyldighed, rabattype og anvendelse. PromoCode-klassen gemmer oplysninger om " -"en kampagnekode, herunder dens unikke identifikator, rabattegenskaber (beløb " -"eller procent), gyldighedsperiode, tilknyttet bruger (hvis nogen) og status " -"for dens brug. Den indeholder funktionalitet til at validere og anvende " +"en kampagnekode, herunder dens unikke identifikator, rabattegenskaber (beløb" +" eller procent), gyldighedsperiode, tilknyttet bruger (hvis nogen) og status" +" for dens brug. Den indeholder funktionalitet til at validere og anvende " "kampagnekoden på en ordre og samtidig sikre, at begrænsningerne er opfyldt." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Unik kode, der bruges af en bruger til at indløse en rabat" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Identifikator for kampagnekode" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Fast rabatbeløb anvendes, hvis procent ikke bruges" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Fast rabatbeløb" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentvis rabat, hvis det faste beløb ikke bruges" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Procentvis rabat" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Tidsstempel, når promokoden udløber" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Slut gyldighedstid" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Tidsstempel, hvorfra denne promokode er gyldig" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Start gyldighedstid" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Tidsstempel, hvor promokoden blev brugt, blank, hvis den ikke er brugt endnu" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Tidsstempel for brug" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Bruger tildelt denne promokode, hvis relevant" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Tildelt bruger" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Kampagnekode" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Kampagnekoder" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2383,21 +2385,21 @@ msgstr "" "Der skal kun defineres én type rabat (beløb eller procent), men ikke begge " "eller ingen af dem." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Promokoden er allerede blevet brugt" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ugyldig rabattype for promokode {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2405,141 +2407,143 @@ msgstr "" "ordre i applikationen, herunder dens forskellige attributter såsom " "fakturerings- og forsendelsesoplysninger, status, tilknyttet bruger, " "notifikationer og relaterede operationer. Ordrer kan have tilknyttede " -"produkter, kampagner kan anvendes, adresser kan indstilles, og forsendelses- " -"eller faktureringsoplysninger kan opdateres. Ligeledes understøtter " +"produkter, kampagner kan anvendes, adresser kan indstilles, og forsendelses-" +" eller faktureringsoplysninger kan opdateres. Ligeledes understøtter " "funktionaliteten håndtering af produkterne i ordrens livscyklus." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Den faktureringsadresse, der bruges til denne ordre" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Valgfri kampagnekode anvendt på denne ordre" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Anvendt kampagnekode" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Den leveringsadresse, der er brugt til denne ordre" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Leveringsadresse" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Ordrens aktuelle status i dens livscyklus" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Bestillingsstatus" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" -"JSON-struktur af meddelelser, der skal vises til brugerne, i admin UI bruges " -"tabelvisningen" +"JSON-struktur af meddelelser, der skal vises til brugerne, i admin UI bruges" +" tabelvisningen" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "JSON-repræsentation af ordreattributter for denne ordre" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "Den bruger, der har afgivet ordren" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Bruger" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Tidsstemplet for, hvornår ordren blev afsluttet" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Køb tid" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "En menneskeligt læsbar identifikator for ordren" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "menneskeligt læsbart ID" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Bestil" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "En bruger må kun have én afventende ordre ad gangen!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "Du kan ikke tilføje produkter til en ordre, der ikke er i gang." -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Du kan ikke tilføje inaktive produkter til en ordre" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "Du kan ikke tilføje flere produkter, end der er på lager" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende ordre." +"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende " +"ordre." -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} findes ikke med forespørgslen <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Promokode findes ikke" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "Du kan kun købe fysiske produkter med angivet leveringsadresse!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Adressen findes ikke" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "Du kan ikke købe i øjeblikket, prøv venligst igen om et par minutter." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Ugyldig kraftværdi" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Du kan ikke købe en tom ordre!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "" -"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende ordre." +"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende " +"ordre." -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "En bruger uden saldo kan ikke købe med saldo!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Utilstrækkelige midler til at gennemføre ordren" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2547,14 +2551,14 @@ msgstr "" "du kan ikke købe uden registrering, angiv venligst følgende oplysninger: " "kundens navn, kundens e-mail, kundens telefonnummer" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Ugyldig betalingsmetode: {payment_method} fra {available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2569,32 +2573,34 @@ msgstr "" "bruger databasefelter til effektivt at modellere og administrere " "feedbackdata." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "Brugernes kommentarer om deres oplevelse med produktet" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Kommentarer til feedback" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Henviser til det specifikke produkt i en ordre, som denne feedback handler om" +"Henviser til det specifikke produkt i en ordre, som denne feedback handler " +"om" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Relateret ordreprodukt" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Brugertildelt vurdering af produktet" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Produktvurdering" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2607,8 +2613,8 @@ msgid "" "Product models and stores a reference to them." msgstr "" "Repræsenterer produkter forbundet med ordrer og deres attributter. " -"OrderProduct-modellen vedligeholder oplysninger om et produkt, der er en del " -"af en ordre, herunder detaljer som købspris, antal, produktattributter og " +"OrderProduct-modellen vedligeholder oplysninger om et produkt, der er en del" +" af en ordre, herunder detaljer som købspris, antal, produktattributter og " "status. Den administrerer notifikationer til brugeren og administratorer og " "håndterer operationer som f.eks. at returnere produktsaldoen eller tilføje " "feedback. Modellen indeholder også metoder og egenskaber, der understøtter " @@ -2616,116 +2622,117 @@ msgstr "" "en download-URL for digitale produkter. Modellen integreres med Order- og " "Product-modellerne og gemmer en reference til dem." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "Den pris, som kunden har betalt for dette produkt på købstidspunktet" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Købspris på bestillingstidspunktet" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Interne kommentarer til administratorer om dette bestilte produkt" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Interne kommentarer" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Notifikationer til brugere" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "JSON-repræsentation af dette elements attributter" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Bestilte produktattributter" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Henvisning til den overordnede ordre, der indeholder dette produkt" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Forældreordre" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Det specifikke produkt, der er knyttet til denne ordrelinje" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Mængde af dette specifikke produkt i ordren" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Produktmængde" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Aktuel status for dette produkt i bestillingen" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Status for produktlinje" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Orderproduct skal have en tilknyttet ordre!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Forkert handling angivet for feedback: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "" -"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende ordre." +"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende " +"ordre." -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Navn" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL til integrationen" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Legitimationsoplysninger til godkendelse" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Du kan kun have én standard CRM-udbyder" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM'er" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Ordrens CRM-link" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Bestillingernes CRM-links" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Repræsenterer downloadfunktionen for digitale aktiver, der er forbundet med " "ordrer. DigitalAssetDownload-klassen giver mulighed for at administrere og " @@ -2735,11 +2742,11 @@ msgstr "" "URL til download af aktivet, når den tilknyttede ordre har status som " "afsluttet." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Download" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Downloads" @@ -2940,8 +2947,7 @@ msgstr "Hej %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Tak for din ordre #%(order.pk)s! Vi er glade for at kunne informere dig om, " @@ -3055,8 +3061,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Tak for din bestilling! Vi er glade for at kunne bekræfte dit køb. Nedenfor " @@ -3087,11 +3092,11 @@ msgstr "" "alle rettigheder\n" " forbeholdt" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Både data og timeout er påkrævet" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Ugyldig timeout-værdi, den skal være mellem 0 og 216000 sekunder" @@ -3123,13 +3128,14 @@ msgstr "Du har ikke tilladelse til at udføre denne handling." msgid "NOMINATIM_URL must be configured." msgstr "Parameteren NOMINATIM_URL skal være konfigureret!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -"Billedets dimensioner bør ikke overstige w{max_width} x h{max_height} pixels." +"Billedets dimensioner bør ikke overstige w{max_width} x h{max_height} " +"pixels." -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3137,7 +3143,7 @@ msgstr "" "Håndterer anmodningen om sitemap-indekset og returnerer et XML-svar. Den " "sikrer, at svaret indeholder den passende indholdstypeheader for XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3147,17 +3153,17 @@ msgstr "" "behandler anmodningen, henter det relevante sitemap-detaljesvar og " "indstiller Content-Type-headeren til XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returnerer en liste over understøttede sprog og de tilhørende oplysninger." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerer hjemmesidens parametre som et JSON-objekt." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3165,11 +3171,11 @@ msgstr "" "Håndterer cache-operationer som f.eks. læsning og indstilling af cachedata " "med en specificeret nøgle og timeout." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Håndterer indsendelser af `kontakt os`-formularer." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3177,66 +3183,58 @@ msgstr "" "Håndterer anmodninger om behandling og validering af URL'er fra indgående " "POST-anmodninger." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Håndterer globale søgeforespørgsler." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Håndterer logikken i at købe som en virksomhed uden registrering." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Håndterer download af et digitalt aktiv, der er knyttet til en ordre.\n" -"Denne funktion forsøger at betjene den digitale aktivfil, der ligger i " -"projektets lagermappe. Hvis filen ikke findes, udløses en HTTP 404-fejl som " -"tegn på, at ressourcen ikke er tilgængelig." +"Denne funktion forsøger at betjene den digitale aktivfil, der ligger i projektets lagermappe. Hvis filen ikke findes, udløses en HTTP 404-fejl som tegn på, at ressourcen ikke er tilgængelig." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid er påkrævet" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "Bestil produkt findes ikke" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Du kan kun downloade det digitale aktiv én gang" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "Ordren skal betales, før det digitale aktiv downloades." -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Ordreproduktet har ikke et produkt" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "Favicon ikke fundet" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Håndterer anmodninger om et websteds favicon.\n" -"Denne funktion forsøger at servere favicon-filen, der ligger i projektets " -"statiske mappe. Hvis favicon-filen ikke findes, udløses en HTTP 404-fejl for " -"at angive, at ressourcen ikke er tilgængelig." +"Denne funktion forsøger at servere favicon-filen, der ligger i projektets statiske mappe. Hvis favicon-filen ikke findes, udløses en HTTP 404-fejl for at angive, at ressourcen ikke er tilgængelig." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Omdirigerer anmodningen til administratorens indeksside. Funktionen " @@ -3244,16 +3242,16 @@ msgstr "" "administratorinterfacets indeksside. Den bruger Djangos `redirect`-funktion " "til at håndtere HTTP-omdirigeringen." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Returnerer den aktuelle version af eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Indtægter og ordrer (sidste %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Returnerer brugerdefinerede variabler til Dashboard." @@ -3273,10 +3271,11 @@ msgstr "" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Repræsenterer et visningssæt til håndtering af AttributeGroup-objekter. " "Håndterer operationer relateret til AttributeGroup, herunder filtrering, " @@ -3305,11 +3304,11 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"Et visningssæt til håndtering af AttributeValue-objekter. Dette viewet giver " -"funktionalitet til at liste, hente, oprette, opdatere og slette " +"Et visningssæt til håndtering af AttributeValue-objekter. Dette viewet giver" +" funktionalitet til at liste, hente, oprette, opdatere og slette " "AttributeValue-objekter. Det integreres med Django REST Framework's viewset-" "mekanismer og bruger passende serializers til forskellige handlinger. " "Filtreringsfunktioner leveres gennem DjangoFilterBackend." @@ -3335,8 +3334,8 @@ msgid "" "uses Django's ViewSet framework to simplify the implementation of API " "endpoints for Brand objects." msgstr "" -"Repræsenterer et visningssæt til håndtering af Brand-instanser. Denne klasse " -"giver funktionalitet til at forespørge, filtrere og serialisere Brand-" +"Repræsenterer et visningssæt til håndtering af Brand-instanser. Denne klasse" +" giver funktionalitet til at forespørge, filtrere og serialisere Brand-" "objekter. Den bruger Djangos ViewSet-rammeværk til at forenkle " "implementeringen af API-slutpunkter for Brand-objekter." @@ -3353,9 +3352,9 @@ msgstr "" "Håndterer operationer relateret til `Product`-modellen i systemet. Denne " "klasse giver et visningssæt til håndtering af produkter, herunder deres " "filtrering, serialisering og operationer på specifikke forekomster. Den " -"udvider fra `EvibesViewSet` for at bruge fælles funktionalitet og integrerer " -"med Django REST-frameworket til RESTful API-operationer. Indeholder metoder " -"til at hente produktoplysninger, anvende tilladelser og få adgang til " +"udvider fra `EvibesViewSet` for at bruge fælles funktionalitet og integrerer" +" med Django REST-frameworket til RESTful API-operationer. Indeholder metoder" +" til at hente produktoplysninger, anvende tilladelser og få adgang til " "relateret feedback om et produkt." #: engine/core/viewsets.py:605 @@ -3366,9 +3365,9 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Repræsenterer et visningssæt til håndtering af Vendor-objekter. Dette viewet " -"gør det muligt at hente, filtrere og serialisere Vendor-data. Det definerer " -"queryset, filterkonfigurationer og serializer-klasser, der bruges til at " +"Repræsenterer et visningssæt til håndtering af Vendor-objekter. Dette viewet" +" gør det muligt at hente, filtrere og serialisere Vendor-data. Det definerer" +" queryset, filterkonfigurationer og serializer-klasser, der bruges til at " "håndtere forskellige handlinger. Formålet med denne klasse er at give " "strømlinet adgang til Vendor-relaterede ressourcer gennem Django REST-" "frameworket." @@ -3378,16 +3377,16 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Repræsentation af et visningssæt, der håndterer feedback-objekter. Denne " -"klasse håndterer handlinger relateret til feedback-objekter, herunder liste, " -"filtrering og hentning af detaljer. Formålet med dette visningssæt er at " +"klasse håndterer handlinger relateret til feedback-objekter, herunder liste," +" filtrering og hentning af detaljer. Formålet med dette visningssæt er at " "levere forskellige serializers til forskellige handlinger og implementere " -"tilladelsesbaseret håndtering af tilgængelige feedback-objekter. Det udvider " -"basen `EvibesViewSet` og gør brug af Djangos filtreringssystem til at " +"tilladelsesbaseret håndtering af tilgængelige feedback-objekter. Det udvider" +" basen `EvibesViewSet` og gør brug af Djangos filtreringssystem til at " "forespørge på data." #: engine/core/viewsets.py:652 @@ -3395,14 +3394,14 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet til håndtering af ordrer og relaterede operationer. Denne klasse " -"indeholder funktionalitet til at hente, ændre og administrere ordreobjekter. " -"Den indeholder forskellige endpoints til håndtering af ordreoperationer " +"indeholder funktionalitet til at hente, ændre og administrere ordreobjekter." +" Den indeholder forskellige endpoints til håndtering af ordreoperationer " "såsom tilføjelse eller fjernelse af produkter, udførelse af køb for " "registrerede såvel som uregistrerede brugere og hentning af den aktuelle " "godkendte brugers afventende ordrer. ViewSet bruger flere serializers " @@ -3413,13 +3412,13 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Indeholder et visningssæt til håndtering af OrderProduct-enheder. Dette " -"visningssæt muliggør CRUD-operationer og brugerdefinerede handlinger, der er " -"specifikke for OrderProduct-modellen. Det omfatter filtrering, kontrol af " +"visningssæt muliggør CRUD-operationer og brugerdefinerede handlinger, der er" +" specifikke for OrderProduct-modellen. Det omfatter filtrering, kontrol af " "tilladelser og skift af serializer baseret på den ønskede handling. " "Derudover indeholder det en detaljeret handling til håndtering af feedback " "på OrderProduct-instanser." @@ -3448,8 +3447,8 @@ msgstr "Håndterer operationer relateret til lagerdata i systemet." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3470,11 +3469,11 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"Denne klasse giver viewset-funktionalitet til håndtering af `Address`-" -"objekter. AddressViewSet-klassen muliggør CRUD-operationer, filtrering og " -"brugerdefinerede handlinger relateret til adresseenheder. Den omfatter " -"specialiseret adfærd for forskellige HTTP-metoder, tilsidesættelse af " -"serializer og håndtering af tilladelser baseret på anmodningskonteksten." +"Denne klasse giver viewset-funktionalitet til håndtering af " +"`Address`-objekter. AddressViewSet-klassen muliggør CRUD-operationer, " +"filtrering og brugerdefinerede handlinger relateret til adresseenheder. Den " +"omfatter specialiseret adfærd for forskellige HTTP-metoder, tilsidesættelse " +"af serializer og håndtering af tilladelser baseret på anmodningskonteksten." #: engine/core/viewsets.py:1254 #, python-brace-format diff --git a/engine/core/locale/de_DE/LC_MESSAGES/django.mo b/engine/core/locale/de_DE/LC_MESSAGES/django.mo index 0541965be79e7719e04a3d1418be81d67f9e85ce..0c8c764d72f5e030d0e4b2bba5f6cf2ded2af1a6 100644 GIT binary patch delta 14890 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 delta 14681 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 diff --git a/engine/core/locale/de_DE/LC_MESSAGES/django.po b/engine/core/locale/de_DE/LC_MESSAGES/django.po index b5aff5a9..9e89ddb1 100644 --- a/engine/core/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/core/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Ist aktiv" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Wenn auf false gesetzt, kann dieses Objekt von Benutzern ohne die " "erforderliche Berechtigung nicht gesehen werden." @@ -74,65 +75,65 @@ msgstr "Metadaten" msgid "timestamps" msgstr "Zeitstempel" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Ausgewählte %(verbose_name_plural)s aktivieren" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Ausgewählte Artikel wurden aktiviert!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Ausgewählte %(verbose_name_plural)s deaktivieren" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Ausgewählte Artikel wurden deaktiviert!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Attribut Wert" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Attribut Werte" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Bild" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Bilder" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Lagerbestand" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Bestände" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Produkt bestellen" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Produkte bestellen" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Kinder" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Konfigurieren Sie" @@ -156,7 +157,8 @@ msgstr "Geliefert" msgid "canceled" msgstr "Abgesagt" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Gescheitert" @@ -198,49 +200,47 @@ msgstr "" "ausgewählt werden. Die Sprache kann sowohl mit Accept-Language als auch mit " "Query-Parameter ausgewählt werden." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -"Wenden Sie nur einen Schlüssel an, um erlaubte Daten aus dem Cache zu " -"lesen.\n" -"Schlüssel, Daten und Timeout mit Authentifizierung anwenden, um Daten in den " -"Cache zu schreiben." +"Wenden Sie nur einen Schlüssel an, um erlaubte Daten aus dem Cache zu lesen.\n" +"Schlüssel, Daten und Timeout mit Authentifizierung anwenden, um Daten in den Cache zu schreiben." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Eine Liste der unterstützten Sprachen abrufen" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Abrufen der exponierbaren Parameter der Anwendung" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Senden Sie eine Nachricht an das Support-Team" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Fordern Sie eine CORS-gesicherte URL an. Nur https erlaubt." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Suche zwischen Produkten, Kategorien und Marken" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "Globaler Suchendpunkt zur Abfrage aller Tabellen des Projekts" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Eine Bestellung als Unternehmen kaufen" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -248,7 +248,7 @@ msgstr "" "Kauf einer Bestellung als Unternehmen unter Verwendung der angegebenen " "\"Produkte\" mit \"product_uuid\" und \"Attributen\"." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "" "ein digitales Asset aus einer erworbenen digitalen Bestellung herunterladen" @@ -276,7 +276,8 @@ msgstr "" "Editierbarkeit" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Umschreiben einiger Felder einer bestehenden Attributgruppe, wobei nicht " "editierbare Felder gespeichert werden" @@ -306,8 +307,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:156 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare" +" Daten zu speichern" #: engine/core/docs/drf/viewsets.py:166 msgid "list all attribute values (simple view)" @@ -332,7 +333,8 @@ msgstr "" "Editierbarkeit" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Umschreiben einiger Felder eines vorhandenen Attributwerts, wobei nicht " "bearbeitbare Daten gespeichert werden" @@ -365,14 +367,14 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:270 engine/core/docs/drf/viewsets.py:272 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO-Meta-Schnappschuss" @@ -391,12 +393,12 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Groß- und Kleinschreibung unempfindliche Teilstringsuche über " -"human_readable_id, order_products.product.name und order_products.product." -"partnumber" +"human_readable_id, order_products.product.name und " +"order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -432,9 +434,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Sortierung nach einem von: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. Präfix mit '-' für absteigend " @@ -468,8 +470,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:403 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: engine/core/docs/drf/viewsets.py:410 msgid "purchase an order" @@ -495,14 +497,15 @@ msgstr "" "ruft eine aktuelle ausstehende Bestellung eines authentifizierten Benutzers " "ab" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "eine Bestellung kaufen, ohne ein Konto anzulegen" #: engine/core/docs/drf/viewsets.py:439 msgid "finalizes the order purchase for a non-registered user." msgstr "" -"schließt den Kauf einer Bestellung für einen nicht registrierten Benutzer ab." +"schließt den Kauf einer Bestellung für einen nicht registrierten Benutzer " +"ab." #: engine/core/docs/drf/viewsets.py:450 msgid "add product to order" @@ -519,8 +522,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:461 msgid "add a list of products to order, quantities will not count" msgstr "" -"Fügen Sie eine Liste der zu bestellenden Produkte hinzu, Mengen werden nicht " -"gezählt" +"Fügen Sie eine Liste der zu bestellenden Produkte hinzu, Mengen werden nicht" +" gezählt" #: engine/core/docs/drf/viewsets.py:463 msgid "" @@ -589,8 +592,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:537 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare" +" Daten zu speichern" #: engine/core/docs/drf/viewsets.py:544 msgid "retrieve current pending wishlist of a user" @@ -599,8 +602,8 @@ msgstr "Abruf der aktuellen Wunschliste eines Benutzers" #: engine/core/docs/drf/viewsets.py:545 msgid "retrieves a current pending wishlist of an authenticated user" msgstr "" -"ruft eine aktuelle ausstehende Wunschliste eines authentifizierten Benutzers " -"ab" +"ruft eine aktuelle ausstehende Wunschliste eines authentifizierten Benutzers" +" ab" #: engine/core/docs/drf/viewsets.py:555 msgid "add product to wishlist" @@ -647,29 +650,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtern Sie nach einem oder mehreren Attributnamen/Wertpaaren. \n" "- **Syntax**: `attr_name=Methode-Wert[;attr2=Methode2-Wert2]...`\n" -"- **Methoden** (Standardwert ist \"icontains\", wenn nicht angegeben): " -"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, " -"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, " -"`gt`, `gte`, `in`\n" -"- **Wert-Typisierung**: JSON wird zuerst versucht (damit man Listen/Dicts " -"übergeben kann), `true`/`false` für Booleans, Integers, Floats; ansonsten " -"als String behandelt. \n" -"- Base64**: Präfix \"b64-\" für URL-sichere Base64-Kodierung des " -"Rohwertes. \n" +"- **Methoden** (Standardwert ist \"icontains\", wenn nicht angegeben): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Wert-Typisierung**: JSON wird zuerst versucht (damit man Listen/Dicts übergeben kann), `true`/`false` für Booleans, Integers, Floats; ansonsten als String behandelt. \n" +"- Base64**: Präfix \"b64-\" für URL-sichere Base64-Kodierung des Rohwertes. \n" "Beispiele: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" @@ -684,12 +676,10 @@ msgstr "(genaue) Produkt-UUID" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Durch Kommata getrennte Liste der Felder, nach denen sortiert werden soll. " -"Präfix mit \"-\" für absteigend. \n" +"Durch Kommata getrennte Liste der Felder, nach denen sortiert werden soll. Präfix mit \"-\" für absteigend. \n" "**Erlaubt:** uuid, rating, name, slug, created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -703,17 +693,14 @@ msgid "Product UUID or slug" msgstr "Produkt UUID oder Slug" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Ein Produkt erstellen" #: engine/core/docs/drf/viewsets.py:677 engine/core/docs/drf/viewsets.py:678 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -"Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer " -"Felder" +"Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer" +" Felder" #: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:700 msgid "" @@ -765,10 +752,10 @@ msgstr "Autovervollständigung der Adresseingabe" #: engine/core/docs/drf/viewsets.py:848 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -"docker compose exec app poetry run python manage.py deepl_translate -l en-gb " -"-l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " -"it-it -l ja-jp -l kk-kz -l nl-nl -l pl -l pt-br -l ro-ro -l ru-ru -l zh-hans " -"-a core -a geo -a payments -a vibes_auth -a blog" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl -l pt-br -l ro-ro -l ru-ru -l zh-hans" +" -a core -a geo -a payments -a vibes_auth -a blog" #: engine/core/docs/drf/viewsets.py:855 msgid "limit the results amount, 1 < limit < 10, default: 5" @@ -798,8 +785,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:909 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: engine/core/docs/drf/viewsets.py:919 msgid "list all order–product relations (simple view)" @@ -858,8 +845,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1039 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: engine/core/docs/drf/viewsets.py:1064 msgid "list all vendors (simple view)" @@ -885,8 +872,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1102 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: engine/core/docs/drf/viewsets.py:1112 msgid "list all product images (simple view)" @@ -912,8 +899,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1154 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: engine/core/docs/drf/viewsets.py:1165 msgid "list all promo codes (simple view)" @@ -939,8 +926,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1203 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: engine/core/docs/drf/viewsets.py:1213 msgid "list all promotions (simple view)" @@ -966,8 +953,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1251 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: engine/core/docs/drf/viewsets.py:1261 msgid "list all stocks (simple view)" @@ -993,8 +980,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1297 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: engine/core/docs/drf/viewsets.py:1308 msgid "list all product tags (simple view)" @@ -1020,11 +1007,11 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1350 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Kein Suchbegriff angegeben." @@ -1033,8 +1020,8 @@ msgstr "Kein Suchbegriff angegeben." msgid "Search" msgstr "Suche" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1080,8 +1067,8 @@ msgid "Quantity" msgstr "Menge" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Schnecke" @@ -1097,15 +1084,15 @@ msgstr "Unterkategorien einbeziehen" msgid "Include personal ordered" msgstr "Persönlich bestellte Produkte einbeziehen" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" #: engine/core/filters.py:212 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" -"Es muss eine category_uuid vorhanden sein, um das Flag include_subcategories " -"zu verwenden" +"Es muss eine category_uuid vorhanden sein, um das Flag include_subcategories" +" zu verwenden" #: engine/core/filters.py:398 msgid "Search (ID, product name or part number)" @@ -1120,12 +1107,12 @@ msgid "Bought before (inclusive)" msgstr "Gekauft vor (einschließlich)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "Benutzer-E-Mail" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "User UUID" @@ -1149,256 +1136,259 @@ msgstr "Gesamte Kategorie (mit oder ohne mindestens 1 Produkt)" msgid "Level" msgstr "Ebene" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "Produkt UUID" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Schlüssel, der im Cache zu suchen oder in den Cache zu legen ist" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Im Cache zu speichernde Daten" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout in Sekunden, um die Daten in den Cache zu stellen" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Zwischengespeicherte Daten" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-Daten aus der angeforderten URL" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Nur URLs, die mit http(s):// beginnen, sind zulässig" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Auftrag {order_uuid} nicht gefunden!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Ein Produkt aus der Bestellung entfernen" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Alle Produkte aus der Bestellung entfernen" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Eine Bestellung kaufen" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Bitte geben Sie entweder order_uuid oder order_hr_id an - beide schließen " "sich gegenseitig aus!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Von der Methode order.buy() kam der falsche Typ: {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Eine Aktion für eine Liste von Produkten in der Bestellung ausführen" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Entfernen/Hinzufügen" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Aktion muss entweder \"Hinzufügen\" oder \"Entfernen\" sein!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" -msgstr "Ausführen einer Aktion für eine Liste von Produkten in der Wunschliste" +msgstr "" +"Ausführen einer Aktion für eine Liste von Produkten in der Wunschliste" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Bitte geben Sie den Wert `wishlist_uuid` an." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} nicht gefunden!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Eine Bestellung kaufen" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Bitte senden Sie die Attribute als String im Format attr1=wert1,attr2=wert2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "" "Feedback zu einer Bestellung-Produkt-Beziehung hinzufügen oder entfernen" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Aktion muss entweder `Add` oder `remove` sein!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Bestellprodukt {order_product_uuid} nicht gefunden!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Vom Benutzer angegebene Originaladresse" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} existiert nicht: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Der Grenzwert muss zwischen 1 und 10 liegen." -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funktioniert wie ein Zauber" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Attribute" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Gruppierte Attribute" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Gruppen von Attributen" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Kategorien" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Marken" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Kategorien" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Markup Percentage" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Welche Attribute und Werte können für die Filterung dieser Kategorie " "verwendet werden." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" -"Mindest- und Höchstpreise für Produkte in dieser Kategorie, sofern verfügbar." +"Mindest- und Höchstpreise für Produkte in dieser Kategorie, sofern " +"verfügbar." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Tags für diese Kategorie" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Produkte in dieser Kategorie" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Anbieter" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Breitengrad (Y-Koordinate)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Längengrad (X-Koordinate)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Wie" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Bewertungswert von 1 bis einschließlich 10 oder 0, wenn nicht festgelegt." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Stellt das Feedback eines Benutzers dar." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Benachrichtigungen" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Download-Url für dieses Bestellprodukt, falls zutreffend" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Rückmeldung" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Eine Liste der bestellten Produkte in dieser Reihenfolge" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Rechnungsadresse" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1406,53 +1396,53 @@ msgstr "" "Lieferadresse für diese Bestellung, leer lassen, wenn sie mit der " "Rechnungsadresse übereinstimmt oder nicht zutrifft" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Gesamtpreis für diese Bestellung" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Gesamtmenge der bestellten Produkte" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Sind alle Produkte in der Bestellung digital" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Vorgänge für diesen Auftrag" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Bestellungen" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "Bild URL" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Bilder des Produkts" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Kategorie" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Rückmeldungen" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Marke" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Attribut-Gruppen" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1460,7 +1450,7 @@ msgstr "Attribut-Gruppen" msgid "price" msgstr "Preis" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1468,39 +1458,39 @@ msgstr "Preis" msgid "quantity" msgstr "Menge" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Anzahl der Rückmeldungen" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Produkte nur für persönliche Bestellungen verfügbar" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Rabattierter Preis" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Produkte" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Promocodes" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Zum Verkauf stehende Produkte" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Werbeaktionen" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Anbieter" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1508,99 +1498,99 @@ msgstr "Anbieter" msgid "product" msgstr "Produkt" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Auf dem Wunschzettel stehende Produkte" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Wunschzettel" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Markierte Produkte" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Produkt-Tags" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Markierte Kategorien" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Kategorien'-Tags" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Name des Projekts" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Name des Unternehmens" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Adresse des Unternehmens" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Telefonnummer des Unternehmens" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "E-Mail von\", muss manchmal anstelle des Host-Benutzerwerts verwendet werden" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "E-Mail-Host-Benutzer" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Höchstbetrag für die Zahlung" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Mindestbetrag für die Zahlung" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Analytische Daten" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Advertisement data" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Konfiguration" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Sprachcode" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Name der Sprache" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Sprachflagge, falls vorhanden :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Eine Liste der unterstützten Sprachen abrufen" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Suchergebnisse für Produkte" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Suchergebnisse für Produkte" @@ -1611,29 +1601,29 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"Stellt eine Gruppe von Attributen dar, die hierarchisch aufgebaut sein kann. " -"Diese Klasse wird verwendet, um Attributgruppen zu verwalten und zu " +"Stellt eine Gruppe von Attributen dar, die hierarchisch aufgebaut sein kann." +" Diese Klasse wird verwendet, um Attributgruppen zu verwalten und zu " "organisieren. Eine Attributgruppe kann eine übergeordnete Gruppe haben, die " -"eine hierarchische Struktur bildet. Dies kann nützlich sein, um Attribute in " -"einem komplexen System effektiver zu kategorisieren und zu verwalten." +"eine hierarchische Struktur bildet. Dies kann nützlich sein, um Attribute in" +" einem komplexen System effektiver zu kategorisieren und zu verwalten." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Elternteil dieser Gruppe" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Übergeordnete Attributgruppe" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Name der Attributgruppe" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Attribut-Gruppe" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1645,58 +1635,58 @@ msgid "" msgstr "" "Stellt eine Verkäuferentität dar, die Informationen über externe Verkäufer " "und deren Interaktionsanforderungen speichern kann. Die Klasse Vendor wird " -"zur Definition und Verwaltung von Informationen über einen externen Anbieter " -"verwendet. Sie speichert den Namen des Anbieters, die für die Kommunikation " -"erforderlichen Authentifizierungsdaten und den prozentualen Aufschlag, der " +"zur Definition und Verwaltung von Informationen über einen externen Anbieter" +" verwendet. Sie speichert den Namen des Anbieters, die für die Kommunikation" +" erforderlichen Authentifizierungsdaten und den prozentualen Aufschlag, der " "auf die vom Anbieter abgerufenen Produkte angewendet wird. Dieses Modell " "verwaltet auch zusätzliche Metadaten und Einschränkungen, wodurch es sich " "für die Verwendung in Systemen eignet, die mit Drittanbietern interagieren." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Speichert Anmeldeinformationen und Endpunkte, die für die API-Kommunikation " "des Anbieters erforderlich sind" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Informationen zur Authentifizierung" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definieren Sie den Aufschlag für Produkte, die von diesem Lieferanten " "bezogen werden" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Prozentualer Aufschlag des Lieferanten" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Name dieses Anbieters" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Name des Anbieters" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "Antwortdatei" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "die letzte Verarbeitungsantwort des Lieferanten" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Pfad der Integrationsdatei des Anbieters" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Integrationspfad" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1704,34 +1694,34 @@ msgid "" "display name. It supports operations exported through mixins and provides " "metadata customization for administrative purposes." msgstr "" -"Stellt ein Produkt-Tag dar, das zur Klassifizierung oder Identifizierung von " -"Produkten verwendet wird. Die Klasse ProductTag dient der eindeutigen " -"Identifizierung und Klassifizierung von Produkten durch eine Kombination aus " -"einem internen Tag-Bezeichner und einem benutzerfreundlichen Anzeigenamen. " +"Stellt ein Produkt-Tag dar, das zur Klassifizierung oder Identifizierung von" +" Produkten verwendet wird. Die Klasse ProductTag dient der eindeutigen " +"Identifizierung und Klassifizierung von Produkten durch eine Kombination aus" +" einem internen Tag-Bezeichner und einem benutzerfreundlichen Anzeigenamen. " "Sie unterstützt Operationen, die über Mixins exportiert werden, und " "ermöglicht die Anpassung von Metadaten für Verwaltungszwecke." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Interner Tag-Identifikator für das Produkt-Tag" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Tag name" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Benutzerfreundlicher Name für den Produktanhänger" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Tag-Anzeigename" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Produkt-Tag" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1742,15 +1732,15 @@ msgstr "" "zuzuordnen und zu klassifizieren. Sie enthält Attribute für einen internen " "Tag-Bezeichner und einen benutzerfreundlichen Anzeigenamen." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "Kategorie-Tag" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "Kategorie-Tags" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1768,63 +1758,64 @@ msgstr "" "Beziehungen unterstützen. Die Klasse enthält Felder für Metadaten und " "visuelle Darstellung, die als Grundlage für kategoriebezogene Funktionen " "dienen. Diese Klasse wird in der Regel verwendet, um Produktkategorien oder " -"andere ähnliche Gruppierungen innerhalb einer Anwendung zu definieren und zu " -"verwalten. Sie ermöglicht es Benutzern oder Administratoren, den Namen, die " -"Beschreibung und die Hierarchie von Kategorien festzulegen sowie Attribute " +"andere ähnliche Gruppierungen innerhalb einer Anwendung zu definieren und zu" +" verwalten. Sie ermöglicht es Benutzern oder Administratoren, den Namen, die" +" Beschreibung und die Hierarchie von Kategorien festzulegen sowie Attribute " "wie Bilder, Tags oder Priorität zuzuweisen." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Laden Sie ein Bild hoch, das diese Kategorie repräsentiert" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Kategorie Bild" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "" "Definieren Sie einen prozentualen Aufschlag für Produkte in dieser Kategorie" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "" "Übergeordneter dieser Kategorie, um eine hierarchische Struktur zu bilden" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Übergeordnete Kategorie" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Name der Kategorie" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Geben Sie einen Namen für diese Kategorie an" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Fügen Sie eine detaillierte Beschreibung für diese Kategorie hinzu" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Beschreibung der Kategorie" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "Tags, die helfen, diese Kategorie zu beschreiben oder zu gruppieren" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Priorität" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Stellt ein Markenobjekt im System dar. Diese Klasse verwaltet Informationen " "und Attribute in Bezug auf eine Marke, einschließlich ihres Namens, Logos, " @@ -1832,129 +1823,130 @@ msgstr "" "der Prioritätsreihenfolge. Sie ermöglicht die Organisation und Darstellung " "von markenbezogenen Daten innerhalb der Anwendung." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Name dieser Marke" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Markenname" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Laden Sie ein Logo hoch, das diese Marke repräsentiert" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Marke kleines Bild" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Laden Sie ein großes Logo hoch, das diese Marke repräsentiert" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Großes Image der Marke" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Fügen Sie eine detaillierte Beschreibung der Marke hinzu" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Beschreibung der Marke" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "" "Optionale Kategorien, mit denen diese Marke in Verbindung gebracht wird" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Kategorien" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" "Stellt den Bestand eines im System verwalteten Produkts dar. Diese Klasse " -"liefert Details über die Beziehung zwischen Lieferanten, Produkten und deren " -"Bestandsinformationen sowie bestandsbezogene Eigenschaften wie Preis, " +"liefert Details über die Beziehung zwischen Lieferanten, Produkten und deren" +" Bestandsinformationen sowie bestandsbezogene Eigenschaften wie Preis, " "Einkaufspreis, Menge, SKU und digitale Assets. Sie ist Teil des " "Bestandsverwaltungssystems, um die Nachverfolgung und Bewertung der von " "verschiedenen Anbietern verfügbaren Produkte zu ermöglichen." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Der Verkäufer, der dieses Produkt liefert, hat folgende Bestände" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Zugehöriger Anbieter" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Endpreis für den Kunden nach Aufschlägen" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Verkaufspreis" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Das mit diesem Bestandseintrag verbundene Produkt" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Zugehöriges Produkt" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Der an den Verkäufer gezahlte Preis für dieses Produkt" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Einkaufspreis des Verkäufers" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Verfügbare Menge des Produkts auf Lager" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Vorrätige Menge" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "Vom Hersteller zugewiesene SKU zur Identifizierung des Produkts" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "SKU des Verkäufers" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" -msgstr "Digitale Datei, die mit diesem Bestand verbunden ist, falls zutreffend" +msgstr "" +"Digitale Datei, die mit diesem Bestand verbunden ist, falls zutreffend" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Digitale Datei" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "System-Attribute" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Bestandseinträge" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1968,260 +1960,271 @@ msgstr "" "Stellt ein Produkt mit Attributen wie Kategorie, Marke, Tags, digitalem " "Status, Name, Beschreibung, Teilenummer und Slug dar. Bietet verwandte " "Hilfseigenschaften zum Abrufen von Bewertungen, Feedback-Zahlen, Preis, " -"Menge und Gesamtbestellungen. Konzipiert für die Verwendung in einem System, " -"das den elektronischen Handel oder die Bestandsverwaltung verwaltet. Diese " +"Menge und Gesamtbestellungen. Konzipiert für die Verwendung in einem System," +" das den elektronischen Handel oder die Bestandsverwaltung verwaltet. Diese " "Klasse interagiert mit verwandten Modellen (wie Category, Brand und " -"ProductTag) und verwaltet die Zwischenspeicherung von Eigenschaften, auf die " -"häufig zugegriffen wird, um die Leistung zu verbessern. Sie wird verwendet, " -"um Produktdaten und die damit verbundenen Informationen innerhalb einer " +"ProductTag) und verwaltet die Zwischenspeicherung von Eigenschaften, auf die" +" häufig zugegriffen wird, um die Leistung zu verbessern. Sie wird verwendet," +" um Produktdaten und die damit verbundenen Informationen innerhalb einer " "Anwendung zu definieren und zu manipulieren." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Kategorie, zu der dieses Produkt gehört" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Optional können Sie dieses Produkt mit einer Marke verknüpfen" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Tags, die helfen, dieses Produkt zu beschreiben oder zu gruppieren" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Gibt an, ob dieses Produkt digital geliefert wird" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Ist das Produkt digital" -#: engine/core/models.py:633 -msgid "provide a clear identifying name for the product" -msgstr "Geben Sie einen eindeutigen Namen zur Identifizierung des Produkts an." +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" +"gibt an, ob dieses Produkt von der periodischen Aufgabe aktualisiert werden " +"soll" -#: engine/core/models.py:634 +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "ist das Produkt aktualisierbar" + +#: engine/core/models.py:631 +msgid "provide a clear identifying name for the product" +msgstr "" +"Geben Sie einen eindeutigen Namen zur Identifizierung des Produkts an." + +#: engine/core/models.py:632 msgid "product name" msgstr "Name des Produkts" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Fügen Sie eine detaillierte Beschreibung des Produkts hinzu" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Beschreibung des Produkts" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Teilenummer für dieses Produkt" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Teilnummer" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Lagerhaltende Einheit für dieses Produkt" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"Stellt ein Attribut im System dar. Diese Klasse wird verwendet, um Attribute " -"zu definieren und zu verwalten. Dabei handelt es sich um anpassbare " +"Stellt ein Attribut im System dar. Diese Klasse wird verwendet, um Attribute" +" zu definieren und zu verwalten. Dabei handelt es sich um anpassbare " "Datenelemente, die mit anderen Entitäten verknüpft werden können. Attribute " "haben zugehörige Kategorien, Gruppen, Werttypen und Namen. Das Modell " "unterstützt mehrere Wertetypen, darunter String, Integer, Float, Boolean, " "Array und Object. Dies ermöglicht eine dynamische und flexible " "Datenstrukturierung." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Gruppe dieses Attributs" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Zeichenfolge" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Integer" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Schwimmer" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Boolesche" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Array" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Objekt" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Typ des Attributwerts" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Werttyp" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Name dieses Attributs" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Name des Attributs" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "ist filterbar" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Welche Attribute und Werte können für die Filterung dieser Kategorie " "verwendet werden." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribut" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Stellt einen spezifischen Wert für ein Attribut dar, das mit einem Produkt " "verknüpft ist. Es verknüpft das \"Attribut\" mit einem eindeutigen \"Wert\" " "und ermöglicht so eine bessere Organisation und dynamische Darstellung der " "Produktmerkmale." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Attribut dieses Wertes" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "" "Das spezifische Produkt, das mit dem Wert dieses Attributs verbunden ist" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Der spezifische Wert für dieses Attribut" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Stellt ein Produktbild dar, das mit einem Produkt im System verbunden ist. " "Diese Klasse dient der Verwaltung von Bildern für Produkte, einschließlich " "der Funktionen zum Hochladen von Bilddateien, der Zuordnung zu bestimmten " -"Produkten und der Festlegung ihrer Anzeigereihenfolge. Sie enthält auch eine " -"Funktion zur Barrierefreiheit mit alternativem Text für die Bilder." +"Produkten und der Festlegung ihrer Anzeigereihenfolge. Sie enthält auch eine" +" Funktion zur Barrierefreiheit mit alternativem Text für die Bilder." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "" "Geben Sie einen alternativen Text für das Bild an, um die Barrierefreiheit " "zu gewährleisten." -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Bild-Alt-Text" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Laden Sie die Bilddatei für dieses Produkt hoch" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Produktbild" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Legt die Reihenfolge fest, in der die Bilder angezeigt werden" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Priorität anzeigen" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Das Produkt, das dieses Bild darstellt" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Produktbilder" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"Repräsentiert eine Werbekampagne für Produkte mit einem Rabatt. Diese Klasse " -"wird verwendet, um Werbekampagnen zu definieren und zu verwalten, die einen " -"prozentualen Rabatt für Produkte anbieten. Die Klasse enthält Attribute zum " -"Festlegen des Rabattsatzes, zum Bereitstellen von Details über die " +"Repräsentiert eine Werbekampagne für Produkte mit einem Rabatt. Diese Klasse" +" wird verwendet, um Werbekampagnen zu definieren und zu verwalten, die einen" +" prozentualen Rabatt für Produkte anbieten. Die Klasse enthält Attribute zum" +" Festlegen des Rabattsatzes, zum Bereitstellen von Details über die " "Werbeaktion und zum Verknüpfen der Aktion mit den entsprechenden Produkten. " -"Sie ist mit dem Produktkatalog integriert, um die betroffenen Artikel in der " -"Kampagne zu bestimmen." +"Sie ist mit dem Produktkatalog integriert, um die betroffenen Artikel in der" +" Kampagne zu bestimmen." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Prozentualer Rabatt für die ausgewählten Produkte" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Prozentsatz der Ermäßigung" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Geben Sie einen eindeutigen Namen für diese Aktion an" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Name der Aktion" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Promotion description" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Wählen Sie aus, welche Produkte in dieser Aktion enthalten sind" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Enthaltene Produkte" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Förderung" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2231,64 +2234,64 @@ msgstr "" "Stellt die Wunschliste eines Benutzers zum Speichern und Verwalten " "gewünschter Produkte dar. Die Klasse bietet Funktionen zur Verwaltung einer " "Sammlung von Produkten und unterstützt Vorgänge wie das Hinzufügen und " -"Entfernen von Produkten sowie das Hinzufügen und Entfernen mehrerer Produkte " -"gleichzeitig." +"Entfernen von Produkten sowie das Hinzufügen und Entfernen mehrerer Produkte" +" gleichzeitig." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Produkte, die der Benutzer als gewünscht markiert hat" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Benutzer, dem diese Wunschliste gehört" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Besitzer der Wishlist" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Wunschzettel" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Stellt einen dokumentarischen Datensatz dar, der an ein Produkt gebunden " "ist. Diese Klasse wird verwendet, um Informationen über Dokumentationen zu " "bestimmten Produkten zu speichern, einschließlich Datei-Uploads und deren " "Metadaten. Sie enthält Methoden und Eigenschaften zur Handhabung des " -"Dateityps und des Speicherpfads für die Dokumentationsdateien. Sie erweitert " -"die Funktionalität von bestimmten Mixins und bietet zusätzliche " +"Dateityps und des Speicherpfads für die Dokumentationsdateien. Sie erweitert" +" die Funktionalität von bestimmten Mixins und bietet zusätzliche " "benutzerdefinierte Funktionen." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Dokumentarfilm" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Dokumentarfilme" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Ungelöst" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Stellt eine Adresseinheit dar, die Standortdetails und Assoziationen mit " "einem Benutzer enthält. Bietet Funktionen für die Speicherung von " @@ -2301,59 +2304,59 @@ msgstr "" "ermöglicht es auch, eine Adresse mit einem Benutzer zu verknüpfen, was die " "personalisierte Datenverarbeitung erleichtert." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Adresszeile für den Kunden" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Adresszeile" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Straße" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Bezirk" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Stadt" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Region" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Postleitzahl" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Land" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Längengrad, Breitengrad)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Vollständige JSON-Antwort vom Geocoder für diese Adresse" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Gespeicherte JSON-Antwort vom Geokodierungsdienst" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Adresse" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adressen" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2371,75 +2374,76 @@ msgstr "" "Validierung und Anwendung des Promo-Codes auf eine Bestellung, wobei " "sichergestellt wird, dass die Einschränkungen eingehalten werden." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "" "Einzigartiger Code, den ein Nutzer zum Einlösen eines Rabatts verwendet" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Kennung des Promo-Codes" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "" -"Fester Rabattbetrag, der angewandt wird, wenn kein Prozentsatz verwendet wird" +"Fester Rabattbetrag, der angewandt wird, wenn kein Prozentsatz verwendet " +"wird" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Fester Rabattbetrag" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Prozentualer Rabatt, wenn der Festbetrag nicht verwendet wird" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Prozentualer Rabatt" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Zeitstempel, wann der Promocode abläuft" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Ende der Gültigkeitsdauer" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Zeitstempel, ab dem dieser Promocode gültig ist" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Beginn der Gültigkeitsdauer" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Zeitstempel, wann der Promocode verwendet wurde, leer, wenn noch nicht " "verwendet" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Zeitstempel der Verwendung" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Diesem Promocode zugewiesener Benutzer, falls zutreffend" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Zugewiesener Benutzer" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Promo-Code" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Promo-Codes" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2447,21 +2451,21 @@ msgstr "" "Es sollte nur eine Art von Rabatt definiert werden (Betrag oder " "Prozentsatz), aber nicht beides oder keines von beiden." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Promocode wurde bereits verwendet" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ungültiger Rabatttyp für den Promocode {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2474,144 +2478,144 @@ msgstr "" "aktualisiert werden. Ebenso unterstützt die Funktionalität die Verwaltung " "der Produkte im Lebenszyklus der Bestellung." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Die für diese Bestellung verwendete Rechnungsadresse" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Optionaler Promo-Code für diese Bestellung" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Angewandter Promo-Code" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Die für diese Bestellung verwendete Lieferadresse" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Lieferadresse" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Aktueller Status des Auftrags in seinem Lebenszyklus" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Status der Bestellung" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "JSON-Struktur der Benachrichtigungen, die den Benutzern angezeigt werden " "sollen; in der Admin-UI wird die Tabellenansicht verwendet" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "JSON-Darstellung der Auftragsattribute für diesen Auftrag" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "Der Benutzer, der die Bestellung aufgegeben hat" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Benutzer" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Der Zeitstempel, zu dem der Auftrag abgeschlossen wurde" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Zeit kaufen" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Ein von Menschen lesbarer Identifikator für den Auftrag" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "menschenlesbare ID" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Bestellung" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "Ein Benutzer darf immer nur einen schwebenden Auftrag haben!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Sie können keine Produkte zu einem Auftrag hinzufügen, der nicht in " "Bearbeitung ist." -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Sie können keine inaktiven Produkte zur Bestellung hinzufügen" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "Sie können nicht mehr Produkte hinzufügen, als auf Lager sind" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Sie können keine Produkte aus einer Bestellung entfernen, die nicht in " "Bearbeitung ist." -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} existiert nicht mit Abfrage <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Promocode existiert nicht" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" "Sie können nur physische Produkte mit angegebener Lieferadresse kaufen!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Adresse ist nicht vorhanden" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Sie können im Moment nicht kaufen, bitte versuchen Sie es in ein paar " "Minuten erneut." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Ungültiger Force-Wert" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Sie können keine leere Bestellung kaufen!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "" "Sie können keine Produkte aus einer Bestellung entfernen, die nicht in " "Bearbeitung ist." -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Ein Benutzer ohne Guthaben kann nicht mit Guthaben kaufen!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Unzureichende Mittel für die Ausführung des Auftrags" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2619,14 +2623,14 @@ msgstr "" "Sie können nicht ohne Registrierung kaufen, bitte geben Sie die folgenden " "Informationen an: Kundenname, Kunden-E-Mail, Kunden-Telefonnummer" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Ungültige Zahlungsmethode: {payment_method} von {available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2635,39 +2639,40 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "Verwaltet Benutzerfeedback für Produkte. Diese Klasse dient der Erfassung " -"und Speicherung von Benutzerfeedback für bestimmte Produkte, die sie gekauft " -"haben. Sie enthält Attribute zum Speichern von Benutzerkommentaren, einen " +"und Speicherung von Benutzerfeedback für bestimmte Produkte, die sie gekauft" +" haben. Sie enthält Attribute zum Speichern von Benutzerkommentaren, einen " "Verweis auf das entsprechende Produkt in der Bestellung und eine vom " "Benutzer zugewiesene Bewertung. Die Klasse verwendet Datenbankfelder, um " "Feedbackdaten effektiv zu modellieren und zu verwalten." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "Kommentare der Nutzer über ihre Erfahrungen mit dem Produkt" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Kommentare zum Feedback" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Verweist auf das spezifische Produkt in einer Bestellung, auf das sich diese " -"Rückmeldung bezieht" +"Verweist auf das spezifische Produkt in einer Bestellung, auf das sich diese" +" Rückmeldung bezieht" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Produkt zur Bestellung" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Vom Benutzer zugewiesene Bewertung für das Produkt" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Produktbewertung" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2679,144 +2684,144 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"Stellt die mit Bestellungen verbundenen Produkte und ihre Attribute dar. Das " -"OrderProduct-Modell verwaltet Informationen über ein Produkt, das Teil einer " -"Bestellung ist, einschließlich Details wie Kaufpreis, Menge, " +"Stellt die mit Bestellungen verbundenen Produkte und ihre Attribute dar. Das" +" OrderProduct-Modell verwaltet Informationen über ein Produkt, das Teil " +"einer Bestellung ist, einschließlich Details wie Kaufpreis, Menge, " "Produktattribute und Status. Es verwaltet Benachrichtigungen für Benutzer " "und Administratoren und führt Vorgänge wie die Rückgabe des Produktsaldos " "oder das Hinzufügen von Feedback durch. Dieses Modell bietet auch Methoden " -"und Eigenschaften, die die Geschäftslogik unterstützen, z. B. die Berechnung " -"des Gesamtpreises oder die Generierung einer Download-URL für digitale " +"und Eigenschaften, die die Geschäftslogik unterstützen, z. B. die Berechnung" +" des Gesamtpreises oder die Generierung einer Download-URL für digitale " "Produkte. Das Modell ist mit den Modellen \"Order\" und \"Product\" " "integriert und speichert einen Verweis auf diese." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "" "Der Preis, den der Kunde zum Zeitpunkt des Kaufs für dieses Produkt bezahlt " "hat" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Einkaufspreis zum Zeitpunkt der Bestellung" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Interne Kommentare für Administratoren zu diesem bestellten Produkt" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Interne Kommentare" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Benutzerbenachrichtigungen" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "JSON-Darstellung der Attribute dieses Artikels" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Bestellte Produktattribute" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Verweis auf den übergeordneten Auftrag, der dieses Produkt enthält" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Übergeordneter Auftrag" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Das spezifische Produkt, das mit dieser Auftragszeile verbunden ist" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Menge dieses spezifischen Produkts in der Bestellung" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Produktmenge" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Aktueller Status dieses Produkts im Auftrag" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Status der Produktlinie" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Das Bestellprodukt muss eine zugehörige Bestellung haben!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Falsche Aktion für Feedback angegeben: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "" "Sie können keine Produkte aus einer Bestellung entfernen, die nicht in " "Bearbeitung ist." -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Name" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL der Integration" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Anmeldeinformationen zur Authentifizierung" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Sie können nur einen Standard-CRM-Anbieter haben" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRMs" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "CRM-Link der Bestellung" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "CRM-Links der Bestellungen" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Stellt die Download-Funktionalität für digitale Assets in Verbindung mit " "Bestellungen dar. Die Klasse DigitalAssetDownload ermöglicht die Verwaltung " "und den Zugriff auf Downloads im Zusammenhang mit Auftragsprodukten. Sie " "verwaltet Informationen über das zugehörige Auftragsprodukt, die Anzahl der " -"Downloads und ob das Asset öffentlich sichtbar ist. Sie enthält eine Methode " -"zur Generierung einer URL für das Herunterladen des Assets, wenn sich die " +"Downloads und ob das Asset öffentlich sichtbar ist. Sie enthält eine Methode" +" zur Generierung einer URL für das Herunterladen des Assets, wenn sich die " "zugehörige Bestellung in einem abgeschlossenen Status befindet." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Herunterladen" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Herunterladen" @@ -3017,8 +3022,7 @@ msgstr "Hallo %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Vielen Dank für Ihre Bestellung #%(order.pk)s! Wir freuen uns, Ihnen " @@ -3133,8 +3137,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Vielen Dank für Ihre Bestellung! Wir freuen uns, Ihren Kauf zu bestätigen. " @@ -3165,13 +3168,14 @@ msgstr "" "alle Rechte\n" " vorbehalten" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Sowohl Daten als auch Timeout sind erforderlich" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" -msgstr "Ungültiger Timeout-Wert, er muss zwischen 0 und 216000 Sekunden liegen" +msgstr "" +"Ungültiger Timeout-Wert, er muss zwischen 0 und 216000 Sekunden liegen" #: engine/core/utils/emailing.py:27 #, python-brace-format @@ -3201,14 +3205,14 @@ msgstr "Sie haben nicht die Erlaubnis, diese Aktion durchzuführen." msgid "NOMINATIM_URL must be configured." msgstr "Der Parameter NOMINATIM_URL muss konfiguriert werden!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Die Bildabmessungen sollten w{max_width} x h{max_height} Pixel nicht " "überschreiten" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3217,7 +3221,7 @@ msgstr "" "zurück. Sie stellt sicher, dass die Antwort den entsprechenden Content-Type-" "Header für XML enthält." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3227,18 +3231,18 @@ msgstr "" "Funktion verarbeitet die Anfrage, holt die entsprechende Sitemap-" "Detailantwort ab und setzt den Content-Type-Header für XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Gibt eine Liste der unterstützten Sprachen und der entsprechenden " "Informationen zurück." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Gibt die Parameter der Website als JSON-Objekt zurück." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3246,11 +3250,11 @@ msgstr "" "Erledigt Cache-Operationen wie das Lesen und Setzen von Cache-Daten mit " "einem bestimmten Schlüssel und Timeout." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Verarbeitet Übermittlungen des Formulars \"Kontaktieren Sie uns\"." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3258,70 +3262,60 @@ msgstr "" "Bearbeitet Anfragen zur Verarbeitung und Validierung von URLs aus " "eingehenden POST-Anfragen." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Bearbeitet globale Suchanfragen." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Behandelt die Logik des Kaufs als Unternehmen ohne Registrierung." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" -"Bearbeitet das Herunterladen eines digitalen Assets, das mit einem Auftrag " -"verbunden ist.\n" -"Diese Funktion versucht, die Datei des digitalen Assets, die sich im " -"Speicherverzeichnis des Projekts befindet, bereitzustellen. Wenn die Datei " -"nicht gefunden wird, wird ein HTTP 404-Fehler ausgelöst, um anzuzeigen, dass " -"die Ressource nicht verfügbar ist." +"Bearbeitet das Herunterladen eines digitalen Assets, das mit einem Auftrag verbunden ist.\n" +"Diese Funktion versucht, die Datei des digitalen Assets, die sich im Speicherverzeichnis des Projekts befindet, bereitzustellen. Wenn die Datei nicht gefunden wird, wird ein HTTP 404-Fehler ausgelöst, um anzuzeigen, dass die Ressource nicht verfügbar ist." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid ist erforderlich" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "Produkt bestellen existiert nicht" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Sie können das digitale Asset nur einmal herunterladen" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "" -"die Bestellung muss vor dem Herunterladen des digitalen Assets bezahlt werden" +"die Bestellung muss vor dem Herunterladen des digitalen Assets bezahlt " +"werden" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Das Bestellprodukt hat kein Produkt" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "Favicon nicht gefunden" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Bearbeitet Anfragen nach dem Favicon einer Website.\n" -"Diese Funktion versucht, die Favicon-Datei, die sich im statischen " -"Verzeichnis des Projekts befindet, bereitzustellen. Wenn die Favicon-Datei " -"nicht gefunden wird, wird ein HTTP 404-Fehler ausgegeben, um anzuzeigen, " -"dass die Ressource nicht verfügbar ist." +"Diese Funktion versucht, die Favicon-Datei, die sich im statischen Verzeichnis des Projekts befindet, bereitzustellen. Wenn die Favicon-Datei nicht gefunden wird, wird ein HTTP 404-Fehler ausgegeben, um anzuzeigen, dass die Ressource nicht verfügbar ist." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Leitet die Anfrage auf die Admin-Indexseite um. Die Funktion verarbeitet " @@ -3329,16 +3323,16 @@ msgstr "" "Administrationsoberfläche um. Sie verwendet die Funktion `redirect` von " "Django für die Bearbeitung der HTTP-Umleitung." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Gibt die aktuelle Version von eVibes zurück." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Einnahmen und Aufträge (zuletzt %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Gibt benutzerdefinierte Variablen für das Dashboard zurück." @@ -3351,22 +3345,23 @@ msgid "" "and rendering formats." msgstr "" "Definiert ein Viewset für die Verwaltung von Evibes-bezogenen Operationen. " -"Die Klasse EvibesViewSet erbt von ModelViewSet und bietet Funktionalität für " -"die Handhabung von Aktionen und Operationen auf Evibes-Entitäten. Sie " +"Die Klasse EvibesViewSet erbt von ModelViewSet und bietet Funktionalität für" +" die Handhabung von Aktionen und Operationen auf Evibes-Entitäten. Sie " "enthält Unterstützung für dynamische Serialisiererklassen auf der Grundlage " "der aktuellen Aktion, anpassbare Berechtigungen und Rendering-Formate." #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Stellt ein Viewset für die Verwaltung von AttributeGroup-Objekten dar. " "Bearbeitet Vorgänge im Zusammenhang mit AttributeGroup, einschließlich " -"Filterung, Serialisierung und Abruf von Daten. Diese Klasse ist Teil der API-" -"Schicht der Anwendung und bietet eine standardisierte Methode zur " +"Filterung, Serialisierung und Abruf von Daten. Diese Klasse ist Teil der " +"API-Schicht der Anwendung und bietet eine standardisierte Methode zur " "Verarbeitung von Anfragen und Antworten für AttributeGroup-Daten." #: engine/core/viewsets.py:179 @@ -3391,14 +3386,14 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Ein Viewset für die Verwaltung von AttributeValue-Objekten. Dieses Viewset " "bietet Funktionen zum Auflisten, Abrufen, Erstellen, Aktualisieren und " "Löschen von AttributeValue-Objekten. Es integriert sich in die Viewset-" -"Mechanismen des Django REST Frameworks und verwendet geeignete Serialisierer " -"für verschiedene Aktionen. Filterfunktionen werden über das " +"Mechanismen des Django REST Frameworks und verwendet geeignete Serialisierer" +" für verschiedene Aktionen. Filterfunktionen werden über das " "DjangoFilterBackend bereitgestellt." #: engine/core/viewsets.py:217 @@ -3410,8 +3405,8 @@ msgid "" "can access specific data." msgstr "" "Verwaltet Ansichten für kategoriebezogene Operationen. Die Klasse " -"CategoryViewSet ist für die Handhabung von Vorgängen im Zusammenhang mit dem " -"Kategoriemodell im System verantwortlich. Sie unterstützt das Abrufen, " +"CategoryViewSet ist für die Handhabung von Vorgängen im Zusammenhang mit dem" +" Kategoriemodell im System verantwortlich. Sie unterstützt das Abrufen, " "Filtern und Serialisieren von Kategoriedaten. Das Viewset erzwingt auch " "Berechtigungen, um sicherzustellen, dass nur autorisierte Benutzer auf " "bestimmte Daten zugreifen können." @@ -3440,8 +3435,8 @@ msgid "" msgstr "" "Verwaltet Vorgänge im Zusammenhang mit dem Modell \"Produkt\" im System. " "Diese Klasse bietet ein Viewset für die Verwaltung von Produkten, " -"einschließlich ihrer Filterung, Serialisierung und Operationen für bestimmte " -"Instanzen. Sie ist eine Erweiterung von `EvibesViewSet`, um gemeinsame " +"einschließlich ihrer Filterung, Serialisierung und Operationen für bestimmte" +" Instanzen. Sie ist eine Erweiterung von `EvibesViewSet`, um gemeinsame " "Funktionen zu nutzen und integriert sich in das Django REST Framework für " "RESTful API Operationen. Enthält Methoden zum Abrufen von Produktdetails, " "zur Anwendung von Berechtigungen und zum Zugriff auf zugehörige " @@ -3467,15 +3462,15 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Darstellung eines View-Sets, das Feedback-Objekte behandelt. Diese Klasse " "verwaltet Vorgänge im Zusammenhang mit Feedback-Objekten, einschließlich " "Auflistung, Filterung und Abruf von Details. Der Zweck dieses ViewSets ist " -"es, verschiedene Serialisierer für verschiedene Aktionen bereitzustellen und " -"eine erlaubnisbasierte Handhabung von zugänglichen Feedback-Objekten zu " +"es, verschiedene Serialisierer für verschiedene Aktionen bereitzustellen und" +" eine erlaubnisbasierte Handhabung von zugänglichen Feedback-Objekten zu " "implementieren. Es erweitert das Basis `EvibesViewSet` und nutzt das " "Filtersystem von Django zur Abfrage von Daten." @@ -3484,16 +3479,16 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"ViewSet zur Verwaltung von Aufträgen und zugehörigen Vorgängen. Diese Klasse " -"bietet Funktionen zum Abrufen, Ändern und Verwalten von Bestellobjekten. Sie " -"enthält verschiedene Endpunkte für die Handhabung von Bestellvorgängen wie " -"das Hinzufügen oder Entfernen von Produkten, die Durchführung von Käufen für " -"registrierte und nicht registrierte Benutzer und das Abrufen der " +"ViewSet zur Verwaltung von Aufträgen und zugehörigen Vorgängen. Diese Klasse" +" bietet Funktionen zum Abrufen, Ändern und Verwalten von Bestellobjekten. " +"Sie enthält verschiedene Endpunkte für die Handhabung von Bestellvorgängen " +"wie das Hinzufügen oder Entfernen von Produkten, die Durchführung von Käufen" +" für registrierte und nicht registrierte Benutzer und das Abrufen der " "ausstehenden Bestellungen des aktuell authentifizierten Benutzers. Das " "ViewSet verwendet mehrere Serialisierer, die auf der spezifischen Aktion " "basieren, die durchgeführt wird, und erzwingt die entsprechenden " @@ -3503,16 +3498,16 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Bietet ein Viewset für die Verwaltung von OrderProduct-Entitäten. Dieses " "Viewset ermöglicht CRUD-Vorgänge und benutzerdefinierte Aktionen speziell " "für das OrderProduct-Modell. Es umfasst Filterung, Berechtigungsprüfungen " "und Serializer-Umschaltung auf der Grundlage der angeforderten Aktion. " -"Außerdem bietet es eine detaillierte Aktion für die Bearbeitung von Feedback " -"zu OrderProduct-Instanzen" +"Außerdem bietet es eine detaillierte Aktion für die Bearbeitung von Feedback" +" zu OrderProduct-Instanzen" #: engine/core/viewsets.py:974 msgid "Manages operations related to Product images in the application. " @@ -3539,15 +3534,15 @@ msgstr "Erledigt Vorgänge im Zusammenhang mit Bestandsdaten im System." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" "ViewSet für die Verwaltung von Wishlist-Vorgängen. Das WishlistViewSet " -"bietet Endpunkte für die Interaktion mit der Wunschliste eines Benutzers und " -"ermöglicht das Abrufen, Ändern und Anpassen von Produkten innerhalb der " +"bietet Endpunkte für die Interaktion mit der Wunschliste eines Benutzers und" +" ermöglicht das Abrufen, Ändern und Anpassen von Produkten innerhalb der " "Wunschliste. Dieses ViewSet erleichtert Funktionen wie das Hinzufügen, " "Entfernen und Massenaktionen für Produkte auf der Wunschliste. " "Berechtigungsprüfungen sind integriert, um sicherzustellen, dass Benutzer " @@ -3563,8 +3558,8 @@ msgid "" "on the request context." msgstr "" "Diese Klasse bietet Viewset-Funktionalität für die Verwaltung von " -"\"Address\"-Objekten. Die Klasse AddressViewSet ermöglicht CRUD-Operationen, " -"Filterung und benutzerdefinierte Aktionen im Zusammenhang mit " +"\"Address\"-Objekten. Die Klasse AddressViewSet ermöglicht CRUD-Operationen," +" Filterung und benutzerdefinierte Aktionen im Zusammenhang mit " "Adressentitäten. Sie umfasst spezielle Verhaltensweisen für verschiedene " "HTTP-Methoden, Serialisierungsüberschreibungen und die Behandlung von " "Berechtigungen auf der Grundlage des Anfragekontexts." @@ -3585,6 +3580,6 @@ msgstr "" "Bearbeitet Vorgänge im Zusammenhang mit Produkt-Tags innerhalb der " "Anwendung. Diese Klasse bietet Funktionen zum Abrufen, Filtern und " "Serialisieren von Produkt-Tag-Objekten. Sie unterstützt die flexible " -"Filterung nach bestimmten Attributen unter Verwendung des angegebenen Filter-" -"Backends und verwendet dynamisch verschiedene Serialisierer auf der " +"Filterung nach bestimmten Attributen unter Verwendung des angegebenen " +"Filter-Backends und verwendet dynamisch verschiedene Serialisierer auf der " "Grundlage der durchgeführten Aktion." diff --git a/engine/core/locale/en_GB/LC_MESSAGES/django.mo b/engine/core/locale/en_GB/LC_MESSAGES/django.mo index 6ebc7a35656be4759937ea955603ab83993d95cc..e5cb940769012151ffa6c278195a0f95d1aee6af 100644 GIT binary patch delta 14851 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 av&+qm+`B8xGuadLf8BU*T(~DL`hNhWS#*&A delta 14695 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -31,9 +31,11 @@ msgstr "Is Active" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" -"If set to false, this object can't be seen by users without needed permission" +"If set to false, this object can't be seen by users without needed " +"permission" #: engine/core/abstract.py:26 engine/core/choices.py:18 msgid "created" @@ -75,65 +77,65 @@ msgstr "Metadata" msgid "timestamps" msgstr "Timestamps" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activate selected %(verbose_name_plural)s" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Selected items have been activated!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactivate selected %(verbose_name_plural)s" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Selected items have been deactivated!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Attribute Value" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Attribute Values" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Image" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Images" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Stock" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Stocks" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Order Product" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Order Products" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Children" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Config" @@ -157,7 +159,8 @@ msgstr "Delivered" msgid "canceled" msgstr "Canceled" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Failed" @@ -199,11 +202,11 @@ msgstr "" "negotiation. Language can be selected with Accept-Language and query " "parameter both." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -211,35 +214,35 @@ msgstr "" "Apply only a key to read permitted data from cache.\n" "Apply key, data and timeout with authentication to write data to cache." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Get a list of supported languages" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Get application's exposable parameters" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Send a message to the support team" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Request a CORSed URL. Only https allowed." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Search between products, categories and brands" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "Global search endpoint to query across project's tables" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Purchase an order as a Business" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -247,7 +250,7 @@ msgstr "" "Purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "download a digital asset from purchased digital order" @@ -272,7 +275,8 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Rewrite some fields of an existing attribute group saving non-editables" @@ -321,7 +325,8 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Rewrite some fields of an existing attribute value saving non-editables" @@ -355,9 +360,9 @@ msgstr "Rewrite some fields of an existing category saving non-editables" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" @@ -375,11 +380,11 @@ msgstr "For non-staff users, only their own orders are returned." #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -411,13 +416,13 @@ msgstr "Filter by order status (case-insensitive substring match)" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." #: engine/core/docs/drf/viewsets.py:366 msgid "retrieve a single order (detailed view)" @@ -469,7 +474,7 @@ msgstr "retrieve current pending order of a user" msgid "retrieves a current pending order of an authenticated user" msgstr "retrieves a current pending order of an authenticated user" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" @@ -603,30 +608,20 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" #: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 @@ -639,12 +634,10 @@ msgstr "(exact) Product UUID" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -658,9 +651,6 @@ msgid "Product UUID or slug" msgstr "Product UUID or Slug" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Create a product" @@ -946,8 +936,8 @@ msgstr "Rewrite an existing product tag saving non-editables" msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "Rewrite some fields of an existing product tag saving non-editables" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "No search term provided." @@ -956,8 +946,8 @@ msgstr "No search term provided." msgid "Search" msgstr "Search" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1003,8 +993,8 @@ msgid "Quantity" msgstr "Quantity" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Slug" @@ -1020,7 +1010,7 @@ msgstr "Include sub-categories" msgid "Include personal ordered" msgstr "Include personal ordered products" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1041,12 +1031,12 @@ msgid "Bought before (inclusive)" msgstr "Bought before (inclusive)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "User email" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "User UUID" @@ -1070,251 +1060,252 @@ msgstr "Whole category(has at least 1 product or not)" msgid "Level" msgstr "Level" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "Product UUID" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Key to look for in or set into the cache" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Data to store in cache" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout in seconds to set the data for into the cache" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Cached data" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON data from the requested URL" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Add a product to the order" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Order {order_uuid} not found!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Remove a product from the order" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Remove all products from the order" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Buy an order" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Perform an action on a list of products in the order" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Remove/Add" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Action must be either \"add\" or \"remove\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Perform an action on a list of products in the wishlist" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Please provide `wishlist_uuid` value." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} not found!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Add a product to the order" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Remove a product from the order" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Remove a product from the order" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Remove a product from the order" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Buy an order" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"Please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Add or delete a feedback for the orderproduct" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Action must be either `add` or `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Orderproduct {order_product_uuid} not found!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Limit must be between 1 and 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - works like a charm" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Attributes" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Grouped attributes" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Groups of attributes" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Categories" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Brands" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Categories" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Markup Percentage" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "Which attributes and values can be used for filtering this category." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimum and maximum prices for products in this category, if available." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Tags for this category" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Products in this category" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Vendors" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Latitude (Y coordinate)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Longitude (X coordinate)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Comment" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Rating value from 1 to 10, inclusive, or 0 if not set." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Represents feedback from a user." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Notifications" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Download url for this order product if applicable" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Feedback" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "A list of order products in this order" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Billing address" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1322,53 +1313,53 @@ msgstr "" "Shipping address for this order, leave blank if same as billing address or " "if not applicable" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Total price of this order" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Total quantity of products in order" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Are all of the products in the order digital" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transactions for this order" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Orders" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "Image URL" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Product's images" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Category" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Feedbacks" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Brand" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Attribute groups" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1376,7 +1367,7 @@ msgstr "Attribute groups" msgid "price" msgstr "Price" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1384,39 +1375,39 @@ msgstr "Price" msgid "quantity" msgstr "Quantity" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Number of feedbacks" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Products only available for personal orders" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Discount price" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Products" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Promocodes" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Products on sale" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Promotions" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Vendor" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1424,98 +1415,98 @@ msgstr "Vendor" msgid "product" msgstr "Product" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Wishlisted products" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Wishlists" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Tagged products" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Product tags" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Tagged categories" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Categories' tags" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Project name" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Company Name" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Company Address" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Company Phone Number" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from', sometimes it must be used instead of host user value" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Email host user" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Maximum amount for payment" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Minimum amount for payment" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Analytics data" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Advertisement data" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Configuration" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Language code" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Language name" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Language flag, if exists :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Get a list of supported languages" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Products search results" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Products search results" @@ -1531,23 +1522,23 @@ msgstr "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Parent of this group" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Parent attribute group" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Attribute group's name" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Attribute group" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1565,48 +1556,48 @@ msgstr "" "also maintains additional metadata and constraints, making it suitable for " "use in systems that interact with third-party vendors." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stores credentials and endpoints required for vendor's API communication" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Authentication info" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "Define the markup for products retrieved from this vendor" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Vendor markup percentage" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Name of this vendor" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Vendor name" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "response file" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "vendor's last processing response" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Vendor's integration file path" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Integration path" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1620,27 +1611,27 @@ msgstr "" "display name. It supports operations exported through mixins and provides " "metadata customization for administrative purposes." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Tag name" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Tag display name" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Product tag" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1650,15 +1641,15 @@ msgstr "" "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "category tag" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "category tags" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1680,184 +1671,186 @@ msgstr "" "hierarchy of categories, as well as assign attributes like images, tags, or " "priority." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Upload an image representing this category" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Category image" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Define a markup percentage for products in this category" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Parent of this category to form a hierarchical structure" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Parent category" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Category name" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Provide a name for this category" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Add a detailed description for this category" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Category description" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "tags that help describe or group this category" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Priority" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Name of this brand" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Brand name" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Upload a logo representing this brand" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Brand small image" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Upload a big logo representing this brand" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Brand big image" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Add a detailed description of the brand" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Brand description" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Optional categories that this brand is associated with" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Categories" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Associated vendor" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Selling price" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Associated product" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Quantity in stock" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "Vendor's SKU" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Digital file" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "System attributes" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Stock entries" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1877,244 +1870,252 @@ msgstr "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Category this product belongs to" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Optionally associate this product with a brand" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Tags that help describe or group this product" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Indicates whether this product is digitally delivered" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Is product digital" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "indicates whether this product should be updated from periodic task" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "is product updatable" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Provide a clear identifying name for the product" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Product name" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Product description" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Part number for this product" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Part number" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Stock Keeping Unit for this product" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Group of this attribute" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "String" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Integer" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Float" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Boolean" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Array" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Object" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Type of the attribute's value" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Value type" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Name of this attribute" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Attribute's name" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "is filterable" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "designates whether this attribute can be used for filtering or not" -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribute" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Attribute of this value" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "The specific value for this attribute" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Image alt text" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Product image" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Display priority" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "The product that this image represents" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Product images" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Discount percentage" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Promotion name" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Promotion description" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Included products" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Promotion" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2126,123 +2127,123 @@ msgstr "" "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Wishlist" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Documentary" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Documentaries" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Unresolved" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Address line for the customer" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Address line" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Street" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "District" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "City" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Region" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Postal code" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Country" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Address" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adresses" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2258,71 +2259,71 @@ msgstr "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Unique code used by a user to redeem a discount" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Promo code identifier" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Percentage discount" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "End validity time" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Start validity time" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Timestamp when the promocode was used, blank if not used yet" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Usage timestamp" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Assigned user" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Promo code" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Promo codes" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2330,161 +2331,161 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Promocode has been used already" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "The billing address used for this order" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Optional promo code applied to this order" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Applied promo code" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "The shipping address used for this order" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Shipping address" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Current status of the order in its lifecycle" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Order status" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "JSON structure of notifications to display to users, in admin UI the table-" "view is used" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "JSON representation of order attributes for this order" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "The user who placed the order" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "User" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "The timestamp when the order was finalized" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Buy time" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "A human-readable identifier for the order" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "human-readable ID" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Order" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "A user must have only one pending order at a time!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "You cannot add products to an order that is not a pending one" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "You cannot remove products from an order that is not a pending one" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "You can only buy physical products with shipping address specified!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Address does not exist" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "You can not purchase at this moment, please try again in a few minutes." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Invalid force value" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "You cannot buy an order without a user!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "A user without a balance cannot buy with balance!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2492,14 +2493,14 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Invalid payment method: {payment_method} from {available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2513,32 +2514,33 @@ msgstr "" "product in the order, and a user-assigned rating. The class uses database " "fields to effectively model and manage feedback data." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "User-provided comments about their experience with the product" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Feedback comments" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "References the specific product in an order that this feedback is about" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Related order product" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "User-assigned rating for the product" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Product rating" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2560,128 +2562,128 @@ msgstr "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "The price paid by the customer for this product at purchase time" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Internal comments" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "User notifications" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Parent order" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Product quantity" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Product line status" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Orderproduct must have an associated order!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Wrong action specified for feedback: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "you cannot feedback an order which is not received" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Name" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL of the integration" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Authentication credentials" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "You can only have one default CRM provider" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRMs" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Order's CRM link" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Orders' CRM links" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Download" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Downloads" @@ -2881,12 +2883,11 @@ msgstr "Hello %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"Thank you for your order #%(order.pk)s! We are pleased to inform you that we " -"have taken your order into work. Below are the details of your order:" +"Thank you for your order #%(order.pk)s! We are pleased to inform you that we" +" have taken your order into work. Below are the details of your order:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2996,12 +2997,11 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" -"Thank you for your order! We are pleased to confirm your purchase. Below are " -"the details of your order:" +"Thank you for your order! We are pleased to confirm your purchase. Below are" +" the details of your order:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -3028,11 +3028,11 @@ msgstr "" "All rights\n" " reserved" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Both data and timeout are required" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Invalid timeout value, it must be between 0 and 216000 seconds" @@ -3064,13 +3064,13 @@ msgstr "You do not have permission to perform this action." msgid "NOMINATIM_URL must be configured." msgstr "NOMINATIM_URL parameter must be configured!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Image dimensions should not exceed w{max_width} x h{max_height} pixels!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3078,7 +3078,7 @@ msgstr "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3088,17 +3088,17 @@ msgstr "" "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returns a list of supported languages and their corresponding information." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Returns the parameters of the website as a JSON object." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3106,11 +3106,11 @@ msgstr "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Handles `contact us` form submissions." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3118,82 +3118,74 @@ msgstr "" "Handles requests for processing and validating URLs from incoming POST " "requests." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Handles global search queries." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Handles the logic of buying as a business without registration." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid is required" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "order product does not exist" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "You can only download the digital asset once" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "the order must be paid before downloading the digital asset" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "The order product does not have a product" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon not found" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Returns current version of the eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Revenue & Orders (last %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Returns custom variables for Dashboard." @@ -3213,15 +3205,17 @@ msgstr "" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." #: engine/core/viewsets.py:179 msgid "" @@ -3244,14 +3238,14 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." #: engine/core/viewsets.py:217 msgid "" @@ -3316,15 +3310,15 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." #: engine/core/viewsets.py:652 @@ -3332,31 +3326,31 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." #: engine/core/viewsets.py:914 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" #: engine/core/viewsets.py:974 @@ -3383,16 +3377,16 @@ msgstr "Handles operations related to Stock data in the system." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." diff --git a/engine/core/locale/en_US/LC_MESSAGES/django.mo b/engine/core/locale/en_US/LC_MESSAGES/django.mo index 8ca2e25aabf751c0dc92f74607f588a0054c3c6d..31b39ca2ec3928e7a476b13d690d9da2b93f58ec 100644 GIT binary patch delta 14848 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 Mx~pHL$G_tL0Bc5bDF6Tf delta 14715 zcmZA72Xqxh-^cN}5JCchKtc;4B%vgQI zQw+NlG-hUYV^)+?sWG3X7*haGV0WJ}SCDE`x27>cn2tHI8Ro*aSOmLa1dhZUI1j^c zG3xwxFu)kkY$X^^!7kJVl4}{059=U(F)eW+_QpVbglcDM8xsz>F*inIFqX$uI$9Og zu@QBQ$&ceP7UyC-?!=(8S^T(@CdSH7*m~!XBv=j8a~8}xC75Lz47y?p&x^VZ~=zmI~a`nP$PE?3*+bLspmfu=)_+!7z3LclZN^5 zFgI?4?a7BVH>Lym7qC7aX<^&vXk`sWjYtF*!$i~+HN#l!j_UA4)Cf*(#rSLPW>BCZ zdjmCO8?Y>%Le1d=48ea;7tF;l$>JD|$;i4iZBVOurYnzaZOn4=X{fbx8S~=}mw(ur z`S)L#0`)vs8>WCKi$<;P!ENp08jV-UPjUG^?TmSwc0;fNMlw8^tf9soSWmRu(8-wL zlzW|7Z1^D4n5G!j)tHX>d^b8p`y*a=W0q2oy{9qn;mTe-H5X{phan_iyst6$u~t80 zDpFqY1rqu0c#r(+FB;RC{G|TIG~t4m2QUKU;|JLe9vsX=P~LB-F?%TgdKeFZb4S<_ z^a_o#LtGA-W|NHZI1bC;M%3cW!Wax3ZHF)(HHS4&Lt6*cJ_8f+CDhcdz#_N-HTMTm z?T^~LXHF1k5oTd;`~tOqYmBis95dFg=H;jh>_jcnJ(vrR;77DSjoEq9x#NsUpnM@y zt2J~KkBw+&#(*7SopeOdQB)*9{@f23T2dMfI6K#1@i3{J{0ZuY7hV1a29ke>deDDfWBhf2+|%rkCt?u!TBs+@ zK)s+^qB_IO|vQ_=}_fkCJny@F~#57qt+)Qwl6MqrEcFsl7oER8o&Q{#oquyYuNYET6= zB~4I0?~1zdU{pt@y81UTg8VzqW3K)R>byIs4*6!hLyHhmWI1;!9M!A5k5D?3ej3INLU? zh*}HvP#5Zn!8jaqp@-=>1C#MH3_&x;?(;mT8`MWVKnGNZ`=X|HB<8^hm>cI{toHvh z*WdtFC4U^X>K~&zknp8}%TZ6Z8MUepy8JQJ4Zm{vtElVzj%D#N>Xlx4 zE)TVlpeun+$Ue^wT?keoUjntQI-sVgE7rm{uo9j_&2hkd`|c0HSn^dd4m+T3G#>Tl z+l^tEg_^qS^V$C~1P>|D3!(4=`$Wmuf_w&!!1?$R1~0T78i{$ykHdyI3-yHOQ6q5~ z^WzQFh(5$JSYeUv@Uy6?>AHyVSHpo6sHYRKJbr)`@dk!tfj8I@SO)9jP}B`~pyqTx z>d8)EHN1og7`~V-jcJ%2hod?&8g4Q83nwnIA3|x)7f?ez z5B1@*%jM5v4Eg)6yuecXX_t)J_r0(rPRD5Uwh(C5e}=l?Z>S4~Ewdd-!WiIJZGC;z)HO%0r)cGAz4>|>PzZICG{r@gO0sH}V z;lEKYh@7kK4Z<;!d=gg0=BRBq$vFcxV)L;&ZbB`-E2uRTvc{IDVFvlps1ZAaUTcEu z1iE46wYDSmP(#%YHK(0XH|&MFQGe7(d8iSY?aEi69$-7_$q%~vEY$TcyZT$M{^452 zUpL6P&c2iLp-wD^g|QZD(X~Zg*h9UFXJJ8HjJog^)X?rlt(h~Z#d!eybA*g*iA5(BY>Vkh@GzM<4UsmI=9Qm23wXhrYK<82IFQFFS z9n_+X+Q{bvwnJTaiQd23CTCHLCSsHAVGOFr)lfG~#S-|Ob264DzscoKV+8rTs5uXQ z({`vXY6LPd6Z>LYJc=3U6?)6Q*)mb9bR)*#In<)OkDBYCx9trIp{67WD`6Ms9E>Ob zA!^Q60UFB{B9ryH*-t9`gNBYiTrk`3P1Jbipl{7jwOD z_jv^7AfJFbu`=p{X&8uoP)|Al)v*<>{HpUN=A!&p49CAPKZfkK+r0R0xBn|rpo$a> z#im#YJ7Xda!311`Cou~rAQ!Hder*d+isKMyNG4a4+Mp zxm-*^6+DmHRzdshVoSs*@|{qNaU|Bm)mRm;qApx;zcHmS9cyDh)RS*Ojo>!SjqhUw z9zl)dw;n+x!M_-Skq7Jz%b_$AG8n98q1L%iE+3N zHL@o#0576O#=AlgMi6qyb|f10B(+c{K8JPjHPn-QjOxH?)Ec;e>c|z;6aI+>G5cZL zE&_{_FNLvKAN62;FsJtaB7$)gtVGRqXXPYW1E#Evnn75i&>Y z6Xn8MWK%E=hoKhdZq!sgLXAw^QH_{qOltzo{aCDn+fh$`2errweq{IeQq-KC#&rD6 zl~+E-UrNaL#cH?{b%R?Ng$0h=2TMkEpa*KI=3sg5Z$2RC?c>WP79ii`6Z=zZH_T4{ z(5H3;jv_;5PGK%QkN%-YEvi2;2j)Lvr?fEY{Bjt8i8vlBqt4%n{{4TDKy#Lb3-JbO zZbzTA4JV+6dM0X)S7R`4##B1~KB{96PuXq!UyLQ6@3h@D$yk(pXWWvFZ^2lDe96xl zf8Dt2=XN{2?0nmK74-xK&)AWPKs{k1>V;IrnU0#WXRrs3L@m0DsGnN@!WKBD;_m6 z)iD>QVPR~J>UeJ~f-j=lP4);<31*{yYR$s-Uz{=xp#TIDDEQ)}og78~_bezrfgZu!Oj)cV(LrXd^K{Eq#lb-{1;m)3-P z`lZ$5zV{hIPTcy3{i*fT1G`@j|H+$*@;gXdQ~VJtn0)@f*`i!+XMS2b=$E ze`>GOZMRL1J$Gcg7ipcdPE zs9o?eYA8=)89a-6WB!ery0Sq&|Kh5In){}x_N`pLJ!%nVVlV80p7!r?f*1+{bNT$M zIUaR^x~NrJAGMlWpnhuYi2A9uScuR6Arh0<=U+oDF^+blFd0{4B|L|k;($=w@jT9I zp+3)lVs{EE&|o^o<8IWVyn;0`D4);&0;%uphOv~7MtzDc$EtY3)&J`(n%@p}RSczm z0&1k@qPFdl{GQLhDz{M(MZp17Prtzq_&v77T46r_`(OrUkUxoG7#i;LZ?_Vt-O>{E zA=MLAKLp3(tEdMw1?&_gptfOUk3d74hB~1+YRc)8r*&&O<668yx7ExnVeM?k_ zyPRR;j=J$=m!FF<ZZlEr34|St|QM;l* z5j!Fgs2j(kMj*+Vj%wcyOXCZuj=zqY!Zogb4~A?1pC-`UUqijq@1r^r9AW1y0`>Wx z;B4f|dpL)qR`qn$BAbW$3^;_k;mH;@V zPxKhI%JW6q4wpi8xH_uCEl}6#ifT6q)$z&Bm9BgbYAv0LWdEz-9SXDtvhg0)9EM;z z7Dg@3&Zw!FjoRnSQ0JXNJ-`iAhwr22HXzDQVII_)ibTCH;!*WYP}gY_#s05EFpUCr zU>~Yy$50*k5%px{irXiviCQboUA`^qf_+?mAnH03uq@6%z0%*qjd&Z?etxtax#b=~ z6$*Bsw$)A4$Lnp>x7gA#wu3!TbG!icid~L+qN6T<19hX^vG%=CAGM}3QByY%V{kHR z|8GD|m3Nq+1;JVDjL{{0rZtX1b?7u|h|ggoypDRpvL)?ER7PE>CTd8VV;P);>hNaN z)a*jFJBI4$SI8puOx{vH|4%P9QFGcKo1%wx@g(Yo!KLk-hNGS=7OPs&@{=kHJt`UpJ@c}O|?#UTbYG&NA=jZmvS6BDr~s$=u8 z6COlOLE-Z5^B>i26l(3fiJJQ@s2d(a?WVJ+`&=*2{@1tHyA+b^blnlSU`l8&*T@s)nfD;GwR&Fu}7gh_w``BU>;M zPombuP1GtbmS`=78kq{HRh)_mI106mH@Wg}u>tw;igqn@LhULKbK_YojF(lQp?ZLt z)5oYA1|-=Vg`kEi1~npyuDlNF30k9uxSOjVgu20aS3kqmFGgMeEz~P{hb#9^5vV7Z zP*d;+>cTOV?5j8d3zAPkUAQGiV`nUaV^BlC0QKtLh}y2(QRnSLb^MI0zlz!=KVyvc ze`K=Vr?pXY)CV;ct57%EkG=6*EQhI;ZGC^#6HP;PU><7mtw$}&b66jPtJv$dK<$#L zs5O&?1-1XbBv6lkLEZ3yvtU)bU#p_ZJ32=>m!NL+0cv00MU6mMHJ|_2v?y##ehg+{ z7B<1~>UNQK#Tf2yW)PIc&8WHl5;aHPqo(8^tb}D#teF^3el}`E-gjPe=B{DCHCIDj zcL-L*<*3Da3bjifp{ERtagmd4`s?Nnx<)nz|9tg~^Cx)OdSQNEd z>!O~t0XD|ruKbYmIBM~oMt!(k!2I|Kb>rL(>{Jy)m6t}nioNOtdQ~<;%}qDdBAJcz zaXzjCFZ=6V$B!dtNvev7qH|F23z2M%% zDDD3v1RC0_7>uFK>}ribUAPVEP1hBh;0V-{e~6mvpHUBxuep8VTBxDzi2*niH8LYn zpMo1v9r*xDY5#vgprLw%T3j(L?2~jyb)XMw4GczgWF+bd=b~P*D^O3g6ZPqM7_|nj zpdQS$w4W(S*n?~eYO0r^r#IUP0_sQsMS$}XDfsG)0&TBHL|BQybZff=Z^uotz> z9$4!c!v0I;=Hc?pOg(IzCoHz@{tzOCcEZe z$ET#6{>c8M+QG%52Mq&Amxy2GL>+J8XuOK=l2(zluXX5&e^Q=vbX+8^;o?HXI%1t( zD>AvM{DFdn#LbC|k>-%sS1cXZTw}#c+=UctUl)0*uKZJV+L~WKRhOIiO`W8JIF$4s z?f)l-7FZ@J4;8O*q32P@R?-F+cc46w_`1J_e-m_8r~CugCYpE-<=Q!8DJ$#Bca!Ix zWloX)ChkSMimX2~oj^xN)Q3@RMG^KUNa6<^2brOXh2$|KfI6Mz!h8 z9}7sQiS@yyU2u~6<)oFQ{?vVgFM9-CNTo?y!8-CBvKhaqW~pOIoUcqZj3T9GLyY-AQ`Adl_7;H-$y;Wo(B#sn|uVV;uRn@f*@P z%JhPoPg!+rNYYW2{C}|w>ex<8#8IS@#C=JdNn=P;NW&?=h3|5njw$5VkhW0PhxGrCX%xJp`PZ?} z;{U(DE;Qksl+FcqKXq~(`F-RcJ!ymie%_QpN>fXRxbqhK7pqAE@o0CQL$3Tf z?k80v1@rmi|E>Q%jeC=3xkf`dX#+{$T#`uLDgW8kJs`h^cn@QVN6 z5knM6-7qZR+T5f*#>MkA|NUL_)f8$w>L^2_a>P@K_3bDZaTDA{T0z}JcaswsLfJAL zi8>n7wlw))iMQfv{GG(7yZ=KhOxGnYivIWC12Q`JF6uw}@@GNfd-ypij`SSq$*?b2#M_8( zkP=Dymya2wmx=jmXKv#p@^6y#HEjcFyz0pJqka%+C#e9b4rSkA59)P1QB%JPxclaC`Gk2Ohuk=m2bNoq>0<9XWE zCv~FiN6mjdGCKBH%w4C5B}LFMne+?sI(+(w;N12U6vY12RdLrUj-y=L_QW}!I&U-W z&%29^)BZm|dd3wr!Z&EV5kGP#={w#OQhxG2E;g7{lsL)N$CHnwekA!5_~ckZeh8T} zxQDcucmOWL#-uQkmyZG+&thTHHqvp@Y|6UeF-*ZIQW&WcH|s;$>%_stPmW^b50a^Y z3tV9{e1ViMY5Og8vxvtNFD7Mb{&hS@MVddd|2C)aeUiSv43`IjwVc?Blumkb z93xI8bDUIz^dItRu72QC?IyT*3~h8&C7;X<`Vlv9H)@3|$ahr(j`gmb(DVNVVlo9c z$!+4~TJC~&W!QfOKccfZhEeyNJ9(5XGIc5Yfp`&V0(HHxin~St@o&UeNS8@7NO|4) zTc~^0tv^Ehe>XnH-$;MbaF%QMHnEOZ$KRBl{ZN|EGXDH83 zoQ?9|N&k?VlCS^do&OIFPE+_Ih12nKl8)~z{y$%%Y#8->$(vQZ{UiYK+yVfn*>I-=B)#;XPE9s`!69xi{kg diff --git a/engine/core/locale/en_US/LC_MESSAGES/django.po b/engine/core/locale/en_US/LC_MESSAGES/django.po index 07915633..309d3c4f 100644 --- a/engine/core/locale/en_US/LC_MESSAGES/django.po +++ b/engine/core/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -27,9 +27,11 @@ msgstr "Is Active" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" -"If set to false, this object can't be seen by users without needed permission" +"If set to false, this object can't be seen by users without needed " +"permission" #: engine/core/abstract.py:26 engine/core/choices.py:18 msgid "created" @@ -71,65 +73,65 @@ msgstr "Metadata" msgid "timestamps" msgstr "Timestamps" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activate selected %(verbose_name_plural)s" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Selected items have been activated!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactivate selected %(verbose_name_plural)s" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Selected items have been deactivated!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Attribute Value" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Attribute Values" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Image" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Images" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Stock" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Stocks" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Order Product" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Order Products" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Children" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Config" @@ -153,7 +155,8 @@ msgstr "Delivered" msgid "canceled" msgstr "Canceled" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Failed" @@ -195,11 +198,11 @@ msgstr "" "negotiation. Language can be selected with Accept-Language and query " "parameter both." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -207,35 +210,35 @@ msgstr "" "Apply only a key to read permitted data from cache.\n" "Apply key, data and timeout with authentication to write data to cache." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Get a list of supported languages" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Get application's exposable parameters" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Send a message to the support team" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Request a CORSed URL. Only https allowed." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Search between products, categories and brands" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "Global search endpoint to query across project's tables" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Purchase an order as a Business" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -243,7 +246,7 @@ msgstr "" "Purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "download a digital asset from purchased digital order" @@ -268,7 +271,8 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Rewrite some fields of an existing attribute group saving non-editables" @@ -317,7 +321,8 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Rewrite some fields of an existing attribute value saving non-editables" @@ -351,9 +356,9 @@ msgstr "Rewrite some fields of an existing category saving non-editables" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" @@ -371,11 +376,11 @@ msgstr "For non-staff users, only their own orders are returned." #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -407,13 +412,13 @@ msgstr "Filter by order status (case-insensitive substring match)" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." #: engine/core/docs/drf/viewsets.py:366 msgid "retrieve a single order (detailed view)" @@ -465,7 +470,7 @@ msgstr "retrieve current pending order of a user" msgid "retrieves a current pending order of an authenticated user" msgstr "retrieves a current pending order of an authenticated user" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" @@ -599,26 +604,17 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…`\n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" @@ -634,12 +630,10 @@ msgstr "(exact) Product UUID" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -653,9 +647,6 @@ msgid "Product UUID or slug" msgstr "Product UUID or Slug" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Create a product" @@ -941,8 +932,8 @@ msgstr "Rewrite an existing product tag saving non-editables" msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "Rewrite some fields of an existing product tag saving non-editables" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "No search term provided." @@ -951,8 +942,8 @@ msgstr "No search term provided." msgid "Search" msgstr "Search" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -998,8 +989,8 @@ msgid "Quantity" msgstr "Quantity" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Slug" @@ -1015,7 +1006,7 @@ msgstr "Include sub-categories" msgid "Include personal ordered" msgstr "Include personal ordered products" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1036,12 +1027,12 @@ msgid "Bought before (inclusive)" msgstr "Bought before (inclusive)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "User email" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "User UUID" @@ -1065,251 +1056,252 @@ msgstr "Whole category(has at least 1 product or not)" msgid "Level" msgstr "Level" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "Product UUID" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Key to look for in or set into the cache" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Data to store in cache" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout in seconds to set the data for into the cache" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Cached data" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON data from the requested URL" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Add a product to the order" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Order {order_uuid} not found!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Remove a product from the order" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Remove all products from the order" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Buy an order" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Perform an action on a list of products in the order" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Remove/Add" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Action must be either \"add\" or \"remove\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Perform an action on a list of products in the wishlist" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Please provide `wishlist_uuid` value." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} not found!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Add a product to the order" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Remove a product from the order" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Remove a product from the order" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Remove a product from the order" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Buy an order" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"Please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Add or delete a feedback for the orderproduct" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Action must be either `add` or `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Orderproduct {order_product_uuid} not found!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Limit must be between 1 and 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - works like a charm" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Attributes" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Grouped attributes" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Groups of attributes" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Categories" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Brands" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Categories" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Markup Percentage" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "Which attributes and values can be used for filtering this category." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimum and maximum prices for products in this category, if available." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Tags for this category" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Products in this category" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Vendors" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Latitude (Y coordinate)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Longitude (X coordinate)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "How to" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Rating value from 1 to 10, inclusive, or 0 if not set." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Represents feedback from a user." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Notifications" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Download url for this order product if applicable" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Feedback" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "A list of order products in this order" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Billing address" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1317,53 +1309,53 @@ msgstr "" "Shipping address for this order, leave blank if same as billing address or " "if not applicable" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Total price of this order" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Total quantity of products in order" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Are all of the products in the order digital" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transactions for this order" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Orders" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "Image URL" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Product's images" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Category" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Feedbacks" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Brand" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Attribute groups" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1371,7 +1363,7 @@ msgstr "Attribute groups" msgid "price" msgstr "Price" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1379,39 +1371,39 @@ msgstr "Price" msgid "quantity" msgstr "Quantity" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Number of feedbacks" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Products only available for personal orders" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Discount price" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Products" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Promocodes" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Products on sale" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Promotions" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Vendor" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1419,98 +1411,98 @@ msgstr "Vendor" msgid "product" msgstr "Product" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Wishlisted products" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Wishlists" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Tagged products" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Product tags" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Tagged categories" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Categories' tags" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Project name" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Company Name" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Company Address" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Company Phone Number" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from', sometimes it must be used instead of host user value" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Email host user" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Maximum amount for payment" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Minimum amount for payment" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Analytics data" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Advertisement data" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Configuration" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Language code" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Language name" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Language flag, if exists :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Get a list of supported languages" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Products search results" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Products search results" @@ -1526,23 +1518,23 @@ msgstr "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Parent of this group" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Parent attribute group" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Attribute group's name" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Attribute group" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1560,48 +1552,48 @@ msgstr "" "also maintains additional metadata and constraints, making it suitable for " "use in systems that interact with third-party vendors." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stores credentials and endpoints required for vendor's API communication" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Authentication info" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "Define the markup for products retrieved from this vendor" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Vendor markup percentage" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Name of this vendor" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Vendor name" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "response file" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "vendor's last processing response" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Vendor's integration file path" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Integration path" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1615,27 +1607,27 @@ msgstr "" "display name. It supports operations exported through mixins and provides " "metadata customization for administrative purposes." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Tag name" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Tag display name" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Product tag" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1645,15 +1637,15 @@ msgstr "" "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "category tag" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "category tags" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1675,184 +1667,186 @@ msgstr "" "hierarchy of categories, as well as assign attributes like images, tags, or " "priority." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Upload an image representing this category" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Category image" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Define a markup percentage for products in this category" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Parent of this category to form a hierarchical structure" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Parent category" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Category name" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Provide a name for this category" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Add a detailed description for this category" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Category description" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "tags that help describe or group this category" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Priority" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Name of this brand" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Brand name" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Upload a logo representing this brand" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Brand small image" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Upload a big logo representing this brand" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Brand big image" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Add a detailed description of the brand" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Brand description" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Optional categories that this brand is associated with" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Categories" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Associated vendor" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Selling price" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Associated product" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Quantity in stock" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "Vendor's SKU" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Digital file" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "System attributes" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Stock entries" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1872,244 +1866,252 @@ msgstr "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Category this product belongs to" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Optionally associate this product with a brand" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Tags that help describe or group this product" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Indicates whether this product is digitally delivered" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Is product digital" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "indicates whether this product should be updated from periodic task" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "is product updatable" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Provide a clear identifying name for the product" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Product name" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Product description" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Part number for this product" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Part number" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Stock Keeping Unit for this product" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Group of this attribute" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "String" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Integer" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Float" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Boolean" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Array" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Object" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Type of the attribute's value" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Value type" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Name of this attribute" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Attribute's name" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "is filterable" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "designates whether this attribute can be used for filtering or not" -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribute" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Attribute of this value" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "The specific value for this attribute" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Image alt text" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Product image" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Display priority" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "The product that this image represents" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Product images" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Discount percentage" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Promotion name" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Promotion description" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Included products" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Promotion" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2121,123 +2123,123 @@ msgstr "" "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Wishlist" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Documentary" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Documentaries" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Unresolved" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Address line for the customer" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Address line" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Street" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "District" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "City" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Region" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Postal code" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Country" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Address" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adresses" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2253,71 +2255,71 @@ msgstr "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Unique code used by a user to redeem a discount" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Promo code identifier" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Percentage discount" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "End validity time" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Start validity time" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Timestamp when the promocode was used, blank if not used yet" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Usage timestamp" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Assigned user" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Promo code" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Promo codes" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2325,161 +2327,161 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Promocode has been used already" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "The billing address used for this order" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Optional promo code applied to this order" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Applied promo code" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "The shipping address used for this order" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Shipping address" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Current status of the order in its lifecycle" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Order status" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "JSON structure of notifications to display to users, in admin UI the table-" "view is used" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "JSON representation of order attributes for this order" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "The user who placed the order" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "User" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "The timestamp when the order was finalized" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Buy time" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "A human-readable identifier for the order" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "human-readable ID" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Order" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "A user must have only one pending order at a time!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "You cannot add products to an order that is not a pending one" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "You cannot remove products from an order that is not a pending one" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "You can only buy physical products with shipping address specified!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Address does not exist" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "You can not purchase at this moment, please try again in a few minutes." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Invalid force value" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "You cannot buy an order without a user!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "A user without a balance cannot buy with balance!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2487,14 +2489,14 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Invalid payment method: {payment_method} from {available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2508,32 +2510,33 @@ msgstr "" "product in the order, and a user-assigned rating. The class uses database " "fields to effectively model and manage feedback data." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "User-provided comments about their experience with the product" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Feedback comments" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "References the specific product in an order that this feedback is about" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Related order product" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "User-assigned rating for the product" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Product rating" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2555,128 +2558,128 @@ msgstr "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "The price paid by the customer for this product at purchase time" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Internal comments" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "User notifications" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Parent order" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Product quantity" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Product line status" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Orderproduct must have an associated order!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Wrong action specified for feedback: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "you cannot feedback an order which is not received" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Name" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL of the integration" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Authentication credentials" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "You can only have one default CRM provider" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRMs" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Order's CRM link" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Orders' CRM links" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Download" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Downloads" @@ -2876,12 +2879,11 @@ msgstr "Hello %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"Thank you for your order #%(order.pk)s! We are pleased to inform you that we " -"have taken your order into work. Below are the details of your order:" +"Thank you for your order #%(order.pk)s! We are pleased to inform you that we" +" have taken your order into work. Below are the details of your order:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2991,12 +2993,11 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" -"Thank you for your order! We are pleased to confirm your purchase. Below are " -"the details of your order:" +"Thank you for your order! We are pleased to confirm your purchase. Below are" +" the details of your order:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -3023,11 +3024,11 @@ msgstr "" "all rights\n" " reserved" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Both data and timeout are required" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Invalid timeout value, it must be between 0 and 216000 seconds" @@ -3059,13 +3060,13 @@ msgstr "You do not have permission to perform this action." msgid "NOMINATIM_URL must be configured." msgstr "NOMINATIM_URL parameter must be configured!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Image dimensions should not exceed w{max_width} x h{max_height} pixels!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3073,7 +3074,7 @@ msgstr "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3083,17 +3084,17 @@ msgstr "" "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returns a list of supported languages and their corresponding information." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Returns the parameters of the website as a JSON object." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3101,11 +3102,11 @@ msgstr "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Handles `contact us` form submissions." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3113,82 +3114,74 @@ msgstr "" "Handles requests for processing and validating URLs from incoming POST " "requests." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Handles global search queries." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Handles the logic of buying as a business without registration." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid is required" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "order product does not exist" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "You can only download the digital asset once" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "the order must be paid before downloading the digital asset" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "The order product does not have a product" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon not found" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Returns current version of the eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Revenue & Orders (last %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Returns custom variables for Dashboard." @@ -3208,15 +3201,17 @@ msgstr "" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." #: engine/core/viewsets.py:179 msgid "" @@ -3239,14 +3234,14 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." #: engine/core/viewsets.py:217 msgid "" @@ -3311,15 +3306,15 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." #: engine/core/viewsets.py:652 @@ -3327,31 +3322,31 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." #: engine/core/viewsets.py:914 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" #: engine/core/viewsets.py:974 @@ -3378,16 +3373,16 @@ msgstr "Handles operations related to Stock data in the system." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." diff --git a/engine/core/locale/es_ES/LC_MESSAGES/django.mo b/engine/core/locale/es_ES/LC_MESSAGES/django.mo index aa7fc2f6a6811f7828c0f51bce00d3e4a3f1f4af..c1a47764f4e26541fc46a364ab3ebbf680c35c10 100644 GIT binary patch delta 14863 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 delta 14686 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 diff --git a/engine/core/locale/es_ES/LC_MESSAGES/django.po b/engine/core/locale/es_ES/LC_MESSAGES/django.po index fe7dfa6f..fdee7f21 100644 --- a/engine/core/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/core/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Está activo" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Si se establece en false, este objeto no puede ser visto por los usuarios " "sin el permiso necesario" @@ -74,65 +75,65 @@ msgstr "Metadatos" msgid "timestamps" msgstr "Marcas de tiempo" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activar %(verbose_name_plural)s seleccionado" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Los artículos seleccionados se han activado." -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Desactivar %(verbose_name_plural)s seleccionado" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Los artículos seleccionados se han desactivado." -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Atributo Valor" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Valores de los atributos" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Imagen" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Imágenes" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Stock" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Acciones" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Pedir un producto" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Pedir productos" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Niños" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Configurar" @@ -156,7 +157,8 @@ msgstr "Entregado" msgid "canceled" msgstr "Cancelado" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Fallido" @@ -198,57 +200,56 @@ msgstr "" "negociación de contenido. El idioma se puede seleccionar tanto con Accept-" "Language como con el parámetro de consulta." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "E/S de caché" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Aplicar sólo una clave para leer datos permitidos de la caché.\n" -"Aplicar clave, datos y tiempo de espera con autenticación para escribir " -"datos en la caché." +"Aplicar clave, datos y tiempo de espera con autenticación para escribir datos en la caché." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Obtener una lista de los idiomas admitidos" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Obtener los parámetros exponibles de la aplicación" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Enviar un mensaje al equipo de asistencia" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Solicitar una URL CORSed. Solo se permite https." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Búsqueda entre productos, categorías y marcas" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" "Punto final de búsqueda global para consultar todas las tablas del proyecto" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Comprar un pedido como empresa" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"Compra un pedido como empresa, utilizando los `productos` proporcionados con " -"`product_uuid` y `attributes`." +"Compra un pedido como empresa, utilizando los `productos` proporcionados con" +" `product_uuid` y `attributes`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "descargar un activo digital de un pedido digital adquirido" @@ -273,7 +274,8 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescribir un grupo de atributos existente guardando los no editables" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Reescribir algunos campos de un grupo de atributos existente guardando los " "no editables" @@ -301,7 +303,8 @@ msgstr "Reescribir un atributo existente guardando los no editables" #: engine/core/docs/drf/viewsets.py:156 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Reescribir algunos campos de un atributo existente guardando los no editables" +"Reescribir algunos campos de un atributo existente guardando los no " +"editables" #: engine/core/docs/drf/viewsets.py:166 msgid "list all attribute values (simple view)" @@ -324,10 +327,11 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescribir un valor de atributo existente guardando los no editables" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" -"Reescribir algunos campos de un valor de atributo existente guardando los no " -"editables" +"Reescribir algunos campos de un valor de atributo existente guardando los no" +" editables" #: engine/core/docs/drf/viewsets.py:219 engine/core/docs/drf/viewsets.py:220 msgid "list all categories (simple view)" @@ -361,9 +365,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" @@ -383,12 +387,12 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Búsqueda de subcadenas sin distinción entre mayúsculas y minúsculas en " -"human_readable_id, order_products.product.name y order_products.product." -"partnumber" +"human_readable_id, order_products.product.name y " +"order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -409,8 +413,8 @@ msgstr "Filtrar por ID de pedido exacto legible por el ser humano" #: engine/core/docs/drf/viewsets.py:336 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -"Filtrar por correo electrónico del usuario (coincidencia exacta insensible a " -"mayúsculas y minúsculas)" +"Filtrar por correo electrónico del usuario (coincidencia exacta insensible a" +" mayúsculas y minúsculas)" #: engine/core/docs/drf/viewsets.py:341 msgid "Filter by user's UUID" @@ -424,9 +428,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordenar por: uuid, human_readable_id, user_email, user, status, created, " "modified, buy_time, random. Utilice el prefijo '-' para orden descendente " @@ -484,7 +488,7 @@ msgstr "recuperar el pedido pendiente actual de un usuario" msgid "retrieves a current pending order of an authenticated user" msgstr "recupera un pedido pendiente actual de un usuario autenticado" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "comprar un pedido sin crear una cuenta" @@ -573,7 +577,8 @@ msgstr "Reescribir un atributo existente guardando los no editables" #: engine/core/docs/drf/viewsets.py:537 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Reescribir algunos campos de un atributo existente guardando los no editables" +"Reescribir algunos campos de un atributo existente guardando los no " +"editables" #: engine/core/docs/drf/viewsets.py:544 msgid "retrieve current pending wishlist of a user" @@ -628,31 +633,20 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrar por uno o varios pares nombre/valor de atributo. \n" "- Sintaxis**: `nombre_attr=método-valor[;attr2=método2-valor2]...`.\n" -"- Métodos** (por defecto `icontiene` si se omite): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- Tipificación de valores**: Se intenta primero JSON (para poder pasar " -"listas/dictos), `true`/`false` para booleanos, enteros, flotantes; en caso " -"contrario se trata como cadena. \n" -"- Base64**: prefiérelo con `b64-` para codificar en base64 el valor sin " -"procesar. \n" +"- Métodos** (por defecto `icontiene` si se omite): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- Tipificación de valores**: Se intenta primero JSON (para poder pasar listas/dictos), `true`/`false` para booleanos, enteros, flotantes; en caso contrario se trata como cadena. \n" +"- Base64**: prefiérelo con `b64-` para codificar en base64 el valor sin procesar. \n" "Ejemplos: \n" -"`color=rojo exacto`, `tamaño=gt-10`, `características=en-[\"wifi\", " -"\"bluetooth\"]`,\n" +"`color=rojo exacto`, `tamaño=gt-10`, `características=en-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." #: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 @@ -665,12 +659,10 @@ msgstr "UUID (exacto) del producto" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Lista separada por comas de campos por los que ordenar. Prefiérela con `-` " -"para que sea descendente. \n" +"Lista separada por comas de campos por los que ordenar. Prefiérela con `-` para que sea descendente. \n" "**Permitido:** uuid, rating, name, slug, created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -684,9 +676,6 @@ msgid "Product UUID or slug" msgstr "UUID o babosa del producto" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Crear un producto" @@ -879,7 +868,8 @@ msgstr "Eliminar la imagen de un producto" #: engine/core/docs/drf/viewsets.py:1146 msgid "rewrite an existing product image saving non-editables" -msgstr "Reescribir una imagen de producto existente guardando los no editables" +msgstr "" +"Reescribir una imagen de producto existente guardando los no editables" #: engine/core/docs/drf/viewsets.py:1154 msgid "rewrite some fields of an existing product image saving non-editables" @@ -993,8 +983,8 @@ msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "No se proporciona ningún término de búsqueda." @@ -1003,8 +993,8 @@ msgstr "No se proporciona ningún término de búsqueda." msgid "Search" msgstr "Buscar en" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1050,8 +1040,8 @@ msgid "Quantity" msgstr "Cantidad" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Babosa" @@ -1067,13 +1057,14 @@ msgstr "Incluir subcategorías" msgid "Include personal ordered" msgstr "Incluir productos personales solicitados" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" #: engine/core/filters.py:212 msgid "there must be a category_uuid to use include_subcategories flag" -msgstr "Debe haber un category_uuid para usar la bandera include_subcategories" +msgstr "" +"Debe haber un category_uuid para usar la bandera include_subcategories" #: engine/core/filters.py:398 msgid "Search (ID, product name or part number)" @@ -1088,12 +1079,12 @@ msgid "Bought before (inclusive)" msgstr "Comprado antes (inclusive)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "Correo electrónico del usuario" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "UUID de usuario" @@ -1117,254 +1108,257 @@ msgstr "Toda la categoría (tenga o no al menos 1 producto)" msgid "Level" msgstr "Nivel" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "UUID del producto" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Clave que hay que buscar o introducir en la caché" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Datos a almacenar en caché" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Tiempo de espera en segundos para poner los datos en la caché" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Datos en caché" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Datos JSON camelizados de la URL solicitada" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Sólo se permiten URL que empiecen por http(s)://." -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Añadir un producto al pedido" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Pedido {order_uuid} ¡no encontrado!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Eliminar un producto del pedido" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Eliminar todos los productos del pedido" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Comprar un pedido" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Indique order_uuid o order_hr_id, ¡se excluyen mutuamente!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" -msgstr "Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}" +msgstr "" +"Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Realizar una acción en una lista de productos del pedido" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Quitar/Agregar" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "La acción debe ser \"añadir\" o \"eliminar\"." -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Realizar una acción en una lista de productos de la lista de deseos" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Por favor, proporcione el valor `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista de deseos {wishlist_uuid} ¡no encontrada!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Añadir un producto al pedido" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Eliminar un producto del pedido" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Eliminar un producto del pedido" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Eliminar un producto del pedido" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Comprar un pedido" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Por favor, envíe los atributos como una cadena formateada como attr1=valor1," -"attr2=valor2" +"Por favor, envíe los atributos como una cadena formateada como " +"attr1=valor1,attr2=valor2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Añadir o eliminar un comentario para el pedido-producto" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "La acción debe ser \"añadir\" o \"eliminar\"." -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "No se ha encontrado el producto {order_product_uuid}." -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Cadena de dirección original proporcionada por el usuario" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} no existe: ¡{uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "El límite debe estar entre 1 y 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funciona a las mil maravillas" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Atributos" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Atributos agrupados" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Grupos de atributos" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Categorías" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Marcas" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Categorías" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Porcentaje de recargo" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Qué atributos y valores se pueden utilizar para filtrar esta categoría." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Precios mínimo y máximo de los productos de esta categoría, si están " "disponibles." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Etiquetas para esta categoría" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Productos de esta categoría" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Vendedores" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Latitud (coordenada Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Longitud (coordenada X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Cómo" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -"Valor de calificación de 1 a 10, ambos inclusive, o 0 si no está configurado." +"Valor de calificación de 1 a 10, ambos inclusive, o 0 si no está " +"configurado." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Representa la opinión de un usuario." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Notificaciones" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Descargar url para este producto de pedido si procede" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Comentarios" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Una lista de los productos del pedido" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Dirección de facturación" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1372,53 +1366,53 @@ msgstr "" "Dirección de envío para este pedido, dejar en blanco si es la misma que la " "de facturación o si no procede" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Precio total de este pedido" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Cantidad total de productos del pedido" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "¿Están todos los productos en el pedido digital" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transacciones para este pedido" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Pedidos" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "URL de la imagen" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Imágenes del producto" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Categoría" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Comentarios" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Marca" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Grupos de atributos" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1426,7 +1420,7 @@ msgstr "Grupos de atributos" msgid "price" msgstr "Precio" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1434,39 +1428,39 @@ msgstr "Precio" msgid "quantity" msgstr "Cantidad" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Número de reacciones" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Productos sólo disponibles para pedidos personales" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Precio reducido" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Productos" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Códigos promocionales" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Productos a la venta" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Promociones" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Vendedor" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1474,99 +1468,99 @@ msgstr "Vendedor" msgid "product" msgstr "Producto" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Productos deseados" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Listas de deseos" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Productos con etiqueta" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Etiquetas del producto" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Categorías" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Etiquetas de las categorías" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Nombre del proyecto" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Nombre de la empresa" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Dirección de la empresa" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Teléfono de la empresa" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', a veces debe utilizarse en lugar del valor del usuario host" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Correo electrónico del usuario anfitrión" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Importe máximo de pago" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Importe mínimo de pago" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Datos analíticos" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Datos publicitarios" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Configuración" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Código de idioma" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Nombre de la lengua" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Bandera de idioma, si existe :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Obtener una lista de los idiomas admitidos" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Resultados de la búsqueda de productos" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Resultados de la búsqueda de productos" @@ -1580,26 +1574,26 @@ msgstr "" "Representa un grupo de atributos, que puede ser jerárquico. Esta clase se " "utiliza para gestionar y organizar grupos de atributos. Un grupo de " "atributos puede tener un grupo padre, formando una estructura jerárquica. " -"Esto puede ser útil para categorizar y gestionar los atributos de manera más " -"eficaz en un sistema complejo." +"Esto puede ser útil para categorizar y gestionar los atributos de manera más" +" eficaz en un sistema complejo." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Padre de este grupo" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Grupo de atributos padre" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Nombre del grupo de atributos" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Grupo de atributos" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1611,58 +1605,58 @@ msgid "" msgstr "" "Representa una entidad de proveedor capaz de almacenar información sobre " "proveedores externos y sus requisitos de interacción. La clase Proveedor se " -"utiliza para definir y gestionar la información relacionada con un proveedor " -"externo. Almacena el nombre del vendedor, los detalles de autenticación " +"utiliza para definir y gestionar la información relacionada con un proveedor" +" externo. Almacena el nombre del vendedor, los detalles de autenticación " "necesarios para la comunicación y el porcentaje de marcado aplicado a los " -"productos recuperados del vendedor. Este modelo también mantiene metadatos y " -"restricciones adicionales, lo que lo hace adecuado para su uso en sistemas " +"productos recuperados del vendedor. Este modelo también mantiene metadatos y" +" restricciones adicionales, lo que lo hace adecuado para su uso en sistemas " "que interactúan con proveedores externos." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Almacena las credenciales y los puntos finales necesarios para la " "comunicación API del proveedor" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Información de autenticación" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definir el margen de beneficio para los productos recuperados de este " "proveedor" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Porcentaje de margen del vendedor" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Nombre de este vendedor" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Nombre del vendedor" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "archivo de respuesta" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "última respuesta de procesamiento del proveedor" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Ruta del archivo de integración del proveedor" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Vía de integración" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1677,27 +1671,27 @@ msgstr "" "operaciones exportadas a través de mixins y proporciona personalización de " "metadatos con fines administrativos." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Identificador interno de la etiqueta del producto" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Nombre de la etiqueta" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Nombre fácil de usar para la etiqueta del producto" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Nombre de la etiqueta" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Etiqueta del producto" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1708,15 +1702,15 @@ msgstr "" "clasificar productos. Incluye atributos para un identificador de etiqueta " "interno y un nombre de visualización fácil de usar." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "etiqueta de categoría" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "etiquetas de categoría" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1739,56 +1733,57 @@ msgstr "" "descripción y la jerarquía de las categorías, así como asignar atributos " "como imágenes, etiquetas o prioridad." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Cargar una imagen que represente esta categoría" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Categoría imagen" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Definir un porcentaje de recargo para los productos de esta categoría" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Padre de esta categoría para formar una estructura jerárquica" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Categoría de padres" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Nombre de la categoría" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Indique un nombre para esta categoría" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Añadir una descripción detallada para esta categoría" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Descripción de la categoría" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "etiquetas que ayudan a describir o agrupar esta categoría" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Prioridad" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Representa un objeto Marca en el sistema. Esta clase maneja información y " "atributos relacionados con una marca, incluyendo su nombre, logotipos, " @@ -1796,50 +1791,50 @@ msgstr "" "Permite organizar y representar los datos relacionados con la marca dentro " "de la aplicación." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Nombre de esta marca" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Marca" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Cargar un logotipo que represente a esta marca" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Marca pequeña imagen" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Sube un logotipo grande que represente a esta marca" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Gran imagen de marca" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Añadir una descripción detallada de la marca" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Descripción de la marca" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Categorías opcionales a las que se asocia esta marca" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Categorías" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1848,77 +1843,77 @@ msgstr "" "Representa el stock de un producto gestionado en el sistema. Esta clase " "proporciona detalles sobre la relación entre vendedores, productos y su " "información de existencias, así como propiedades relacionadas con el " -"inventario como precio, precio de compra, cantidad, SKU y activos digitales. " -"Forma parte del sistema de gestión de inventario para permitir el " +"inventario como precio, precio de compra, cantidad, SKU y activos digitales." +" Forma parte del sistema de gestión de inventario para permitir el " "seguimiento y la evaluación de los productos disponibles de varios " "vendedores." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "El vendedor que suministra este producto dispone de" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Proveedor asociado" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Precio final al cliente después de márgenes" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Precio de venta" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "El producto asociado a esta entrada en stock" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Producto asociado" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "El precio pagado al vendedor por este producto" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Precio de compra al vendedor" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Cantidad disponible del producto en stock" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Cantidad en stock" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU asignada por el proveedor para identificar el producto" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "SKU del vendedor" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Archivo digital asociado a esta acción, si procede" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Archivo digital" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Atributos del sistema" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Entradas en existencias" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1932,163 +1927,172 @@ msgstr "" "Representa un producto con atributos como categoría, marca, etiquetas, " "estado digital, nombre, descripción, número de pieza y babosa. Proporciona " "propiedades de utilidad relacionadas para recuperar valoraciones, recuentos " -"de comentarios, precio, cantidad y total de pedidos. Diseñado para su uso en " -"un sistema que gestiona el comercio electrónico o la gestión de inventarios. " -"Esta clase interactúa con modelos relacionados (como Category, Brand y " -"ProductTag) y gestiona el almacenamiento en caché de las propiedades a las " -"que se accede con frecuencia para mejorar el rendimiento. Se utiliza para " -"definir y manipular datos de productos y su información asociada dentro de " -"una aplicación." +"de comentarios, precio, cantidad y total de pedidos. Diseñado para su uso en" +" un sistema que gestiona el comercio electrónico o la gestión de " +"inventarios. Esta clase interactúa con modelos relacionados (como Category, " +"Brand y ProductTag) y gestiona el almacenamiento en caché de las propiedades" +" a las que se accede con frecuencia para mejorar el rendimiento. Se utiliza " +"para definir y manipular datos de productos y su información asociada dentro" +" de una aplicación." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Categoría a la que pertenece este producto" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Si lo desea, puede asociar este producto a una marca" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Etiquetas que ayudan a describir o agrupar este producto" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Indica si este producto se entrega digitalmente" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "¿Es digital el producto?" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" +"indica si este producto debe actualizarse a partir de la tarea periódica" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "el producto es actualizable" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Proporcionar un nombre que identifique claramente el producto" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Nombre del producto" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Añada una descripción detallada del producto" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Descripción del producto" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Número de pieza de este producto" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Número de pieza" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Unidad de Mantenimiento de Existencias para este producto" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Representa un atributo en el sistema. Esta clase se utiliza para definir y " "gestionar atributos, que son datos personalizables que pueden asociarse a " -"otras entidades. Los atributos tienen asociadas categorías, grupos, tipos de " -"valores y nombres. El modelo admite varios tipos de valores, como cadenas, " +"otras entidades. Los atributos tienen asociadas categorías, grupos, tipos de" +" valores y nombres. El modelo admite varios tipos de valores, como cadenas, " "enteros, flotantes, booleanos, matrices y objetos. Esto permite una " "estructuración dinámica y flexible de los datos." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Grupo de este atributo" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Cadena" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Entero" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Flotador" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Booleano" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Matriz" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Objeto" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Tipo del valor del atributo" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Tipo de valor" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Nombre de este atributo" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Nombre del atributo" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "es filtrable" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Qué atributos y valores se pueden utilizar para filtrar esta categoría." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Atributo" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Representa un valor específico para un atributo vinculado a un producto. " "Vincula el \"atributo\" a un \"valor\" único, lo que permite una mejor " "organización y representación dinámica de las características del producto." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Atributo de este valor" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "El producto específico asociado al valor de este atributo" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "El valor específico de este atributo" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2098,47 +2102,47 @@ msgstr "" "específicos y determinar su orden de visualización. También incluye una " "función de accesibilidad con texto alternativo para las imágenes." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "" "Proporcione un texto alternativo para la imagen en aras de la accesibilidad" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Texto alternativo de la imagen" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Cargar el archivo de imagen para este producto" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Imagen del producto" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Determina el orden de visualización de las imágenes" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Prioridad de visualización" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "El producto que representa esta imagen" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Imágenes de productos" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Representa una campaña promocional para productos con descuento. Esta clase " "se utiliza para definir y gestionar campañas promocionales que ofrecen un " @@ -2147,39 +2151,39 @@ msgstr "" "promoción y vincularla a los productos aplicables. Se integra con el " "catálogo de productos para determinar los artículos afectados en la campaña." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Porcentaje de descuento para los productos seleccionados" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Porcentaje de descuento" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Proporcione un nombre único para esta promoción" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Nombre de la promoción" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Descripción de la promoción" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Seleccione los productos incluidos en esta promoción" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Productos incluidos" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Promoción" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2192,30 +2196,30 @@ msgstr "" "productos, así como soportar operaciones para añadir y eliminar múltiples " "productos a la vez." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Productos que el usuario ha marcado como deseados" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Usuario propietario de esta lista de deseos" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Propietario de Wishlist" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Lista de deseos" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Representa un registro documental vinculado a un producto. Esta clase se " "utiliza para almacenar información sobre documentales relacionados con " @@ -2224,28 +2228,28 @@ msgstr "" "de almacenamiento de los archivos documentales. Amplía la funcionalidad de " "mixins específicos y proporciona características personalizadas adicionales." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Documental" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Documentaries" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Sin resolver" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Representa una entidad de dirección que incluye detalles de ubicación y " "asociaciones con un usuario. Proporciona funcionalidad para el " @@ -2254,63 +2258,63 @@ msgstr "" "información detallada sobre direcciones, incluidos componentes como calle, " "ciudad, región, país y geolocalización (longitud y latitud). Admite la " "integración con API de geocodificación, permitiendo el almacenamiento de " -"respuestas API sin procesar para su posterior procesamiento o inspección. La " -"clase también permite asociar una dirección a un usuario, facilitando el " +"respuestas API sin procesar para su posterior procesamiento o inspección. La" +" clase también permite asociar una dirección a un usuario, facilitando el " "manejo personalizado de los datos." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Dirección del cliente" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Dirección" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Calle" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Distrito" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Ciudad" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Región" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Promo code" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "País" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocalización Punto(Longitud, Latitud)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Respuesta JSON completa del geocodificador para esta dirección" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Respuesta JSON almacenada del servicio de geocodificación" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Dirección" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Direcciones" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2327,72 +2331,72 @@ msgstr "" "para validar y aplicar el código promocional a un pedido garantizando el " "cumplimiento de las restricciones." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Código único utilizado por un usuario para canjear un descuento" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Promo code identifier" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Se aplica un descuento fijo si no se utiliza el porcentaje" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Importe fijo del descuento" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Porcentaje de descuento aplicado si no se utiliza el importe fijo" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Porcentaje de descuento" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Fecha de caducidad del promocode" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Hora de fin de validez" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Fecha a partir de la cual es válido este promocode" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Hora de inicio de validez" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Fecha en la que se utilizó el promocode, en blanco si aún no se ha utilizado" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Marca de tiempo de uso" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Usuario asignado a este promocode si procede" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Usuario asignado" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Promo code" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Promo codes" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2400,21 +2404,21 @@ msgstr "" "Sólo debe definirse un tipo de descuento (importe o porcentaje), pero no " "ambos ni ninguno." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "El código promocional ya ha sido utilizado" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "¡Tipo de descuento no válido para el código promocional {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2422,142 +2426,142 @@ msgstr "" "dentro de la aplicación, incluyendo sus diversos atributos como información " "de facturación y envío, estado, usuario asociado, notificaciones y " "operaciones relacionadas. Los pedidos pueden tener productos asociados, se " -"pueden aplicar promociones, establecer direcciones y actualizar los datos de " -"envío o facturación. Del mismo modo, la funcionalidad permite gestionar los " -"productos en el ciclo de vida del pedido." +"pueden aplicar promociones, establecer direcciones y actualizar los datos de" +" envío o facturación. Del mismo modo, la funcionalidad permite gestionar los" +" productos en el ciclo de vida del pedido." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "La dirección de facturación utilizada para este pedido" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Código promocional opcional aplicado a este pedido" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Código promocional aplicado" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "La dirección de envío utilizada para este pedido" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Dirección de envío" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Estado actual del pedido en su ciclo de vida" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Estado del pedido" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "Estructura JSON de las notificaciones para mostrar a los usuarios, en la " "interfaz de administración se utiliza la vista de tabla." -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "Representación JSON de los atributos de la orden para esta orden" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "El usuario que realizó el pedido" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Usuario" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Fecha de finalización de la orden" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Comprar tiempo" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Un identificador legible por el ser humano para la orden" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "ID legible por humanos" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Pida" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "Un usuario sólo puede tener una orden pendiente a la vez." -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "No puede añadir productos a un pedido que no esté pendiente" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "No se pueden añadir productos inactivos al pedido" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "No puede añadir más productos de los disponibles en stock" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "No puede eliminar productos de un pedido que no esté pendiente" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} ¡no existe con la consulta <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Promocode no existe" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" "Sólo puede comprar productos físicos con la dirección de envío especificada." -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "La dirección no existe" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "No puede comprar en este momento, por favor inténtelo de nuevo en unos " "minutos." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Valor de fuerza no válido" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "No se puede comprar un pedido vacío." -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "No se puede comprar un pedido sin un usuario." -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "¡Un usuario sin saldo no puede comprar con saldo!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Fondos insuficientes para completar el pedido" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2565,14 +2569,14 @@ msgstr "" "no puede comprar sin registrarse, facilite la siguiente información: nombre " "del cliente, correo electrónico del cliente, número de teléfono del cliente" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Forma de pago no válida: ¡{payment_method} de {available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2588,33 +2592,34 @@ msgstr "" "clase utiliza campos de base de datos para modelar y gestionar eficazmente " "los datos de los comentarios." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "Comentarios de los usuarios sobre su experiencia con el producto" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Comentarios" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "Hace referencia al producto específico de un pedido sobre el que trata esta " "opinión" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Producto relacionado con el pedido" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Valoración del producto asignada por el usuario" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Valoración del producto" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2632,135 +2637,136 @@ msgstr "" "atributos del producto y su estado. Gestiona las notificaciones para el " "usuario y los administradores y maneja operaciones como la devolución del " "saldo del producto o la adición de comentarios. Este modelo también " -"proporciona métodos y propiedades que soportan la lógica de negocio, como el " -"cálculo del precio total o la generación de una URL de descarga para " +"proporciona métodos y propiedades que soportan la lógica de negocio, como el" +" cálculo del precio total o la generación de una URL de descarga para " "productos digitales. El modelo se integra con los modelos Pedido y Producto " "y almacena una referencia a ellos." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "" "El precio pagado por el cliente por este producto en el momento de la compra" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Precio de compra en el momento del pedido" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarios internos para los administradores sobre este producto solicitado" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Comentarios internos" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Notificaciones a los usuarios" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "Representación JSON de los atributos de este elemento" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Atributos ordenados del producto" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Referencia al pedido principal que contiene este producto" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Orden de los padres" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "El producto específico asociado a esta línea de pedido" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Cantidad de este producto específico en el pedido" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Cantidad de productos" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Estado actual de este producto en el pedido" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Estado de la línea de productos" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "El pedido-producto debe tener un pedido asociado." -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Acción incorrecta especificada para la retroalimentación: ¡{action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "no se puede comentar un pedido no recibido" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Nombre" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL de la integración" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Credenciales de autenticación" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Sólo puede tener un proveedor de CRM por defecto" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRMs" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Enlace CRM del pedido" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Enlaces CRM de los pedidos" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Representa la funcionalidad de descarga de activos digitales asociados a " -"pedidos. La clase DigitalAssetDownload proporciona la capacidad de gestionar " -"y acceder a descargas relacionadas con productos de pedidos. Mantiene " +"pedidos. La clase DigitalAssetDownload proporciona la capacidad de gestionar" +" y acceder a descargas relacionadas con productos de pedidos. Mantiene " "información sobre el producto del pedido asociado, el número de descargas y " -"si el activo es visible públicamente. Incluye un método para generar una URL " -"para descargar el activo cuando el pedido asociado está en estado completado." +"si el activo es visible públicamente. Incluye un método para generar una URL" +" para descargar el activo cuando el pedido asociado está en estado " +"completado." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Descargar" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Descargas" @@ -2961,8 +2967,7 @@ msgstr "Hola %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "¡Gracias por su pedido #%(order.pk)s! Nos complace informarle de que hemos " @@ -3076,8 +3081,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Gracias por su pedido. Nos complace confirmarle su compra. A continuación " @@ -3108,11 +3112,11 @@ msgstr "" "todos los derechos\n" " reservados" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Tanto los datos como el tiempo de espera son necesarios" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" "Valor de tiempo de espera no válido, debe estar entre 0 y 216000 segundos." @@ -3145,23 +3149,23 @@ msgstr "No tiene permiso para realizar esta acción." msgid "NOMINATIM_URL must be configured." msgstr "El parámetro NOMINATIM_URL debe estar configurado." -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Las dimensiones de la imagen no deben superar w{max_width} x h{max_height} " "píxeles." -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -"Gestiona la solicitud del índice del mapa del sitio y devuelve una respuesta " -"XML. Se asegura de que la respuesta incluya el encabezado de tipo de " +"Gestiona la solicitud del índice del mapa del sitio y devuelve una respuesta" +" XML. Se asegura de que la respuesta incluya el encabezado de tipo de " "contenido apropiado para XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3171,17 +3175,18 @@ msgstr "" "función procesa la solicitud, obtiene la respuesta detallada del mapa del " "sitio y establece el encabezado Content-Type para XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -"Devuelve una lista de los idiomas admitidos y su información correspondiente." +"Devuelve una lista de los idiomas admitidos y su información " +"correspondiente." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Devuelve los parámetros del sitio web como un objeto JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3189,11 +3194,11 @@ msgstr "" "Gestiona las operaciones de caché, como la lectura y el establecimiento de " "datos de caché con una clave y un tiempo de espera especificados." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Gestiona los formularios de contacto." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3201,83 +3206,75 @@ msgstr "" "Gestiona las solicitudes de procesamiento y validación de URL de las " "solicitudes POST entrantes." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Gestiona las consultas de búsqueda global." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Maneja la lógica de la compra como empresa sin registro." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestiona la descarga de un activo digital asociado a un pedido.\n" -"Esta función intenta servir el archivo del activo digital ubicado en el " -"directorio de almacenamiento del proyecto. Si no se encuentra el archivo, se " -"genera un error HTTP 404 para indicar que el recurso no está disponible." +"Esta función intenta servir el archivo del activo digital ubicado en el directorio de almacenamiento del proyecto. Si no se encuentra el archivo, se genera un error HTTP 404 para indicar que el recurso no está disponible." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid es obligatorio" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "pedir producto no existe" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Sólo puede descargar el activo digital una vez" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "el pedido debe pagarse antes de descargar el activo digital" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "El producto del pedido no tiene un producto" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon no encontrado" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestiona las peticiones del favicon de un sitio web.\n" -"Esta función intenta servir el archivo favicon ubicado en el directorio " -"estático del proyecto. Si no se encuentra el archivo favicon, se genera un " -"error HTTP 404 para indicar que el recurso no está disponible." +"Esta función intenta servir el archivo favicon ubicado en el directorio estático del proyecto. Si no se encuentra el archivo favicon, se genera un error HTTP 404 para indicar que el recurso no está disponible." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Redirige la petición a la página índice de administración. La función " "gestiona las peticiones HTTP entrantes y las redirige a la página de índice " -"de la interfaz de administración de Django. Utiliza la función `redirect` de " -"Django para gestionar la redirección HTTP." +"de la interfaz de administración de Django. Utiliza la función `redirect` de" +" Django para gestionar la redirección HTTP." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Devuelve la versión actual del eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Ingresos y pedidos (últimos %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Devuelve variables personalizadas para Dashboard." @@ -3297,15 +3294,16 @@ msgstr "" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Representa un conjunto de vistas para gestionar objetos AttributeGroup. " "Maneja operaciones relacionadas con AttributeGroup, incluyendo filtrado, " -"serialización y recuperación de datos. Esta clase forma parte de la capa API " -"de la aplicación y proporciona una forma estandarizada de procesar las " +"serialización y recuperación de datos. Esta clase forma parte de la capa API" +" de la aplicación y proporciona una forma estandarizada de procesar las " "solicitudes y respuestas de los datos de AttributeGroup." #: engine/core/viewsets.py:179 @@ -3317,10 +3315,10 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"Gestiona las operaciones relacionadas con los objetos Attribute dentro de la " -"aplicación. Proporciona un conjunto de puntos finales de la API para " -"interactuar con los datos de los atributos. Esta clase gestiona la consulta, " -"el filtrado y la serialización de objetos Attribute, lo que permite un " +"Gestiona las operaciones relacionadas con los objetos Attribute dentro de la" +" aplicación. Proporciona un conjunto de puntos finales de la API para " +"interactuar con los datos de los atributos. Esta clase gestiona la consulta," +" el filtrado y la serialización de objetos Attribute, lo que permite un " "control dinámico de los datos devueltos, como el filtrado por campos " "específicos o la recuperación de información detallada o simplificada en " "función de la solicitud." @@ -3330,12 +3328,12 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Conjunto de vistas para gestionar objetos AttributeValue. Este conjunto de " -"vistas proporciona funcionalidad para listar, recuperar, crear, actualizar y " -"eliminar objetos AttributeValue. Se integra con los mecanismos viewset de " +"vistas proporciona funcionalidad para listar, recuperar, crear, actualizar y" +" eliminar objetos AttributeValue. Se integra con los mecanismos viewset de " "Django REST Framework y utiliza serializadores apropiados para diferentes " "acciones. Las capacidades de filtrado se proporcionan a través de " "DjangoFilterBackend." @@ -3351,8 +3349,8 @@ msgstr "" "Gestiona vistas para operaciones relacionadas con Categorías. La clase " "CategoryViewSet se encarga de gestionar las operaciones relacionadas con el " "modelo Category del sistema. Permite recuperar, filtrar y serializar datos " -"de categorías. El conjunto de vistas también aplica permisos para garantizar " -"que sólo los usuarios autorizados puedan acceder a datos específicos." +"de categorías. El conjunto de vistas también aplica permisos para garantizar" +" que sólo los usuarios autorizados puedan acceder a datos específicos." #: engine/core/viewsets.py:346 msgid "" @@ -3362,9 +3360,9 @@ msgid "" "endpoints for Brand objects." msgstr "" "Representa un conjunto de vistas para gestionar instancias de Brand. Esta " -"clase proporciona funcionalidad para consultar, filtrar y serializar objetos " -"Brand. Utiliza el marco ViewSet de Django para simplificar la implementación " -"de puntos finales de API para objetos Brand." +"clase proporciona funcionalidad para consultar, filtrar y serializar objetos" +" Brand. Utiliza el marco ViewSet de Django para simplificar la " +"implementación de puntos finales de API para objetos Brand." #: engine/core/viewsets.py:458 msgid "" @@ -3378,11 +3376,12 @@ msgid "" msgstr "" "Gestiona las operaciones relacionadas con el modelo `Producto` en el " "sistema. Esta clase proporciona un conjunto de vistas para la gestión de " -"productos, incluyendo su filtrado, serialización y operaciones en instancias " -"específicas. Se extiende desde `EvibesViewSet` para utilizar funcionalidades " -"comunes y se integra con el framework Django REST para operaciones RESTful " -"API. Incluye métodos para recuperar detalles del producto, aplicar permisos " -"y acceder a comentarios relacionados de un producto." +"productos, incluyendo su filtrado, serialización y operaciones en instancias" +" específicas. Se extiende desde `EvibesViewSet` para utilizar " +"funcionalidades comunes y se integra con el framework Django REST para " +"operaciones RESTful API. Incluye métodos para recuperar detalles del " +"producto, aplicar permisos y acceder a comentarios relacionados de un " +"producto." #: engine/core/viewsets.py:605 msgid "" @@ -3404,8 +3403,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Representación de un conjunto de vistas que maneja objetos Feedback. Esta " @@ -3413,34 +3412,34 @@ msgstr "" "incluyendo el listado, filtrado y recuperación de detalles. El propósito de " "este conjunto de vistas es proporcionar diferentes serializadores para " "diferentes acciones e implementar el manejo basado en permisos de los " -"objetos Feedback accesibles. Extiende la base `EvibesViewSet` y hace uso del " -"sistema de filtrado de Django para la consulta de datos." +"objetos Feedback accesibles. Extiende la base `EvibesViewSet` y hace uso del" +" sistema de filtrado de Django para la consulta de datos." #: engine/core/viewsets.py:652 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet para la gestión de pedidos y operaciones relacionadas. Esta clase " "proporciona funcionalidad para recuperar, modificar y gestionar objetos de " -"pedido. Incluye varios puntos finales para gestionar operaciones de pedidos, " -"como añadir o eliminar productos, realizar compras para usuarios registrados " -"y no registrados, y recuperar los pedidos pendientes del usuario autenticado " -"actual. ViewSet utiliza varios serializadores en función de la acción " -"específica que se esté realizando y aplica los permisos correspondientes al " -"interactuar con los datos del pedido." +"pedido. Incluye varios puntos finales para gestionar operaciones de pedidos," +" como añadir o eliminar productos, realizar compras para usuarios " +"registrados y no registrados, y recuperar los pedidos pendientes del usuario" +" autenticado actual. ViewSet utiliza varios serializadores en función de la " +"acción específica que se esté realizando y aplica los permisos " +"correspondientes al interactuar con los datos del pedido." #: engine/core/viewsets.py:914 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Proporciona un conjunto de vistas para gestionar entidades OrderProduct. " @@ -3477,8 +3476,8 @@ msgstr "" msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3503,8 +3502,8 @@ msgstr "" "Esta clase proporciona la funcionalidad viewset para la gestión de objetos " "`Address`. La clase AddressViewSet permite operaciones CRUD, filtrado y " "acciones personalizadas relacionadas con entidades de direcciones. Incluye " -"comportamientos especializados para diferentes métodos HTTP, anulaciones del " -"serializador y gestión de permisos basada en el contexto de la solicitud." +"comportamientos especializados para diferentes métodos HTTP, anulaciones del" +" serializador y gestión de permisos basada en el contexto de la solicitud." #: engine/core/viewsets.py:1254 #, python-brace-format diff --git a/engine/core/locale/fa_IR/LC_MESSAGES/django.po b/engine/core/locale/fa_IR/LC_MESSAGES/django.po index fcf8e2f6..c5c08f79 100644 --- a/engine/core/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/core/locale/fa_IR/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -73,65 +73,65 @@ msgstr "" msgid "timestamps" msgstr "" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "" @@ -194,51 +194,51 @@ msgid "" "parameter both." msgstr "" -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "" -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "" @@ -344,9 +344,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "" @@ -450,7 +450,7 @@ msgstr "" msgid "retrieves a current pending order of an authenticated user" msgstr "" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "" @@ -614,9 +614,6 @@ msgid "Product UUID or slug" msgstr "" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "" @@ -901,8 +898,8 @@ msgstr "" msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "" @@ -911,8 +908,8 @@ msgstr "" msgid "Search" msgstr "" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "" @@ -958,8 +955,8 @@ msgid "Quantity" msgstr "" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "" @@ -975,7 +972,7 @@ msgstr "" msgid "Include personal ordered" msgstr "" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "" @@ -996,12 +993,12 @@ msgid "Bought before (inclusive)" msgstr "" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "" @@ -1025,300 +1022,300 @@ msgstr "" msgid "Level" msgstr "" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "" -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" "please send the attributes as the string formatted like attr1=value1," "attr2=value2" msgstr "" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" -#: engine/core/graphene/object_types.py:227 +#: engine/core/graphene/object_types.py:229 msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "" -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1326,7 +1323,7 @@ msgstr "" msgid "price" msgstr "" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1334,39 +1331,39 @@ msgstr "" msgid "quantity" msgstr "" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1374,98 +1371,98 @@ msgstr "" msgid "product" msgstr "" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "" @@ -1477,23 +1474,23 @@ msgid "" "categorizing and managing attributes more effectively in acomplex system." msgstr "" -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1504,47 +1501,47 @@ msgid "" "use in systems that interact with third-party vendors." msgstr "" -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1553,42 +1550,42 @@ msgid "" "metadata customization for administrative purposes." msgstr "" -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1601,51 +1598,51 @@ msgid "" "priority." msgstr "" -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " @@ -1653,47 +1650,47 @@ msgid "" "organization and representation of brand-related data within the application." msgstr "" -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" "Represents the stock of a product managed in the system. This class provides " "details about the relationship between vendors, products, and their stock " @@ -1703,72 +1700,72 @@ msgid "" "from various vendors." msgstr "" -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1780,55 +1777,63 @@ msgid "" "product data and its associated information within an application." msgstr "" -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " @@ -1838,83 +1843,83 @@ msgid "" "for dynamic and flexible data structuring." msgstr "" -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" "Represents a specific value for an attribute that is linked to a product. It " "links the 'attribute' to a unique 'value', allowing better organization and " "dynamic representation of product characteristics." msgstr "" -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " "class is designed to manage images for products, including functionality for " @@ -1923,39 +1928,39 @@ msgid "" "with alternative text for the images." msgstr "" -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" @@ -1965,39 +1970,39 @@ msgid "" "affected items in the campaign." msgstr "" -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2005,23 +2010,23 @@ msgid "" "operations for adding and removing multiple products at once." msgstr "" -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " @@ -2031,19 +2036,19 @@ msgid "" "custom features." msgstr "" -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" "Represents an address entity that includes location details and associations " "with a user. Provides functionality for geographic and address data storage, " @@ -2055,59 +2060,59 @@ msgid "" "address with a user, facilitating personalized data handling." msgstr "" -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2117,86 +2122,86 @@ msgid "" "apply the promo code to an order while ensuring constraints are met." msgstr "" -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " @@ -2206,145 +2211,145 @@ msgid "" "supports managing the products in the order lifecycle." msgstr "" -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2353,31 +2358,31 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "" -#: engine/core/models.py:1826 +#: engine/core/models.py:1827 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2390,108 +2395,108 @@ msgid "" "Product models and stores a reference to them." msgstr "" -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " @@ -2501,11 +2506,11 @@ msgid "" "the asset when the associated order is in a completed status." msgstr "" -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "" @@ -2835,11 +2840,11 @@ msgid "" " reserved" msgstr "" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" @@ -2871,58 +2876,58 @@ msgstr "" msgid "NOMINATIM_URL must be configured." msgstr "" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2930,31 +2935,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2962,23 +2967,23 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "" -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "" diff --git a/engine/core/locale/fr_FR/LC_MESSAGES/django.mo b/engine/core/locale/fr_FR/LC_MESSAGES/django.mo index 3d4842a26b274b95698e5051b030d6c9cd570515..dee22b5c90c22fffa570efe6a8f51a34ff77206f 100644 GIT binary patch delta 14868 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 aw2DcCys`0V>9K>7Qn}Th74ir+z6vIsb delta 14686 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Est actif" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Si la valeur est fixée à false, cet objet ne peut pas être vu par les " "utilisateurs qui n'ont pas l'autorisation nécessaire." @@ -74,65 +75,65 @@ msgstr "Métadonnées" msgid "timestamps" msgstr "Horodatage" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activer la %(verbose_name_plural)s sélectionnée" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Les articles sélectionnés ont été activés !" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Désactiver la %(verbose_name_plural)s sélectionnée" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Les articles sélectionnés ont été désactivés !" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Valeur de l'attribut" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Valeurs des attributs" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Image" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Images" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Stock" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Stocks" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Commander un produit" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Commander des produits" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Les enfants" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Config" @@ -156,7 +157,8 @@ msgstr "Livré" msgid "canceled" msgstr "Annulé" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Échec" @@ -198,50 +200,48 @@ msgstr "" "négociation de contenu. La langue peut être sélectionnée avec Accept-" "Language et le paramètre de requête." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -"Appliquer uniquement une clé pour lire les données autorisées dans la " -"mémoire cache.\n" -"Appliquer une clé, des données et un délai d'attente avec authentification " -"pour écrire des données dans la mémoire cache." +"Appliquer uniquement une clé pour lire les données autorisées dans la mémoire cache.\n" +"Appliquer une clé, des données et un délai d'attente avec authentification pour écrire des données dans la mémoire cache." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Obtenir la liste des langues prises en charge" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Obtenir les paramètres exposables de l'application" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Envoyer un message à l'équipe d'assistance" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Demander une URL CORSée. Seul https est autorisé." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Recherche entre produits, catégories et marques" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" "Point d'arrivée de la recherche globale pour interroger les tables du projet" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Acheter une commande en tant qu'entreprise" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -249,7 +249,7 @@ msgstr "" "Acheter une commande en tant qu'entreprise, en utilisant les `produits` " "fournis avec `product_uuid` et `attributs`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "" "télécharger un bien numérique à partir d'une commande numérique achetée" @@ -277,7 +277,8 @@ msgstr "" "modifiables" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Réécrire certains champs d'un groupe d'attributs existant en sauvegardant " "les non-éditables" @@ -306,8 +307,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:156 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Réécrire certains champs d'un attribut existant en sauvegardant les éléments " -"non modifiables" +"Réécrire certains champs d'un attribut existant en sauvegardant les éléments" +" non modifiables" #: engine/core/docs/drf/viewsets.py:166 msgid "list all attribute values (simple view)" @@ -332,7 +333,8 @@ msgstr "" "modifiables" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Réécrire certains champs d'une valeur d'attribut existante en sauvegardant " "les éléments non modifiables" @@ -369,9 +371,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "Méta snapshot SEO" @@ -391,11 +393,11 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Recherche insensible à la casse dans human_readable_id, order_products." -"product.name, et order_products.product.partnumber" +"Recherche insensible à la casse dans human_readable_id, " +"order_products.product.name, et order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -431,13 +433,13 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordonner par l'un des éléments suivants : uuid, human_readable_id, " -"user_email, user, status, created, modified, buy_time, random. Préfixer avec " -"'-' pour l'ordre décroissant (par exemple '-buy_time')." +"user_email, user, status, created, modified, buy_time, random. Préfixer avec" +" '-' pour l'ordre décroissant (par exemple '-buy_time')." #: engine/core/docs/drf/viewsets.py:366 msgid "retrieve a single order (detailed view)" @@ -479,8 +481,8 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"Finalise l'achat de la commande. Si `force_balance` est utilisé, l'achat est " -"complété en utilisant le solde de l'utilisateur ; Si `force_payment` est " +"Finalise l'achat de la commande. Si `force_balance` est utilisé, l'achat est" +" complété en utilisant le solde de l'utilisateur ; Si `force_payment` est " "utilisé, une transaction est initiée." #: engine/core/docs/drf/viewsets.py:427 @@ -491,7 +493,7 @@ msgstr "récupérer la commande en cours d'un utilisateur" msgid "retrieves a current pending order of an authenticated user" msgstr "récupère une commande en cours d'un utilisateur authentifié" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "acheter une commande sans créer de compte" @@ -548,8 +550,8 @@ msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -"Supprime une liste de produits d'une commande en utilisant le `product_uuid` " -"et les `attributs` fournis." +"Supprime une liste de produits d'une commande en utilisant le `product_uuid`" +" et les `attributs` fournis." #: engine/core/docs/drf/viewsets.py:497 msgid "list all wishlists (simple view)" @@ -585,8 +587,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:537 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Réécrire certains champs d'un attribut existant en sauvegardant les éléments " -"non modifiables" +"Réécrire certains champs d'un attribut existant en sauvegardant les éléments" +" non modifiables" #: engine/core/docs/drf/viewsets.py:544 msgid "retrieve current pending wishlist of a user" @@ -642,29 +644,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtre sur une ou plusieurs paires nom/valeur d'attribut. \n" "- **Syntaxe** : `nom_attr=méthode-valeur[;attr2=méthode2-valeur2]...`\n" -"- **Méthodes** (la valeur par défaut est `icontains` si elle est omise) : " -"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, " -"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, " -"`gt`, `gte`, `in`\n" -"- **Type de valeur** : JSON est essayé en premier (pour que vous puissiez " -"passer des listes/dicts), `true`/`false` pour les booléens, les entiers, les " -"flottants ; sinon traité comme une chaîne de caractères. \n" -"- **Base64** : préfixe avec `b64-` pour encoder la valeur brute en base64 de " -"manière sûre pour l'URL. \n" +"- **Méthodes** (la valeur par défaut est `icontains` si elle est omise) : `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Type de valeur** : JSON est essayé en premier (pour que vous puissiez passer des listes/dicts), `true`/`false` pour les booléens, les entiers, les flottants ; sinon traité comme une chaîne de caractères. \n" +"- **Base64** : préfixe avec `b64-` pour encoder la valeur brute en base64 de manière sûre pour l'URL. \n" "Exemples : \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" @@ -679,12 +670,10 @@ msgstr "UUID (exact) du produit" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Liste de champs séparés par des virgules à trier. Préfixer avec `-` pour un " -"tri descendant. \n" +"Liste de champs séparés par des virgules à trier. Préfixer avec `-` pour un tri descendant. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -698,9 +687,6 @@ msgid "Product UUID or slug" msgstr "UUID ou Slug du produit" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Créer un produit" @@ -952,7 +938,8 @@ msgstr "Supprimer une promotion" #: engine/core/docs/drf/viewsets.py:1244 msgid "rewrite an existing promotion saving non-editables" msgstr "" -"Réécrire une promotion existante en sauvegardant les éléments non modifiables" +"Réécrire une promotion existante en sauvegardant les éléments non " +"modifiables" #: engine/core/docs/drf/viewsets.py:1251 msgid "rewrite some fields of an existing promotion saving non-editables" @@ -1007,8 +994,8 @@ msgstr "Supprimer une étiquette de produit" #: engine/core/docs/drf/viewsets.py:1342 msgid "rewrite an existing product tag saving non-editables" msgstr "" -"Réécrire une étiquette de produit existante en sauvegardant les éléments non " -"modifiables" +"Réécrire une étiquette de produit existante en sauvegardant les éléments non" +" modifiables" #: engine/core/docs/drf/viewsets.py:1350 msgid "rewrite some fields of an existing product tag saving non-editables" @@ -1016,8 +1003,8 @@ msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Aucun terme de recherche n'est fourni." @@ -1026,8 +1013,8 @@ msgstr "Aucun terme de recherche n'est fourni." msgid "Search" msgstr "Recherche" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1073,8 +1060,8 @@ msgid "Quantity" msgstr "Quantité" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Limace" @@ -1090,7 +1077,7 @@ msgstr "Inclure des sous-catégories" msgid "Include personal ordered" msgstr "Inclure les produits commandés par les particuliers" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1113,12 +1100,12 @@ msgid "Bought before (inclusive)" msgstr "Acheté avant (inclus)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "Courriel de l'utilisateur" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "UUID de l'utilisateur" @@ -1142,314 +1129,315 @@ msgstr "Catégorie entière (avec au moins 1 produit ou non)" msgid "Level" msgstr "Niveau" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "UUID du produit" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Clé à rechercher ou à insérer dans la cache" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Données à stocker dans la mémoire cache" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Délai d'attente en secondes pour placer les données dans le cache" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Données mises en cache" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Données JSON camélisées provenant de l'URL demandée" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Seuls les URL commençant par http(s):// sont autorisés." -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Ajouter un produit à la commande" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Ordre {order_uuid} introuvable !" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Supprimer un produit de la commande" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Supprimer tous les produits de la commande" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Acheter une commande" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Veuillez fournir soit order_uuid, soit order_hr_id - les deux s'excluent " "mutuellement !" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Le mauvais type provient de la méthode order.buy() : {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Effectuer une action sur une liste de produits dans la commande" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Supprimer/Ajouter" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "L'action doit être soit \"ajouter\", soit \"supprimer\" !" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "" "Effectuer une action sur une liste de produits dans la liste de souhaits" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Veuillez indiquer la valeur de `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} introuvable !" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Ajouter un produit à la commande" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Supprimer un produit de la commande" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Supprimer un produit de la commande" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Supprimer un produit de la commande" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Acheter une commande" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Veuillez envoyer les attributs sous la forme d'une chaîne formatée comme " "attr1=valeur1,attr2=valeur2." -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "" "ajouter ou supprimer un retour d'information sur une relation commande-" "produit" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "L'action doit être soit `add` soit `remove` !" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Le produit {order_product_uuid} n'a pas été trouvé !" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Chaîne d'adresse originale fournie par l'utilisateur" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} n'existe pas : {uuid} !" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "La limite doit être comprise entre 1 et 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fonctionne comme un charme" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Attributs" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Attributs groupés" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Groupes d'attributs" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Catégories" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Marques" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Catégories" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Markup Percentage" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Quels attributs et valeurs peuvent être utilisés pour filtrer cette " "catégorie." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Prix minimum et maximum pour les produits de cette catégorie, s'ils sont " "disponibles." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Tags pour cette catégorie" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Produits dans cette catégorie" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Vendeurs" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Latitude (coordonnée Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Longitude (coordonnée X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Comment" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valeur d'évaluation de 1 à 10 inclus, ou 0 si elle n'est pas définie." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Représente le retour d'information d'un utilisateur." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Notifications" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "URL de téléchargement pour ce produit de la commande, le cas échéant" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Retour d'information" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Une liste des produits commandés dans cette commande" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Adresse de facturation" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -"Adresse d'expédition pour cette commande, laisser vide si elle est identique " -"à l'adresse de facturation ou si elle n'est pas applicable" +"Adresse d'expédition pour cette commande, laisser vide si elle est identique" +" à l'adresse de facturation ou si elle n'est pas applicable" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Prix total de la commande" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Quantité totale de produits dans la commande" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Tous les produits de la commande sont-ils numériques ?" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transactions pour cette commande" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Commandes" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "Image URL" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Images du produit" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Catégorie" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Retour d'information" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Marque" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Groupes d'attributs" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1457,7 +1445,7 @@ msgstr "Groupes d'attributs" msgid "price" msgstr "Prix" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1465,39 +1453,39 @@ msgstr "Prix" msgid "quantity" msgstr "Quantité" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Nombre de retours d'information" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Produits disponibles uniquement pour les commandes personnelles" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Prix d'escompte" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Produits" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Promocodes" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Produits en vente" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Promotions" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Vendeur" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1505,100 +1493,100 @@ msgstr "Vendeur" msgid "product" msgstr "Produit" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Produits en liste de souhaits" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Liste de souhaits" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Produits marqués" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Étiquettes du produit" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Catégories marquées" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Tags des catégories" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Nom du projet" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Nom de l'entreprise" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Adresse de l'entreprise" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Numéro de téléphone de l'entreprise" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', parfois il doit être utilisé à la place de la valeur de " "l'utilisateur de l'hôte" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Utilisateur de l'hôte de messagerie" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Montant maximum du paiement" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Montant minimum pour le paiement" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Données analytiques" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Advertisement data" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Configuration" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Code langue" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Nom de la langue" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Drapeau linguistique, s'il existe :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Obtenir la liste des langues prises en charge" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Résultats de la recherche de produits" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Résultats de la recherche de produits" @@ -1615,23 +1603,23 @@ msgstr "" "hiérarchique. Cela peut être utile pour catégoriser et gérer les attributs " "plus efficacement dans un système complexe." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Parent de ce groupe" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Groupe d'attributs parent" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Nom du groupe d'attributs" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Groupe d'attributs" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1643,58 +1631,58 @@ msgid "" msgstr "" "Représente une entité fournisseur capable de stocker des informations sur " "les fournisseurs externes et leurs exigences en matière d'interaction. La " -"classe Vendeur est utilisée pour définir et gérer les informations relatives " -"à un fournisseur externe. Elle stocke le nom du fournisseur, les détails " +"classe Vendeur est utilisée pour définir et gérer les informations relatives" +" à un fournisseur externe. Elle stocke le nom du fournisseur, les détails " "d'authentification requis pour la communication et le pourcentage de " "majoration appliqué aux produits récupérés auprès du fournisseur. Ce modèle " "gère également des métadonnées et des contraintes supplémentaires, ce qui " "permet de l'utiliser dans des systèmes qui interagissent avec des vendeurs " "tiers." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stocke les informations d'identification et les points d'extrémité " "nécessaires à la communication avec l'API du fournisseur." -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Informations sur l'authentification" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "" "Définir la majoration pour les produits récupérés auprès de ce fournisseur" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Pourcentage de marge du vendeur" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Nom de ce vendeur" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Nom du vendeur" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "dossier de réponse" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "la dernière réponse du vendeur en matière de traitement" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Chemin d'accès au fichier d'intégration du fournisseur" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Parcours d'intégration" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1709,46 +1697,46 @@ msgstr "" "biais de mixins et permet de personnaliser les métadonnées à des fins " "administratives." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Identifiant interne de l'étiquette du produit" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Nom du jour" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Nom convivial pour l'étiquette du produit" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Nom d'affichage de l'étiquette" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Étiquette du produit" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" "Représente une étiquette de catégorie utilisée pour les produits. Cette " -"classe modélise une balise de catégorie qui peut être utilisée pour associer " -"et classer des produits. Elle comprend des attributs pour un identifiant de " -"balise interne et un nom d'affichage convivial." +"classe modélise une balise de catégorie qui peut être utilisée pour associer" +" et classer des produits. Elle comprend des attributs pour un identifiant de" +" balise interne et un nom d'affichage convivial." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "étiquette de catégorie" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "balises de catégorie" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1765,115 +1753,116 @@ msgstr "" "avoir des relations hiérarchiques avec d'autres catégories, en prenant en " "charge les relations parent-enfant. La classe comprend des champs pour les " "métadonnées et la représentation visuelle, qui servent de base aux " -"fonctionnalités liées aux catégories. Cette classe est généralement utilisée " -"pour définir et gérer des catégories de produits ou d'autres regroupements " +"fonctionnalités liées aux catégories. Cette classe est généralement utilisée" +" pour définir et gérer des catégories de produits ou d'autres regroupements " "similaires au sein d'une application, permettant aux utilisateurs ou aux " "administrateurs de spécifier le nom, la description et la hiérarchie des " "catégories, ainsi que d'attribuer des attributs tels que des images, des " "balises ou une priorité." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Télécharger une image représentant cette catégorie" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Image de catégorie" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "" "Définir un pourcentage de majoration pour les produits de cette catégorie" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Parent de cette catégorie pour former une structure hiérarchique" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Catégorie de parents" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Nom de la catégorie" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Donnez un nom à cette catégorie" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Ajouter une description détaillée pour cette catégorie" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Description de la catégorie" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "les étiquettes qui aident à décrire ou à regrouper cette catégorie" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Priorité" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Représente un objet Marque dans le système. Cette classe gère les " "informations et les attributs liés à une marque, y compris son nom, ses " "logos, sa description, ses catégories associées, un nom unique et un ordre " -"de priorité. Elle permet d'organiser et de représenter les données relatives " -"à la marque dans l'application." +"de priorité. Elle permet d'organiser et de représenter les données relatives" +" à la marque dans l'application." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Nom de cette marque" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Nom de marque" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Télécharger un logo représentant cette marque" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Petite image de marque" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Télécharger un grand logo représentant cette marque" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Une grande image de marque" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Ajouter une description détaillée de la marque" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Description de la marque" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Catégories facultatives auxquelles cette marque est associée" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Catégories" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1883,75 +1872,75 @@ msgstr "" "des détails sur la relation entre les fournisseurs, les produits et leurs " "informations de stock, ainsi que des propriétés liées à l'inventaire telles " "que le prix, le prix d'achat, la quantité, l'UGS et les actifs numériques. " -"Elle fait partie du système de gestion des stocks pour permettre le suivi et " -"l'évaluation des produits disponibles auprès de différents fournisseurs." +"Elle fait partie du système de gestion des stocks pour permettre le suivi et" +" l'évaluation des produits disponibles auprès de différents fournisseurs." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Le vendeur qui fournit ce stock de produits" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Vendeur associé" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Prix final pour le client après majoration" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Prix de vente" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Le produit associé à cette entrée de stock" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Produit associé" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Le prix payé au vendeur pour ce produit" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Prix d'achat du vendeur" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Quantité disponible du produit en stock" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Quantité en stock" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU attribué par le fournisseur pour identifier le produit" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "UGS du vendeur" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Fichier numérique associé à ce stock, le cas échéant" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Fichier numérique" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Attributs du système" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Entrées de stock" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1963,8 +1952,8 @@ msgid "" "product data and its associated information within an application." msgstr "" "Représente un produit avec des attributs tels que la catégorie, la marque, " -"les étiquettes, l'état numérique, le nom, la description, le numéro de pièce " -"et l'étiquette. Fournit des propriétés utilitaires connexes pour récupérer " +"les étiquettes, l'état numérique, le nom, la description, le numéro de pièce" +" et l'étiquette. Fournit des propriétés utilitaires connexes pour récupérer " "les évaluations, le nombre de commentaires, le prix, la quantité et le " "nombre total de commandes. Conçue pour être utilisée dans un système de " "commerce électronique ou de gestion des stocks. Cette classe interagit avec " @@ -1973,207 +1962,217 @@ msgstr "" "performances. Elle est utilisée pour définir et manipuler les données " "produit et les informations associées dans une application." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Catégorie à laquelle appartient ce produit" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Possibilité d'associer ce produit à une marque" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Étiquettes permettant de décrire ou de regrouper ce produit" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Indique si ce produit est livré numériquement" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Le produit est-il numérique ?" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" +"indique si ce produit doit être mis à jour à partir de la tâche périodique" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "Le produit est-il actualisable ?" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Fournir un nom d'identification clair pour le produit" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Nom du produit" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Ajouter une description détaillée du produit" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Description du produit" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Numéro de pièce pour ce produit" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Numéro de pièce" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Unité de gestion des stocks pour ce produit" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Représente un attribut dans le système. Cette classe est utilisée pour " "définir et gérer les attributs, qui sont des données personnalisables " -"pouvant être associées à d'autres entités. Les attributs sont associés à des " -"catégories, des groupes, des types de valeurs et des noms. Le modèle prend " +"pouvant être associées à d'autres entités. Les attributs sont associés à des" +" catégories, des groupes, des types de valeurs et des noms. Le modèle prend " "en charge plusieurs types de valeurs, notamment les chaînes de caractères, " "les entiers, les flottants, les booléens, les tableaux et les objets. Cela " "permet une structuration dynamique et flexible des données." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Groupe de cet attribut" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Chaîne" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Entier" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Flotteur" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Booléen" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Tableau" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Objet" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Type de la valeur de l'attribut" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Type de valeur" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Nom de cet attribut" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Nom de l'attribut" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "est filtrable" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Quels attributs et valeurs peuvent être utilisés pour filtrer cette " "catégorie." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribut" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Représente une valeur spécifique pour un attribut lié à un produit. Il relie " -"l'\"attribut\" à une \"valeur\" unique, ce qui permet une meilleure " -"organisation et une représentation dynamique des caractéristiques du produit." +"Représente une valeur spécifique pour un attribut lié à un produit. Il relie" +" l'\"attribut\" à une \"valeur\" unique, ce qui permet une meilleure " +"organisation et une représentation dynamique des caractéristiques du " +"produit." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Attribut de cette valeur" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Le produit spécifique associé à la valeur de cet attribut" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "La valeur spécifique de cet attribut" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" -"Représente une image de produit associée à un produit dans le système. Cette " -"classe est conçue pour gérer les images des produits, y compris la " +"Représente une image de produit associée à un produit dans le système. Cette" +" classe est conçue pour gérer les images des produits, y compris la " "fonctionnalité de téléchargement des fichiers d'image, leur association à " -"des produits spécifiques et la détermination de leur ordre d'affichage. Elle " -"comprend également une fonction d'accessibilité avec un texte alternatif " +"des produits spécifiques et la détermination de leur ordre d'affichage. Elle" +" comprend également une fonction d'accessibilité avec un texte alternatif " "pour les images." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Fournir un texte alternatif pour l'image afin d'en faciliter l'accès" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Texte alt de l'image" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Télécharger le fichier image pour ce produit" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Image du produit" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Détermine l'ordre d'affichage des images" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Priorité à l'affichage" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Le produit que cette image représente" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Images du produit" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Représente une campagne promotionnelle pour des produits avec une remise. " "Cette classe est utilisée pour définir et gérer des campagnes " @@ -2183,39 +2182,39 @@ msgstr "" "Elle s'intègre au catalogue de produits pour déterminer les articles " "concernés par la campagne." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Pourcentage de réduction pour les produits sélectionnés" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Pourcentage de réduction" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Donnez un nom unique à cette promotion" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Nom de la promotion" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Promotion description" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Sélectionnez les produits inclus dans cette promotion" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Produits inclus" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Promotion" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2226,129 +2225,130 @@ msgstr "" "gestion des produits souhaités. La classe fournit des fonctionnalités " "permettant de gérer une collection de produits, en prenant en charge des " "opérations telles que l'ajout et la suppression de produits, ainsi que des " -"opérations permettant d'ajouter et de supprimer plusieurs produits à la fois." +"opérations permettant d'ajouter et de supprimer plusieurs produits à la " +"fois." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Produits que l'utilisateur a marqués comme souhaités" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Utilisateur qui possède cette liste de souhaits" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Propriétaire de la liste de souhaits" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Liste de souhaits" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"Représente un enregistrement documentaire lié à un produit. Cette classe est " -"utilisée pour stocker des informations sur les documentaires liés à des " +"Représente un enregistrement documentaire lié à un produit. Cette classe est" +" utilisée pour stocker des informations sur les documentaires liés à des " "produits spécifiques, y compris les téléchargements de fichiers et leurs " "métadonnées. Elle contient des méthodes et des propriétés permettant de " "gérer le type de fichier et le chemin de stockage des fichiers " "documentaires. Elle étend les fonctionnalités de mixins spécifiques et " "fournit des fonctionnalités personnalisées supplémentaires." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Documentaire" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Documentaires" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Non résolu" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Représente une entité d'adresse qui comprend des détails de localisation et " "des associations avec un utilisateur. Elle fournit des fonctionnalités de " "stockage de données géographiques et d'adresses, ainsi qu'une intégration " "avec des services de géocodage. Cette classe est conçue pour stocker des " -"informations détaillées sur les adresses, y compris des éléments tels que la " -"rue, la ville, la région, le pays et la géolocalisation (longitude et " +"informations détaillées sur les adresses, y compris des éléments tels que la" +" rue, la ville, la région, le pays et la géolocalisation (longitude et " "latitude). Elle prend en charge l'intégration avec les API de géocodage, ce " -"qui permet de stocker les réponses brutes de l'API en vue d'un traitement ou " -"d'une inspection ultérieurs. La classe permet également d'associer une " +"qui permet de stocker les réponses brutes de l'API en vue d'un traitement ou" +" d'une inspection ultérieurs. La classe permet également d'associer une " "adresse à un utilisateur, ce qui facilite le traitement personnalisé des " "données." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Ligne d'adresse du client" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Ligne d'adresse" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Rue" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "District" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Ville" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Région" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Code postal" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Pays" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Point de géolocalisation (longitude, latitude)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Réponse JSON complète du géocodeur pour cette adresse" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Réponse JSON stockée du service de géocodage" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Adresse" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adresses" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2359,80 +2359,83 @@ msgid "" msgstr "" "Représente un code promotionnel qui peut être utilisé pour des remises, en " "gérant sa validité, le type de remise et l'application. La classe PromoCode " -"stocke les détails d'un code promotionnel, notamment son identifiant unique, " -"les propriétés de la remise (montant ou pourcentage), la période de " +"stocke les détails d'un code promotionnel, notamment son identifiant unique," +" les propriétés de la remise (montant ou pourcentage), la période de " "validité, l'utilisateur associé (le cas échéant) et l'état de son " "utilisation. Elle comprend une fonctionnalité permettant de valider et " "d'appliquer le code promotionnel à une commande tout en veillant à ce que " "les contraintes soient respectées." -#: engine/core/models.py:1118 -msgid "unique code used by a user to redeem a discount" -msgstr "Code unique utilisé par un utilisateur pour bénéficier d'une réduction" - #: engine/core/models.py:1119 +msgid "unique code used by a user to redeem a discount" +msgstr "" +"Code unique utilisé par un utilisateur pour bénéficier d'une réduction" + +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Identifiant du code promotionnel" -#: engine/core/models.py:1126 -msgid "fixed discount amount applied if percent is not used" -msgstr "Montant fixe de la remise appliqué si le pourcentage n'est pas utilisé" - #: engine/core/models.py:1127 +msgid "fixed discount amount applied if percent is not used" +msgstr "" +"Montant fixe de la remise appliqué si le pourcentage n'est pas utilisé" + +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Montant de l'escompte fixe" -#: engine/core/models.py:1133 -msgid "percentage discount applied if fixed amount is not used" -msgstr "Pourcentage de réduction appliqué si le montant fixe n'est pas utilisé" - #: engine/core/models.py:1134 +msgid "percentage discount applied if fixed amount is not used" +msgstr "" +"Pourcentage de réduction appliqué si le montant fixe n'est pas utilisé" + +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Pourcentage de réduction" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Date d'expiration du code promotionnel" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Heure de fin de validité" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Date à partir de laquelle ce code promotionnel est valable" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Heure de début de validité" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -"Date à laquelle le code promotionnel a été utilisé, vide s'il n'a pas encore " -"été utilisé." +"Date à laquelle le code promotionnel a été utilisé, vide s'il n'a pas encore" +" été utilisé." -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Horodatage de l'utilisation" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Utilisateur assigné à ce code promo, le cas échéant" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Utilisateur assigné" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Code promo" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Codes promotionnels" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2440,172 +2443,173 @@ msgstr "" "Un seul type de remise doit être défini (montant ou pourcentage), mais pas " "les deux ni aucun des deux." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Le code promotionnel a déjà été utilisé" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Type de réduction non valide pour le code promo {self.uuid} !" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" -"Représente une commande passée par un utilisateur. Cette classe modélise une " -"commande dans l'application, y compris ses différents attributs tels que les " -"informations de facturation et d'expédition, le statut, l'utilisateur " -"associé, les notifications et les opérations connexes. Les commandes peuvent " -"être associées à des produits, des promotions peuvent être appliquées, des " -"adresses peuvent être définies et les détails d'expédition ou de facturation " -"peuvent être mis à jour. De même, la fonctionnalité permet de gérer les " +"Représente une commande passée par un utilisateur. Cette classe modélise une" +" commande dans l'application, y compris ses différents attributs tels que " +"les informations de facturation et d'expédition, le statut, l'utilisateur " +"associé, les notifications et les opérations connexes. Les commandes peuvent" +" être associées à des produits, des promotions peuvent être appliquées, des " +"adresses peuvent être définies et les détails d'expédition ou de facturation" +" peuvent être mis à jour. De même, la fonctionnalité permet de gérer les " "produits dans le cycle de vie de la commande." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "L'adresse de facturation utilisée pour cette commande" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Code promo optionnel appliqué à cette commande" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Code promo appliqué" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "L'adresse de livraison utilisée pour cette commande" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Adresse de livraison" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Statut actuel de la commande dans son cycle de vie" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Statut de la commande" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "Structure JSON des notifications à afficher aux utilisateurs ; dans " "l'interface d'administration, la vue en tableau est utilisée." -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "Représentation JSON des attributs de cette commande" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "L'utilisateur qui a passé la commande" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Utilisateur" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "L'heure à laquelle la commande a été finalisée." -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Temps d'achat" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Un identifiant lisible par l'homme pour la commande" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "ID lisible par l'homme" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Commande" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "Un utilisateur ne peut avoir qu'un seul ordre en cours à la fois !" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" -"Vous ne pouvez pas ajouter de produits à une commande qui n'est pas en cours." +"Vous ne pouvez pas ajouter de produits à une commande qui n'est pas en " +"cours." -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Vous ne pouvez pas ajouter des produits inactifs à la commande" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "" "Vous ne pouvez pas ajouter plus de produits que ceux disponibles en stock" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Vous ne pouvez pas retirer des produits d'une commande qui n'est pas en " "cours." -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} n'existe pas avec la requête <{query}> !" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Le code promotionnel n'existe pas" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" "Vous ne pouvez acheter que des produits physiques dont l'adresse de " "livraison est spécifiée !" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "L'adresse n'existe pas" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Vous ne pouvez pas acheter en ce moment, veuillez réessayer dans quelques " "minutes." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Valeur de force non valide" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Vous ne pouvez pas acheter une commande vide !" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "" "Vous ne pouvez pas retirer des produits d'une commande qui n'est pas en " "cours." -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Un utilisateur sans solde ne peut pas acheter avec un solde !" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Insuffisance de fonds pour compléter la commande" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2614,7 +2618,7 @@ msgstr "" "informations suivantes : nom du client, courriel du client, numéro de " "téléphone du client" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -2622,7 +2626,7 @@ msgstr "" "Méthode de paiement non valide : {payment_method} de " "{available_payment_methods} !" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2638,33 +2642,34 @@ msgstr "" "La classe utilise des champs de base de données pour modéliser et gérer " "efficacement les données de feedback." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "Commentaires des utilisateurs sur leur expérience du produit" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Commentaires" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "Fait référence au produit spécifique d'une commande sur lequel porte le " "retour d'information." -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Produit de commande apparenté" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Note attribuée par l'utilisateur au produit" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Evaluation du produit" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2676,128 +2681,130 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"Représente les produits associés aux commandes et leurs attributs. Le modèle " -"OrderProduct conserve les informations relatives à un produit faisant partie " -"d'une commande, y compris des détails tels que le prix d'achat, la quantité, " -"les attributs du produit et le statut. Il gère les notifications destinées à " -"l'utilisateur et aux administrateurs, ainsi que des opérations telles que le " -"renvoi du solde du produit ou l'ajout de commentaires. Ce modèle fournit " -"également des méthodes et des propriétés qui prennent en charge la logique " -"commerciale, comme le calcul du prix total ou la génération d'une URL de " -"téléchargement pour les produits numériques. Le modèle s'intègre aux modèles " -"de commande et de produit et stocke une référence à ces derniers." +"Représente les produits associés aux commandes et leurs attributs. Le modèle" +" OrderProduct conserve les informations relatives à un produit faisant " +"partie d'une commande, y compris des détails tels que le prix d'achat, la " +"quantité, les attributs du produit et le statut. Il gère les notifications " +"destinées à l'utilisateur et aux administrateurs, ainsi que des opérations " +"telles que le renvoi du solde du produit ou l'ajout de commentaires. Ce " +"modèle fournit également des méthodes et des propriétés qui prennent en " +"charge la logique commerciale, comme le calcul du prix total ou la " +"génération d'une URL de téléchargement pour les produits numériques. Le " +"modèle s'intègre aux modèles de commande et de produit et stocke une " +"référence à ces derniers." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "Le prix payé par le client pour ce produit au moment de l'achat" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Prix d'achat au moment de la commande" -#: engine/core/models.py:1875 -msgid "internal comments for admins about this ordered product" -msgstr "Commentaires internes pour les administrateurs sur ce produit commandé" - #: engine/core/models.py:1876 +msgid "internal comments for admins about this ordered product" +msgstr "" +"Commentaires internes pour les administrateurs sur ce produit commandé" + +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Commentaires internes" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Notifications aux utilisateurs" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "Représentation JSON des attributs de cet élément" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Attributs du produit ordonnés" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Référence à l'ordre parent qui contient ce produit" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Ordonnance parentale" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Le produit spécifique associé à cette ligne de commande" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Quantité de ce produit spécifique dans la commande" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Quantité de produits" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Statut actuel de ce produit dans la commande" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Statut de la ligne de produits" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Le produit doit être associé à une commande !" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Mauvaise action spécifiée pour le retour d'information : {action} !" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "" "Vous ne pouvez pas retirer des produits d'une commande qui n'est pas en " "cours." -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Nom" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL de l'intégration" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Références d'authentification" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Vous ne pouvez avoir qu'un seul fournisseur de CRM par défaut" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Lien CRM de la commande" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Liens CRM des commandes" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Représente la fonctionnalité de téléchargement des ressources numériques " "associées aux commandes. La classe DigitalAssetDownload permet de gérer et " @@ -2807,11 +2814,11 @@ msgstr "" "méthode permettant de générer une URL pour le téléchargement de l'actif " "lorsque la commande associée est terminée." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Télécharger" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Téléchargements" @@ -3012,8 +3019,7 @@ msgstr "Bonjour %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Merci pour votre commande #%(order.pk)s ! Nous avons le plaisir de vous " @@ -3128,8 +3134,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Nous vous remercions pour votre commande ! Nous avons le plaisir de " @@ -3161,15 +3166,15 @@ msgstr "" "tous les droits\n" " réservés" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Les données et le délai d'attente sont tous deux nécessaires" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" -"La valeur du délai d'attente n'est pas valide, elle doit être comprise entre " -"0 et 216000 secondes." +"La valeur du délai d'attente n'est pas valide, elle doit être comprise entre" +" 0 et 216000 secondes." #: engine/core/utils/emailing.py:27 #, python-brace-format @@ -3199,14 +3204,14 @@ msgstr "Vous n'êtes pas autorisé à effectuer cette action." msgid "NOMINATIM_URL must be configured." msgstr "Le paramètre NOMINATIM_URL doit être configuré !" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Les dimensions de l'image ne doivent pas dépasser w{max_width} x " "h{max_height} pixels." -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3214,28 +3219,28 @@ msgstr "" "Gère la demande d'index sitemap et renvoie une réponse XML. Il s'assure que " "la réponse inclut l'en-tête de type de contenu approprié pour XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" "Gère la réponse détaillée d'un plan du site. Cette fonction traite la " -"demande, récupère la réponse détaillée appropriée du plan du site et définit " -"l'en-tête Content-Type pour XML." +"demande, récupère la réponse détaillée appropriée du plan du site et définit" +" l'en-tête Content-Type pour XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Renvoie une liste des langues prises en charge et des informations " "correspondantes." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Renvoie les paramètres du site web sous la forme d'un objet JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3243,11 +3248,11 @@ msgstr "" "Gère les opérations de cache telles que la lecture et la définition des " "données de cache avec une clé et un délai spécifiés." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Gère les soumissions du formulaire `contact us`." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3255,84 +3260,75 @@ msgstr "" "Gère les demandes de traitement et de validation des URL à partir des " "requêtes POST entrantes." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Traite les demandes de recherche globales." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Gère la logique de l'achat en tant qu'entreprise sans enregistrement." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gère le téléchargement d'un bien numérique associé à une commande.\n" -"Cette fonction tente de servir le fichier de ressource numérique situé dans " -"le répertoire de stockage du projet. Si le fichier n'est pas trouvé, une " -"erreur HTTP 404 est générée pour indiquer que la ressource n'est pas " -"disponible." +"Cette fonction tente de servir le fichier de ressource numérique situé dans le répertoire de stockage du projet. Si le fichier n'est pas trouvé, une erreur HTTP 404 est générée pour indiquer que la ressource n'est pas disponible." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid est obligatoire" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "le produit de la commande n'existe pas" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Vous ne pouvez télécharger le bien numérique qu'une seule fois" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "la commande doit être payée avant le téléchargement du bien numérique" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Le produit de la commande n'a pas de produit" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon introuvable" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gère les demandes de favicon d'un site web.\n" -"Cette fonction tente de servir le fichier favicon situé dans le répertoire " -"statique du projet. Si le fichier favicon n'est pas trouvé, une erreur HTTP " -"404 est générée pour indiquer que la ressource n'est pas disponible." +"Cette fonction tente de servir le fichier favicon situé dans le répertoire statique du projet. Si le fichier favicon n'est pas trouvé, une erreur HTTP 404 est générée pour indiquer que la ressource n'est pas disponible." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Redirige la requête vers la page d'index de l'interface d'administration. " -"Cette fonction gère les requêtes HTTP entrantes et les redirige vers la page " -"d'index de l'interface d'administration de Django. Elle utilise la fonction " -"`redirect` de Django pour gérer la redirection HTTP." +"Cette fonction gère les requêtes HTTP entrantes et les redirige vers la page" +" d'index de l'interface d'administration de Django. Elle utilise la fonction" +" `redirect` de Django pour gérer la redirection HTTP." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Renvoie la version actuelle d'eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Recettes et commandes (dernier %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Renvoie les variables personnalisées pour le tableau de bord." @@ -3353,10 +3349,11 @@ msgstr "" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Représente un jeu de vues pour la gestion des objets AttributeGroup. Gère " "les opérations liées à l'AttributeGroup, notamment le filtrage, la " @@ -3386,14 +3383,15 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"Un viewset pour la gestion des objets AttributeValue. Ce viewset fournit des " -"fonctionnalités pour lister, récupérer, créer, mettre à jour et supprimer " +"Un viewset pour la gestion des objets AttributeValue. Ce viewset fournit des" +" fonctionnalités pour lister, récupérer, créer, mettre à jour et supprimer " "des objets AttributeValue. Il s'intègre aux mécanismes de viewset du cadre " "REST de Django et utilise les sérialiseurs appropriés pour les différentes " -"actions. Les capacités de filtrage sont fournies par le backend DjangoFilter." +"actions. Les capacités de filtrage sont fournies par le backend " +"DjangoFilter." #: engine/core/viewsets.py:217 msgid "" @@ -3404,8 +3402,8 @@ msgid "" "can access specific data." msgstr "" "Gère les vues pour les opérations liées à la catégorie. La classe " -"CategoryViewSet est responsable de la gestion des opérations liées au modèle " -"Category dans le système. Elle permet d'extraire, de filtrer et de " +"CategoryViewSet est responsable de la gestion des opérations liées au modèle" +" Category dans le système. Elle permet d'extraire, de filtrer et de " "sérialiser les données relatives aux catégories. Le jeu de vues applique " "également des permissions pour s'assurer que seuls les utilisateurs " "autorisés peuvent accéder à des données spécifiques." @@ -3419,9 +3417,9 @@ msgid "" msgstr "" "Représente un jeu de vues pour la gestion des instances de marque. Cette " "classe fournit des fonctionnalités d'interrogation, de filtrage et de " -"sérialisation des objets Brand. Elle utilise le cadre ViewSet de Django pour " -"simplifier la mise en œuvre des points d'extrémité de l'API pour les objets " -"Brand." +"sérialisation des objets Brand. Elle utilise le cadre ViewSet de Django pour" +" simplifier la mise en œuvre des points d'extrémité de l'API pour les objets" +" Brand." #: engine/core/viewsets.py:458 msgid "" @@ -3438,8 +3436,8 @@ msgstr "" "sérialisation et les opérations sur des instances spécifiques. Elle s'étend " "à partir de `EvibesViewSet` pour utiliser des fonctionnalités communes et " "s'intègre au framework REST de Django pour les opérations API RESTful. Il " -"comprend des méthodes pour récupérer les détails d'un produit, appliquer des " -"permissions et accéder aux commentaires connexes d'un produit." +"comprend des méthodes pour récupérer les détails d'un produit, appliquer des" +" permissions et accéder aux commentaires connexes d'un produit." #: engine/core/viewsets.py:605 msgid "" @@ -3449,8 +3447,8 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Représente un jeu de vues pour la gestion des objets Vendeur. Ce jeu de vues " -"permet d'extraire, de filtrer et de sérialiser les données relatives aux " +"Représente un jeu de vues pour la gestion des objets Vendeur. Ce jeu de vues" +" permet d'extraire, de filtrer et de sérialiser les données relatives aux " "vendeurs. Il définit l'ensemble de requêtes, les configurations de filtrage " "et les classes de sérialisation utilisées pour gérer les différentes " "actions. L'objectif de cette classe est de fournir un accès simplifié aux " @@ -3462,8 +3460,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Représentation d'un ensemble de vues gérant des objets de retour " @@ -3480,9 +3478,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet pour la gestion des commandes et des opérations connexes. Cette " @@ -3499,15 +3497,15 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Fournit un jeu de vues pour la gestion des entités OrderProduct. Ce jeu de " "vues permet d'effectuer des opérations CRUD et des actions personnalisées " "spécifiques au modèle OrderProduct. Il inclut le filtrage, les contrôles de " -"permission et le changement de sérialiseur en fonction de l'action demandée. " -"En outre, il fournit une action détaillée pour gérer le retour " +"permission et le changement de sérialiseur en fonction de l'action demandée." +" En outre, il fournit une action détaillée pour gérer le retour " "d'informations sur les instances OrderProduct." #: engine/core/viewsets.py:974 @@ -3534,8 +3532,8 @@ msgstr "Gère les opérations liées aux données de stock dans le système." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3543,9 +3541,9 @@ msgstr "" "Jeu de vues pour la gestion des opérations de la liste de souhaits. Le jeu " "de vues WishlistViewSet fournit des points d'extrémité pour interagir avec " "la liste de souhaits d'un utilisateur, permettant la récupération, la " -"modification et la personnalisation des produits de la liste de souhaits. Ce " -"jeu de vues facilite les fonctionnalités telles que l'ajout, la suppression " -"et les actions en bloc pour les produits de la liste de souhaits. Des " +"modification et la personnalisation des produits de la liste de souhaits. Ce" +" jeu de vues facilite les fonctionnalités telles que l'ajout, la suppression" +" et les actions en bloc pour les produits de la liste de souhaits. Des " "contrôles de permissions sont intégrés pour s'assurer que les utilisateurs " "ne peuvent gérer que leur propre liste de souhaits, sauf si des permissions " "explicites sont accordées." @@ -3559,11 +3557,11 @@ msgid "" "on the request context." msgstr "" "Cette classe fournit une fonctionnalité de viewset pour la gestion des " -"objets `Address`. La classe AddressViewSet permet d'effectuer des opérations " -"CRUD, des filtrages et des actions personnalisées liées aux entités adresse. " -"Elle inclut des comportements spécialisés pour différentes méthodes HTTP, " -"des dérogations au sérialiseur et une gestion des autorisations basée sur le " -"contexte de la demande." +"objets `Address`. La classe AddressViewSet permet d'effectuer des opérations" +" CRUD, des filtrages et des actions personnalisées liées aux entités " +"adresse. Elle inclut des comportements spécialisés pour différentes méthodes" +" HTTP, des dérogations au sérialiseur et une gestion des autorisations basée" +" sur le contexte de la demande." #: engine/core/viewsets.py:1254 #, python-brace-format diff --git a/engine/core/locale/he_IL/LC_MESSAGES/django.mo b/engine/core/locale/he_IL/LC_MESSAGES/django.mo index 1e5947bf93d37cae99ffa97aacd3cbcf5b6864e0..b26219cbd8617b1afbbf66b603c11a6bb5e26b29 100644 GIT binary patch delta 14888 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 Ip5FET4=JPx^Z)<= delta 14681 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 leW;3^k7N2K?OZ+Yec#Sr3z}@%^R%Att#o@\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "פעיל" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "אם מוגדר כ-false, אובייקט זה לא יהיה גלוי למשתמשים ללא ההרשאה הנדרשת." #: engine/core/abstract.py:26 engine/core/choices.py:18 @@ -70,65 +71,65 @@ msgstr "מטא-נתונים" msgid "timestamps" msgstr "חותמות זמן" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "הפעל את %(verbose_name_plural)s שנבחר" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "הפריטים שנבחרו הופעלו!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "השבת את %(verbose_name_plural)s שנבחר" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "פריטים נבחרים הושבתו!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "ערך התכונה" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "ערכי תכונות" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "תמונה" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "תמונות" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "מלאי" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "מניות" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "הזמן מוצר" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "הזמנת מוצרים" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "ילדים" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "תצורה" @@ -152,7 +153,8 @@ msgstr "נמסר" msgid "canceled" msgstr "בוטל" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "נכשל" @@ -193,11 +195,11 @@ msgstr "" "סכימת OpenApi3 עבור ממשק API זה. ניתן לבחור את הפורמט באמצעות משא ומתן על " "תוכן. ניתן לבחור את השפה באמצעות Accept-Language ופרמטר שאילתה." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "קלט/פלט מטמון" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -205,42 +207,42 @@ msgstr "" "החל רק מפתח לקריאת נתונים מותרים מהמטמון. החל מפתח, נתונים וזמן המתנה עם " "אימות כדי לכתוב נתונים למטמון." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "קבל רשימה של השפות הנתמכות" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "קבל את הפרמטרים החשופים של היישום" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "שלח הודעה לצוות התמיכה" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "בקש כתובת URL של CORS. מותר להשתמש רק ב-https." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "חפש בין מוצרים, קטגוריות ומותגים" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "נקודת קצה לחיפוש גלובלי לשאילתות בטבלאות הפרויקט" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "רכשו הזמנה כעסק" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" "רכשו הזמנה כעסק, באמצעות `products` המסופק עם `product_uuid` ו-`attributes`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "הורדת נכס דיגיטלי מהזמנה דיגיטלית שנרכשה" @@ -265,7 +267,8 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "שכתוב קבוצת תכונות קיימת תוך שמירת תכונות שאינן ניתנות לעריכה" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "שכתוב שדות מסוימים בקבוצת תכונות קיימת תוך שמירת תכונות שאינן ניתנות לעריכה" @@ -314,7 +317,8 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "שכתוב ערך תכונה קיים תוך שמירת תכונות שאינן ניתנות לעריכה" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "שכתוב שדות מסוימים של ערך תכונה קיים תוך שמירת שדות שאינם ניתנים לעריכה" @@ -348,9 +352,9 @@ msgstr "שכתוב שדות מסוימים בקטגוריה קיימת תוך ש #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "תמונת מצב SEO Meta" @@ -368,8 +372,8 @@ msgstr "למשתמשים שאינם אנשי צוות, מוצגות רק ההז #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "חיפוש תת-מחרוזת ללא הבחנה בין אותיות גדולות וקטנות ב-human_readable_id, " "order_products.product.name ו-order_products.product.partnumber" @@ -407,9 +411,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "מיין לפי אחד מהפרמטרים הבאים: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. הוסף קידומת '-' עבור מיון יורד " @@ -453,8 +457,8 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"מסיים את רכישת ההזמנה. אם נעשה שימוש ב-`force_balance`, הרכישה תושלם באמצעות " -"היתרה של המשתמש; אם נעשה שימוש ב-`force_payment`, תתבצע עסקה." +"מסיים את רכישת ההזמנה. אם נעשה שימוש ב-`force_balance`, הרכישה תושלם באמצעות" +" היתרה של המשתמש; אם נעשה שימוש ב-`force_payment`, תתבצע עסקה." #: engine/core/docs/drf/viewsets.py:427 msgid "retrieve current pending order of a user" @@ -464,7 +468,7 @@ msgstr "איתור הזמנה מושהית נוכחית של משתמש" msgid "retrieves a current pending order of an authenticated user" msgstr "מאתר הזמנה ממתנה נוכחית של משתמש מאומת" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "לרכוש הזמנה ללא יצירת חשבון" @@ -511,7 +515,8 @@ msgstr "הסר מוצר מההזמנה, הכמויות לא ייספרו" msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" -msgstr "מסיר רשימת מוצרים מהזמנה באמצעות `product_uuid` ו-`attributes` שסופקו." +msgstr "" +"מסיר רשימת מוצרים מהזמנה באמצעות `product_uuid` ו-`attributes` שסופקו." #: engine/core/docs/drf/viewsets.py:497 msgid "list all wishlists (simple view)" @@ -590,28 +595,15 @@ msgstr "מסיר מוצרים רבים מרשימת המשאלות באמצעו msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -"סינון לפי זוגות שם/ערך של תכונה אחת או יותר. • **תחביר**: `attr_name=method-" -"value[;attr2=method2-value2]…` • **שיטות** (ברירת המחדל היא `icontains` אם " -"לא צוין): `iexact`, `exact`, `icontains`, `contains`, `isnull`, " -"`startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, " -"`lt`, `lte`, `gt`, `gte`, `in` • **הקלדת ערכים**: תחילה מתבצע ניסיון JSON " -"(כך שניתן להעביר רשימות/מילונים), `true`/`false` עבור ערכי בוליאניים, מספרים " -"שלמים, מספרים צפים; אחרת מטופל כמחרוזת. • **Base64**: קידומת עם `b64-` כדי " -"לקודד את הערך הגולמי ב-base64 בטוח ל-URL. \n" -"דוגמאות: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" +"סינון לפי זוגות שם/ערך של תכונה אחת או יותר. • **תחביר**: `attr_name=method-value[;attr2=method2-value2]…` • **שיטות** (ברירת המחדל היא `icontains` אם לא צוין): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` • **הקלדת ערכים**: תחילה מתבצע ניסיון JSON (כך שניתן להעביר רשימות/מילונים), `true`/`false` עבור ערכי בוליאניים, מספרים שלמים, מספרים צפים; אחרת מטופל כמחרוזת. • **Base64**: קידומת עם `b64-` כדי לקודד את הערך הגולמי ב-base64 בטוח ל-URL. \n" +"דוגמאות: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" #: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "list all products (simple view)" @@ -623,12 +615,11 @@ msgstr "(מדויק) UUID של המוצר" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"רשימה של שדות למיון, מופרדים בפסיקים. קידומת `-` למיון יורד. **מותר:** uuid, " -"rating, name, slug, created, modified, price, random" +"רשימה של שדות למיון, מופרדים בפסיקים. קידומת `-` למיון יורד. **מותר:** uuid," +" rating, name, slug, created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "retrieve a single product (detailed view)" @@ -641,9 +632,6 @@ msgid "Product UUID or slug" msgstr "UUID או Slug של המוצר" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "צור מוצר" @@ -930,10 +918,11 @@ msgstr "שכתוב תגית מוצר קיימת תוך שמירת תוכן שא #: engine/core/docs/drf/viewsets.py:1350 msgid "rewrite some fields of an existing product tag saving non-editables" -msgstr "שכתוב שדות מסוימים בתגית מוצר קיימת תוך שמירת שדות שאינם ניתנים לעריכה" +msgstr "" +"שכתוב שדות מסוימים בתגית מוצר קיימת תוך שמירת שדות שאינם ניתנים לעריכה" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "לא צויין מונח חיפוש." @@ -942,8 +931,8 @@ msgstr "לא צויין מונח חיפוש." msgid "Search" msgstr "חיפוש" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -989,8 +978,8 @@ msgid "Quantity" msgstr "כמות" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "שבלול" @@ -1006,7 +995,7 @@ msgstr "כלול תת-קטגוריות" msgid "Include personal ordered" msgstr "כלול מוצרים שהוזמנו באופן אישי" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "מספר קטלוגי" @@ -1027,12 +1016,12 @@ msgid "Bought before (inclusive)" msgstr "נקנה לפני כן (כולל)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "דוא\"ל המשתמש" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "UUID של המשתמש" @@ -1056,301 +1045,302 @@ msgstr "קטגוריה שלמה (יש לפחות מוצר אחד או לא)" msgid "Level" msgstr "רמה" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "UUID של המוצר" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "מפתח לחיפוש או להגדרה במטמון" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "נתונים לאחסון במטמון" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "פסק זמן בשניות להגדרת הנתונים במטמון" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "נתונים במטמון" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "נתוני JSON שעברו קמלאיזציה מה-URL המבוקש" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "רק כתובות URL המתחילות ב-http(s):// מותרות" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "הוסף מוצר להזמנה" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "ההזמנה {order_uuid} לא נמצאה!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "הסר מוצר מההזמנה" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "הסר את כל המוצרים מההזמנה" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "קנה הזמנה" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "אנא ספק את order_uuid או order_hr_id - אחד מהם בלבד!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "סוג שגוי הגיע משיטת order.buy(): {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "בצע פעולה ברשימת המוצרים בהזמנה" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "הסר/הוסף" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "הפעולה חייבת להיות \"הוספה\" או \"הסרה\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "בצע פעולה ברשימת המוצרים ברשימת המשאלות" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "אנא ספק את הערך `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "רשימת המשאלות {wishlist_uuid} לא נמצאה!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "הוסף מוצר להזמנה" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "הסר מוצר מההזמנה" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "הסר מוצר מההזמנה" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "הסר מוצר מההזמנה" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "קנה הזמנה" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "אנא שלחו את התכונות כמחרוזת מעוצבת כך: attr1=value1,attr2=value2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "הוספה או מחיקה של משוב עבור המוצר שהוזמן" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "הפעולה חייבת להיות `add` או `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "המוצר {order_product_uuid} לא נמצא!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "מחרוזת הכתובת המקורית שסופקה על ידי המשתמש" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} אינו קיים: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "הגבול חייב להיות בין 1 ל-10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - עובד כמו קסם" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "תכונות" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "תכונות מקובצות" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "קבוצות תכונות" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "קטגוריות" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "מותגים" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "קטגוריות" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "אחוז הסימון" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "אילו תכונות וערכים ניתן להשתמש בהם לסינון קטגוריה זו." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "מחירים מינימליים ומקסימליים עבור מוצרים בקטגוריה זו, אם זמינים." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "תגיות עבור קטגוריה זו" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "מוצרים בקטגוריה זו" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "ספקים" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "קו רוחב (קואורדינטת Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "אורך (קואורדינטת X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "איך" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "ערך דירוג בין 1 ל-10, כולל, או 0 אם לא הוגדר." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "מייצג משוב ממשתמש." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "הודעות" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "כתובת URL להורדת המוצר שהוזמן, אם רלוונטי" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "משוב" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "רשימת המוצרים בהזמנה זו" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "כתובת לחיוב" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" "כתובת משלוח עבור הזמנה זו, השאר ריק אם זהה לכתובת החיוב או אם לא רלוונטי" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "המחיר הכולל של הזמנה זו" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "כמות המוצרים הכוללת בהזמנה" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "האם כל המוצרים בהזמנה הם דיגיטליים?" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "עסקאות עבור הזמנה זו" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "הזמנות" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "כתובת URL של התמונה" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "תמונות המוצר" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "קטגוריה" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "משובים" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "מותג" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "קבוצות תכונות" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1358,7 +1348,7 @@ msgstr "קבוצות תכונות" msgid "price" msgstr "מחיר" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1366,39 +1356,39 @@ msgstr "מחיר" msgid "quantity" msgstr "כמות" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "מספר המשובים" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "מוצרים זמינים רק להזמנות אישיות" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "מחיר מוזל" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "מוצרים" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "קודי קידום מכירות" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "מוצרים במבצע" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "מבצעים" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "ספק" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1406,98 +1396,98 @@ msgstr "ספק" msgid "product" msgstr "מוצר" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "מוצרים ברשימת המשאלות" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "רשימות משאלות" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "מוצרים מתויגים" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "תגיות מוצר" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "קטגוריות מתויגות" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "תגיות קטגוריות" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "שם הפרויקט" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "שם החברה" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "כתובת החברה" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "מספר הטלפון של החברה" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from', לעיתים יש להשתמש בו במקום בערך המשתמש המארח" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "משתמש מארח דוא\"ל" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "סכום מקסימלי לתשלום" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "סכום מינימום לתשלום" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "נתוני ניתוח" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "נתוני פרסום" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "תצורה" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "קוד שפה" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "שם השפה" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "דגל השפה, אם קיים :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "קבל רשימה של השפות הנתמכות" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "תוצאות חיפוש מוצרים" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "תוצאות חיפוש מוצרים" @@ -1512,23 +1502,23 @@ msgstr "" "קבוצות תכונות. לקבוצת תכונות יכולה להיות קבוצת אב, היוצרת מבנה היררכי. זה " "יכול להיות שימושי לסיווג וניהול תכונות בצורה יעילה יותר במערכת מורכבת." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "הורה של קבוצה זו" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "קבוצת תכונות הורה" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "שם קבוצת התכונות" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "קבוצת תכונות" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1544,47 +1534,47 @@ msgstr "" "הנרכשים מהספק. מודל זה גם מתחזק מטא-נתונים ואילוצים נוספים, מה שהופך אותו " "מתאים לשימוש במערכות המקיימות אינטראקציה עם ספקים צד שלישי." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "מאחסן את פרטי ההזדהות ונקודות הקצה הנדרשים לתקשורת API של הספק" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "מידע אימות" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "הגדר את הסימון עבור מוצרים שנרכשו מספק זה" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "אחוז תוספת הספק" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "שם הספק הזה" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "שם הספק" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "קובץ תגובה" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "תגובת העיבוד האחרונה של הספק" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "נתיב קובץ האינטגרציה של הספק" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "נתיב אינטגרציה" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1594,48 +1584,48 @@ msgid "" msgstr "" "מייצג תגית מוצר המשמשת לסיווג או זיהוי מוצרים. מחלקת ProductTag נועדה לזהות " "ולסווג מוצרים באופן ייחודי באמצעות שילוב של מזהה תגית פנימי ושם תצוגה " -"ידידותי למשתמש. היא תומכת בפעולות המיוצאות באמצעות mixins ומספקת התאמה אישית " -"של מטא-נתונים למטרות ניהוליות." +"ידידותי למשתמש. היא תומכת בפעולות המיוצאות באמצעות mixins ומספקת התאמה אישית" +" של מטא-נתונים למטרות ניהוליות." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "מזהה תווית פנימי עבור תווית המוצר" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "שם היום" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "שם ידידותי למשתמש עבור תווית המוצר" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "שם תצוגה של התג" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "תגית מוצר" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" "מייצג תווית קטגוריה המשמשת למוצרים. מחלקה זו מדגמת תווית קטגוריה שניתן " -"להשתמש בה כדי לקשר ולסווג מוצרים. היא כוללת תכונות עבור מזהה תווית פנימי ושם " -"תצוגה ידידותי למשתמש." +"להשתמש בה כדי לקשר ולסווג מוצרים. היא כוללת תכונות עבור מזהה תווית פנימי ושם" +" תצוגה ידידותי למשתמש." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "תגית קטגוריה" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "תגיות קטגוריה" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1654,105 +1644,106 @@ msgstr "" "דומות אחרות בתוך יישום, ומאפשרת למשתמשים או למנהלים לציין את השם, התיאור " "וההיררכיה של הקטגוריות, וכן להקצות תכונות כגון תמונות, תגיות או עדיפות." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "העלה תמונה המייצגת קטגוריה זו" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "תמונה בקטגוריה" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "הגדר אחוז תוספת מחיר עבור מוצרים בקטגוריה זו" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "הורה של קטגוריה זו כדי ליצור מבנה היררכי" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "קטגוריה ראשית" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "שם הקטגוריה" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "ציין שם לקטגוריה זו" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "הוסף תיאור מפורט לקטגוריה זו" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "תיאור הקטגוריה" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "תגיות המסייעות לתאר או לקבץ קטגוריה זו" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "עדיפות" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"מייצג אובייקט מותג במערכת. מחלקה זו מטפלת במידע ובתכונות הקשורים למותג, כולל " -"שמו, לוגואים, תיאור, קטגוריות קשורות, סלוגן ייחודי וסדר עדיפות. היא מאפשרת " +"מייצג אובייקט מותג במערכת. מחלקה זו מטפלת במידע ובתכונות הקשורים למותג, כולל" +" שמו, לוגואים, תיאור, קטגוריות קשורות, סלוגן ייחודי וסדר עדיפות. היא מאפשרת " "ארגון וייצוג של נתונים הקשורים למותג בתוך היישום." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "שם המותג" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "שם המותג" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "העלה לוגו המייצג את המותג הזה" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "תמונה קטנה של המותג" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "העלה לוגו גדול המייצג את המותג הזה" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "תמונה גדולה של המותג" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "הוסף תיאור מפורט של המותג" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "תיאור המותג" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "קטגוריות אופציונליות שהמותג הזה קשור אליהן" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "קטגוריות" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1763,72 +1754,72 @@ msgstr "" "רכישה, כמות, SKU ונכסים דיגיטליים. היא מהווה חלק ממערכת ניהול המלאי ומאפשרת " "מעקב והערכה של מוצרים הזמינים מספקים שונים." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "הספק המספק את מלאי המוצר הזה" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "ספק נלווה" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "המחיר הסופי ללקוח לאחר תוספות" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "מחיר המכירה" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "המוצר הקשור לרישום המלאי הזה" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "מוצר נלווה" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "המחיר ששולם למוכר עבור מוצר זה" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "מחיר הרכישה של הספק" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "כמות המוצר הזמינה במלאי" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "כמות במלאי" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU שהוקצה על ידי הספק לזיהוי המוצר" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "מק\"ט הספק" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "קובץ דיגיטלי הקשור למלאי זה, אם רלוונטי" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "קובץ דיגיטלי" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "מאפייני המערכת" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "רישומים במלאי" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1840,157 +1831,166 @@ msgid "" "product data and its associated information within an application." msgstr "" "מייצג מוצר עם תכונות כגון קטגוריה, מותג, תגיות, סטטוס דיגיטלי, שם, תיאור, " -"מספר חלק ו-slug. מספק תכונות שירות נלוות לאחזור דירוגים, ספירת משובים, מחיר, " -"כמות והזמנות סה\"כ. מיועד לשימוש במערכת המטפלת במסחר אלקטרוני או בניהול " +"מספר חלק ו-slug. מספק תכונות שירות נלוות לאחזור דירוגים, ספירת משובים, מחיר," +" כמות והזמנות סה\"כ. מיועד לשימוש במערכת המטפלת במסחר אלקטרוני או בניהול " "מלאי. מחלקה זו מתקשרת עם מודלים נלווים (כגון קטגוריה, מותג ותגית מוצר) " -"ומנהלת את המטמון עבור תכונות הנגישות בתדירות גבוהה כדי לשפר את הביצועים. הוא " -"משמש להגדרה ולעיבוד נתוני מוצר והמידע הקשור אליו בתוך יישום." +"ומנהלת את המטמון עבור תכונות הנגישות בתדירות גבוהה כדי לשפר את הביצועים. הוא" +" משמש להגדרה ולעיבוד נתוני מוצר והמידע הקשור אליו בתוך יישום." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "הקטגוריה אליה שייך מוצר זה" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "באופן אופציונלי, ניתן לשייך מוצר זה למותג" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "תגיות המסייעות לתאר או לקבץ מוצר זה" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "מציין אם מוצר זה נמסר באופן דיגיטלי" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "האם המוצר הוא דיגיטלי?" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "מציין אם יש לעדכן מוצר זה ממשימה תקופתית" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "האם ניתן לעדכן את המוצר?" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "ספק שם מזהה ברור למוצר" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "שם המוצר" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "הוסף תיאור מפורט של המוצר" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "תיאור המוצר" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "מספר חלק עבור מוצר זה" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "מספר חלק" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "יחידת אחסון מלאי עבור מוצר זה" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "מייצג תכונה במערכת. מחלקה זו משמשת להגדרת תכונות ולניהולן. תכונות הן נתונים " -"הניתנים להתאמה אישית, שניתן לקשר לישויות אחרות. לתכונות יש קטגוריות, קבוצות, " -"סוגי ערכים ושמות משויכים. המודל תומך בסוגים רבים של ערכים, כולל מחרוזת, מספר " -"שלם, מספר צף, בוליאני, מערך ואובייקט. הדבר מאפשר בניית נתונים דינמית וגמישה." +"הניתנים להתאמה אישית, שניתן לקשר לישויות אחרות. לתכונות יש קטגוריות, קבוצות," +" סוגי ערכים ושמות משויכים. המודל תומך בסוגים רבים של ערכים, כולל מחרוזת, " +"מספר שלם, מספר צף, בוליאני, מערך ואובייקט. הדבר מאפשר בניית נתונים דינמית " +"וגמישה." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "קבוצה של תכונה זו" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "מחרוזת" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "יושרה" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "צף" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "בוליאני" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "מערך" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "אובייקט" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "סוג ערך התכונה" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "סוג ערך" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "שם התכונה הזו" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "שם התכונה" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "ניתן לסינון" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "מציין אם ניתן להשתמש בתכונה זו לצורך סינון או לא" -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "תכונה" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "מייצג ערך ספציפי עבור תכונה המקושרת למוצר. הוא מקשר את ה\"תכונה\" ל\"ערך\" " "ייחודי, ומאפשר ארגון טוב יותר וייצוג דינמי של מאפייני המוצר." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "תכונה של ערך זה" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "המוצר הספציפי הקשור לערך של תכונה זו" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "הערך הספציפי עבור תכונה זו" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -1998,85 +1998,85 @@ msgstr "" "כולל פונקציונליות להעלאת קבצי תמונה, שיוכם למוצרים ספציפיים וקביעת סדר " "התצוגה שלהם. היא כוללת גם תכונת נגישות עם טקסט חלופי לתמונות." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "ספק טקסט חלופי לתמונה לצורך נגישות" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "טקסט חלופי לתמונה" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "העלה את קובץ התמונה עבור מוצר זה" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "תמונת מוצר" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "קובע את סדר הצגת התמונות" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "עדיפות תצוגה" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "המוצר שהדימוי הזה מייצג" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "תמונות מוצרים" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "מייצג קמפיין קידום מכירות למוצרים בהנחה. מחלקה זו משמשת להגדרת וניהול " "קמפיינים לקידום מכירות המציעים הנחה באחוזים על מוצרים. המחלקה כוללת תכונות " "להגדרת שיעור ההנחה, מתן פרטים על המבצע וקישורו למוצרים הרלוונטיים. היא " "משתלבת בקטלוג המוצרים כדי לקבוע את הפריטים המושפעים בקמפיין." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "אחוז ההנחה עבור המוצרים שנבחרו" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "אחוז ההנחה" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "ציין שם ייחודי לקידום מכירות זה" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "שם המבצע" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "תיאור המבצע" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "בחר אילו מוצרים כלולים במבצע זה" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "מוצרים כלולים" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "קידום" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2087,119 +2087,120 @@ msgstr "" "פונקציונליות לניהול אוסף מוצרים, תומכת בפעולות כגון הוספה והסרה של מוצרים, " "וכן תומכת בפעולות להוספה והסרה של מספר מוצרים בבת אחת." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "מוצרים שהמשתמש סימן כנחשקים" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "המשתמש שבבעלותו רשימת המשאלות הזו" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "בעל רשימת המשאלות" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "רשימת משאלות" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "מייצג תיעוד הקשור למוצר. מחלקה זו משמשת לאחסון מידע על תיעוד הקשור למוצרים " "ספציפיים, כולל העלאת קבצים ומטא-נתונים שלהם. היא מכילה שיטות ותכונות לטיפול " "בסוג הקובץ ובנתיב האחסון של קבצי התיעוד. היא מרחיבה את הפונקציונליות של " "מיקסים ספציפיים ומספקת תכונות מותאמות אישית נוספות." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "סרט תיעודי" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "סרטים תיעודיים" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "לא פתור" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "מייצג ישות כתובת הכוללת פרטים על מיקום וקשרים עם משתמש. מספק פונקציונליות " "לאחסון נתונים גיאוגרפיים וכתובות, וכן אינטגרציה עם שירותי קידוד גיאוגרפי. " -"מחלקה זו נועדה לאחסן מידע מפורט על כתובות, כולל רכיבים כגון רחוב, עיר, אזור, " -"מדינה ומיקום גיאוגרפי (קו אורך וקו רוחב). היא תומכת באינטגרציה עם ממשקי API " -"לקידוד גיאוגרפי, ומאפשרת אחסון של תגובות API גולמיות לעיבוד או בדיקה נוספים. " -"הסוג גם מאפשר לקשר כתובת למשתמש, מה שמקל על טיפול בנתונים מותאמים אישית." +"מחלקה זו נועדה לאחסן מידע מפורט על כתובות, כולל רכיבים כגון רחוב, עיר, אזור," +" מדינה ומיקום גיאוגרפי (קו אורך וקו רוחב). היא תומכת באינטגרציה עם ממשקי API" +" לקידוד גיאוגרפי, ומאפשרת אחסון של תגובות API גולמיות לעיבוד או בדיקה " +"נוספים. הסוג גם מאפשר לקשר כתובת למשתמש, מה שמקל על טיפול בנתונים מותאמים " +"אישית." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "שורת כתובת עבור הלקוח" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "שורת כתובת" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "רחוב" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "מחוז" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "עיר" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "אזור" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "מיקוד" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "מדינה" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "נקודת מיקום גיאוגרפי (אורך, רוחב)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "תגובה JSON מלאה מ-geocoder עבור כתובת זו" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "תגובת JSON שמורה משירות הגיאו-קידוד" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "כתובת" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "כתובות" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2211,233 +2212,233 @@ msgstr "" "מייצג קוד קידום מכירות שניתן להשתמש בו לקבלת הנחות, לניהול תוקפו, סוג ההנחה " "והשימוש בו. מחלקת PromoCode מאחסנת פרטים אודות קוד קידום מכירות, כולל המזהה " "הייחודי שלו, מאפייני ההנחה (סכום או אחוז), תקופת התוקף, המשתמש המשויך (אם " -"יש) ומצב השימוש בו. היא כוללת פונקציונליות לאימות והחלת קוד הקידום על הזמנה, " -"תוך הקפדה על עמידה באילוצים." +"יש) ומצב השימוש בו. היא כוללת פונקציונליות לאימות והחלת קוד הקידום על הזמנה," +" תוך הקפדה על עמידה באילוצים." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "קוד ייחודי המשמש את המשתמש למימוש הנחה" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "מזהה קוד קידום מכירות" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "סכום הנחה קבוע המוחל אם לא נעשה שימוש באחוזים" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "סכום הנחה קבוע" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "אחוז ההנחה שיחול אם לא ייעשה שימוש בסכום הקבוע" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "אחוז ההנחה" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "חותמת זמן לתוקף הקוד המקדם מכירות" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "תוקף הסוף" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "תאריך התחילה של תוקף קוד המבצע" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "תחילת תוקף" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "חותמת זמן שבה נעשה שימוש בקוד המבצע, ריק אם טרם נעשה בו שימוש" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "חותמת זמן שימוש" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "משתמש שהוקצה לקוד קידום מכירות זה, אם רלוונטי" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "משתמש שהוקצה" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "קוד קידום מכירות" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "קודי קידום מכירות" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" "יש להגדיר סוג הנחה אחד בלבד (סכום או אחוז), אך לא את שניהם או אף אחד מהם." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "קוד המבצע כבר נוצל" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "סוג הנחה לא חוקי עבור קוד קידום מכירות {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "מייצג הזמנה שבוצעה על ידי משתמש. מחלקה זו מדמה הזמנה בתוך היישום, כולל " "תכונותיה השונות כגון פרטי חיוב ומשלוח, סטטוס, משתמש קשור, התראות ופעולות " "נלוות. להזמנות יכולות להיות מוצרים נלווים, ניתן להחיל עליהן מבצעים, להגדיר " -"כתובות ולעדכן פרטי משלוח או חיוב. כמו כן, הפונקציונליות תומכת בניהול המוצרים " -"במחזור החיים של ההזמנה." +"כתובות ולעדכן פרטי משלוח או חיוב. כמו כן, הפונקציונליות תומכת בניהול המוצרים" +" במחזור החיים של ההזמנה." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "כתובת החיוב המשמשת להזמנה זו" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "קוד קידום מכירות אופציונלי שהוחל על הזמנה זו" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "קוד קידום מכירות שהוחל" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "כתובת המשלוח המשמשת להזמנה זו" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "כתובת למשלוח" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "הסטטוס הנוכחי של ההזמנה במחזור החיים שלה" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "סטטוס ההזמנה" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "מבנה JSON של הודעות שיוצגו למשתמשים, בממשק המשתמש המנהלי נעשה שימוש בתצוגת " "טבלה." -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "ייצוג JSON של תכונות ההזמנה עבור הזמנה זו" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "המשתמש שהזמין את ההזמנה" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "משתמש" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "החותמת הזמן שבה הושלמה ההזמנה" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "לקנות זמן" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "מזהה קריא לאדם עבור ההזמנה" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "מזהה קריא על ידי בני אדם" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "הזמנה" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "למשתמש יכול להיות רק הזמנה אחת בהמתנה בכל פעם!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "לא ניתן להוסיף מוצרים להזמנה שאינה בהמתנה." -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "לא ניתן להוסיף מוצרים לא פעילים להזמנה" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "לא ניתן להוסיף מוצרים מעבר למלאי הזמין" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "לא ניתן להסיר מוצרים מהזמנה שאינה בהמתנה." -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} אינו קיים בשאילתה <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "קוד קידום מכירות אינו קיים" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "ניתן לרכוש מוצרים פיזיים רק עם ציון כתובת משלוח!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "הכתובת אינה קיימת" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "לא ניתן לבצע רכישה כרגע, אנא נסה שוב בעוד מספר דקות." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "ערך כוח לא חוקי" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "אי אפשר לרכוש הזמנה ריקה!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "אי אפשר לקנות הזמנה בלי משתמש!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "משתמש ללא יתרה לא יכול לקנות עם יתרה!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "אין מספיק כסף כדי להשלים את ההזמנה" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2445,13 +2446,13 @@ msgstr "" "אינך יכול לרכוש ללא רישום, אנא ספק את הפרטים הבאים: שם הלקוח, דוא\"ל הלקוח, " "מספר הטלפון של הלקוח" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "אמצעי תשלום לא חוקי: {payment_method} מ-{available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2461,34 +2462,35 @@ msgid "" msgstr "" "מנהל משוב משתמשים על מוצרים. מחלקה זו נועדה לאסוף ולאחסן משוב משתמשים על " "מוצרים ספציפיים שרכשו. היא מכילה תכונות לאחסון הערות משתמשים, הפניה למוצר " -"הקשור בהזמנה ודירוג שהוקצה על ידי המשתמש. המחלקה משתמשת בשדות מסד נתונים כדי " -"למדל ולנהל ביעילות נתוני משוב." +"הקשור בהזמנה ודירוג שהוקצה על ידי המשתמש. המחלקה משתמשת בשדות מסד נתונים כדי" +" למדל ולנהל ביעילות נתוני משוב." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "הערות שסיפקו המשתמשים על חווייתם עם המוצר" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "הערות משוב" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "מתייחס למוצר הספציפי בהזמנה שעליה מתייחס משוב זה." -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "מוצר בהזמנה קשורה" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "דירוג שהוקצה על ידי המשתמש למוצר" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "דירוג מוצר" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2500,134 +2502,134 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"מייצג מוצרים הקשורים להזמנות ותכונותיהם. מודל OrderProduct שומר מידע על מוצר " -"שהוא חלק מהזמנה, כולל פרטים כגון מחיר הרכישה, כמות, תכונות המוצר ומצב. הוא " +"מייצג מוצרים הקשורים להזמנות ותכונותיהם. מודל OrderProduct שומר מידע על מוצר" +" שהוא חלק מהזמנה, כולל פרטים כגון מחיר הרכישה, כמות, תכונות המוצר ומצב. הוא " "מנהל התראות למשתמש ולמנהלים ומטפל בפעולות כגון החזרת יתרת המוצר או הוספת " "משוב. מודל זה מספק גם שיטות ותכונות התומכות בלוגיקה עסקית, כגון חישוב המחיר " "הכולל או יצירת כתובת URL להורדה עבור מוצרים דיגיטליים. המודל משתלב עם מודלי " "Order ו-Product ומאחסן הפניה אליהם." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "המחיר ששילם הלקוח עבור מוצר זה בעת הרכישה" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "מחיר הרכישה בעת ההזמנה" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "הערות פנימיות למנהלים אודות מוצר זה שהוזמן" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "הערות פנימיות" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "הודעות למשתמשים" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "ייצוג JSON של תכונות פריט זה" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "תכונות המוצר שהוזמן" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "הפניה להזמנה הראשית המכילה מוצר זה" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "הזמנת הורים" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "המוצר הספציפי הקשור לשורת הזמנה זו" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "כמות המוצר הספציפי הזה בהזמנה" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "כמות המוצר" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "הסטטוס הנוכחי של מוצר זה בהזמנה" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "סטטוס קו המוצרים" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "המוצר בהזמנה חייב להיות קשור להזמנה!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "פעולה שגויה שצוינה עבור משוב: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "אינך יכול להחזיר הזמנה שלא התקבלה" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "שם" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "כתובת ה-URL של האינטגרציה" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "אישורי אימות" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "ניתן להגדיר ספק CRM ברירת מחדל אחד בלבד" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "קישור CRM של ההזמנה" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "קישורי CRM של הזמנות" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "מייצג את פונקציונליות ההורדה של נכסים דיגיטליים הקשורים להזמנות. מחלקת " "DigitalAssetDownload מספקת את היכולת לנהל ולהיכנס להורדות הקשורות למוצרים " -"שהוזמנו. היא שומרת מידע על המוצר שהוזמן, מספר ההורדות והאם הנכס גלוי לציבור. " -"היא כוללת שיטה ליצירת כתובת URL להורדת הנכס כאשר ההזמנה הקשורה נמצאת במצב " +"שהוזמנו. היא שומרת מידע על המוצר שהוזמן, מספר ההורדות והאם הנכס גלוי לציבור." +" היא כוללת שיטה ליצירת כתובת URL להורדת הנכס כאשר ההזמנה הקשורה נמצאת במצב " "'הושלמה'." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "הורדה" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "הורדות" @@ -2826,12 +2828,11 @@ msgstr "שלום %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"תודה על הזמנתך #%(order.pk)s! אנו שמחים להודיע לך שהזמנתך נכנסה לעיבוד. להלן " -"פרטי הזמנתך:" +"תודה על הזמנתך #%(order.pk)s! אנו שמחים להודיע לך שהזמנתך נכנסה לעיבוד. להלן" +" פרטי הזמנתך:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2932,8 +2933,7 @@ msgstr "תודה על שהייתכם איתנו! הענקנו לכם קוד קי #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "תודה על הזמנתך! אנו שמחים לאשר את רכישתך. להלן פרטי הזמנתך:" @@ -2960,11 +2960,11 @@ msgid "" " reserved" msgstr "כל הזכויות שמורות" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "נדרשים הן הנתונים והן זמן ההמתנה" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "ערך זמן המתנה לא חוקי, הוא חייב להיות בין 0 ל-216000 שניות" @@ -2996,20 +2996,20 @@ msgstr "אין לך הרשאה לבצע פעולה זו." msgid "NOMINATIM_URL must be configured." msgstr "יש להגדיר את הפרמטר NOMINATIM_URL!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "מידות התמונה לא יעלו על w{max_width} x h{max_height} פיקסלים!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -"מטפל בבקשה לאינדקס מפת האתר ומחזיר תגובה בפורמט XML. הוא מבטיח שהתגובה תכלול " -"את כותרת סוג התוכן המתאימה ל-XML." +"מטפל בבקשה לאינדקס מפת האתר ומחזיר תגובה בפורמט XML. הוא מבטיח שהתגובה תכלול" +" את כותרת סוג התוכן המתאימה ל-XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3018,106 +3018,102 @@ msgstr "" "מטפל בתגובה לתצוגה מפורטת של מפת אתר. פונקציה זו מעבדת את הבקשה, משיגה את " "התגובה המתאימה לפרטי מפת האתר, וקובעת את כותרת Content-Type עבור XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "מחזיר רשימה של שפות נתמכות והמידע המתאים להן." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "מחזיר את הפרמטרים של האתר כאובייקט JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" "מטפל בפעולות מטמון כגון קריאה והגדרת נתוני מטמון עם מפתח וזמן המתנה מוגדרים." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "מטפל בהגשת טפסי \"צור קשר\"." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "מטפל בבקשות לעיבוד ואימות כתובות URL מבקשות POST נכנסות." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "מטפל בשאילתות חיפוש גלובליות." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "מטפל בהיגיון הרכישה כעסק ללא רישום." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "מטפל בהורדת נכס דיגיטלי הקשור להזמנה. פונקציה זו מנסה להציג את קובץ הנכס " "הדיגיטלי הנמצא בספריית האחסון של הפרויקט. אם הקובץ לא נמצא, מתקבלת שגיאת " "HTTP 404 המציינת שהמשאב אינו זמין." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid נדרש" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "המוצר שהוזמן אינו קיים" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "ניתן להוריד את הנכס הדיגיטלי פעם אחת בלבד" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "יש לשלם את ההזמנה לפני הורדת הנכס הדיגיטלי" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "למוצר ההזמנה אין מוצר" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "לא נמצא סמל מועדף" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "מטפל בבקשות לסמל המועדף של אתר אינטרנט. פונקציה זו מנסה להציג את קובץ הסמל " "המועדף הנמצא בספרייה הסטטית של הפרויקט. אם קובץ הסמל המועדף לא נמצא, מתקבלת " "שגיאת HTTP 404 המציינת שהמשאב אינו זמין." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -"מנתב את הבקשה לדף האינדקס של המנהל. הפונקציה מטפלת בבקשות HTTP נכנסות ומנתבת " -"אותן לדף האינדקס של ממשק המנהל של Django. היא משתמשת בפונקציית `redirect` של " -"Django לטיפול בהפניה HTTP." +"מנתב את הבקשה לדף האינדקס של המנהל. הפונקציה מטפלת בבקשות HTTP נכנסות ומנתבת" +" אותן לדף האינדקס של ממשק המנהל של Django. היא משתמשת בפונקציית `redirect` " +"של Django לטיפול בהפניה HTTP." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "מחזיר את הגרסה הנוכחית של eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "הכנסות והזמנות (אחרון %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "מחזיר משתנים מותאמים אישית עבור לוח המחוונים." @@ -3129,17 +3125,18 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"מגדיר קבוצת תצוגות לניהול פעולות הקשורות ל-Evibes. מחלקת EvibesViewSet יורשת " -"מ-ModelViewSet ומספקת פונקציונליות לטיפול בפעולות ובפעולות על ישויות Evibes. " -"היא כוללת תמיכה במחלוקות סריאליזציה דינמיות המבוססות על הפעולה הנוכחית, " -"הרשאות הניתנות להתאמה אישית ופורמטים של עיבוד." +"מגדיר קבוצת תצוגות לניהול פעולות הקשורות ל-Evibes. מחלקת EvibesViewSet יורשת" +" מ-ModelViewSet ומספקת פונקציונליות לטיפול בפעולות ובפעולות על ישויות " +"Evibes. היא כוללת תמיכה במחלוקות סריאליזציה דינמיות המבוססות על הפעולה " +"הנוכחית, הרשאות הניתנות להתאמה אישית ופורמטים של עיבוד." #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "מייצג קבוצת תצוגות לניהול אובייקטי AttributeGroup. מטפל בפעולות הקשורות " "ל-AttributeGroup, כולל סינון, סידור סדרתי ואחזור נתונים. מחלקה זו היא חלק " @@ -3165,8 +3162,8 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "סט תצוגה לניהול אובייקטי AttributeValue. סט תצוגה זה מספק פונקציונליות " "לרישום, אחזור, יצירה, עדכון ומחיקה של אובייקטי AttributeValue. הוא משתלב " @@ -3207,10 +3204,10 @@ msgid "" "product details, applying permissions, and accessing related feedback of a " "product." msgstr "" -"מנהל פעולות הקשורות למודל `Product` במערכת. מחלקה זו מספקת מערך תצוגה לניהול " -"מוצרים, כולל סינון, סידור סדרתי ופעולות על מופעים ספציפיים. היא מרחיבה את " -"`EvibesViewSet` כדי להשתמש בפונקציונליות משותפת ומשתלבת עם מסגרת Django REST " -"עבור פעולות RESTful API. כוללת שיטות לאחזור פרטי מוצר, החלת הרשאות וגישה " +"מנהל פעולות הקשורות למודל `Product` במערכת. מחלקה זו מספקת מערך תצוגה לניהול" +" מוצרים, כולל סינון, סידור סדרתי ופעולות על מופעים ספציפיים. היא מרחיבה את " +"`EvibesViewSet` כדי להשתמש בפונקציונליות משותפת ומשתלבת עם מסגרת Django REST" +" עבור פעולות RESTful API. כוללת שיטות לאחזור פרטי מוצר, החלת הרשאות וגישה " "למשוב הקשור למוצר." #: engine/core/viewsets.py:605 @@ -3222,8 +3219,8 @@ msgid "" "Vendor-related resources through the Django REST framework." msgstr "" "מייצג קבוצת תצוגות לניהול אובייקטי ספק. קבוצת תצוגות זו מאפשרת לאחזר, לסנן " -"ולסדר נתוני ספק. היא מגדירה את קבוצת השאילתות, תצורות המסננים ומחלקות הסידור " -"המשמשות לטיפול בפעולות שונות. מטרת מחלקה זו היא לספק גישה יעילה למשאבים " +"ולסדר נתוני ספק. היא מגדירה את קבוצת השאילתות, תצורות המסננים ומחלקות הסידור" +" המשמשות לטיפול בפעולות שונות. מטרת מחלקה זו היא לספק גישה יעילה למשאבים " "הקשורים לספק באמצעות מסגרת Django REST." #: engine/core/viewsets.py:625 @@ -3231,29 +3228,29 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "ייצוג של קבוצת תצוגה המטפלת באובייקטי משוב. מחלקה זו מנהלת פעולות הקשורות " -"לאובייקטי משוב, כולל רישום, סינון ואחזור פרטים. מטרת קבוצת תצוגה זו היא לספק " -"סדרנים שונים לפעולות שונות וליישם טיפול מבוסס הרשאות באובייקטי משוב נגישים. " -"היא מרחיבה את `EvibesViewSet` הבסיסי ומשתמשת במערכת הסינון של Django לשאילתת " -"נתונים." +"לאובייקטי משוב, כולל רישום, סינון ואחזור פרטים. מטרת קבוצת תצוגה זו היא לספק" +" סדרנים שונים לפעולות שונות וליישם טיפול מבוסס הרשאות באובייקטי משוב נגישים." +" היא מרחיבה את `EvibesViewSet` הבסיסי ומשתמשת במערכת הסינון של Django " +"לשאילתת נתונים." #: engine/core/viewsets.py:652 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet לניהול הזמנות ופעולות נלוות. מחלקה זו מספקת פונקציונליות לאחזור, " -"שינוי וניהול אובייקטי הזמנה. היא כוללת נקודות קצה שונות לטיפול בפעולות הזמנה " -"כגון הוספה או הסרה של מוצרים, ביצוע רכישות עבור משתמשים רשומים ולא רשומים, " +"שינוי וניהול אובייקטי הזמנה. היא כוללת נקודות קצה שונות לטיפול בפעולות הזמנה" +" כגון הוספה או הסרה של מוצרים, ביצוע רכישות עבור משתמשים רשומים ולא רשומים, " "ואחזור הזמנות ממתנות של המשתמש המאושר הנוכחי. ViewSet משתמש במספר סדרנים " "בהתאם לפעולה הספציפית המתבצעת ומאכוף הרשאות בהתאם בעת אינטראקציה עם נתוני " "הזמנה." @@ -3262,8 +3259,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "מספק סט תצוגה לניהול ישויות OrderProduct. סט תצוגה זה מאפשר פעולות CRUD " @@ -3293,8 +3290,8 @@ msgstr "מטפל בפעולות הקשורות לנתוני המלאי במער msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." diff --git a/engine/core/locale/hi_IN/LC_MESSAGES/django.po b/engine/core/locale/hi_IN/LC_MESSAGES/django.po index 86ead85e..90e05573 100644 --- a/engine/core/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/core/locale/hi_IN/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -73,65 +73,65 @@ msgstr "" msgid "timestamps" msgstr "" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "" @@ -194,51 +194,51 @@ msgid "" "parameter both." msgstr "" -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "" -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "" @@ -344,9 +344,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "" @@ -450,7 +450,7 @@ msgstr "" msgid "retrieves a current pending order of an authenticated user" msgstr "" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "" @@ -614,9 +614,6 @@ msgid "Product UUID or slug" msgstr "" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "" @@ -901,8 +898,8 @@ msgstr "" msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "" @@ -911,8 +908,8 @@ msgstr "" msgid "Search" msgstr "" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "" @@ -958,8 +955,8 @@ msgid "Quantity" msgstr "" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "" @@ -975,7 +972,7 @@ msgstr "" msgid "Include personal ordered" msgstr "" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "" @@ -996,12 +993,12 @@ msgid "Bought before (inclusive)" msgstr "" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "" @@ -1025,300 +1022,300 @@ msgstr "" msgid "Level" msgstr "" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "" -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" "please send the attributes as the string formatted like attr1=value1," "attr2=value2" msgstr "" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" -#: engine/core/graphene/object_types.py:227 +#: engine/core/graphene/object_types.py:229 msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "" -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1326,7 +1323,7 @@ msgstr "" msgid "price" msgstr "" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1334,39 +1331,39 @@ msgstr "" msgid "quantity" msgstr "" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1374,98 +1371,98 @@ msgstr "" msgid "product" msgstr "" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "" @@ -1477,23 +1474,23 @@ msgid "" "categorizing and managing attributes more effectively in acomplex system." msgstr "" -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1504,47 +1501,47 @@ msgid "" "use in systems that interact with third-party vendors." msgstr "" -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1553,42 +1550,42 @@ msgid "" "metadata customization for administrative purposes." msgstr "" -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1601,51 +1598,51 @@ msgid "" "priority." msgstr "" -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " @@ -1653,47 +1650,47 @@ msgid "" "organization and representation of brand-related data within the application." msgstr "" -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" "Represents the stock of a product managed in the system. This class provides " "details about the relationship between vendors, products, and their stock " @@ -1703,72 +1700,72 @@ msgid "" "from various vendors." msgstr "" -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1780,55 +1777,63 @@ msgid "" "product data and its associated information within an application." msgstr "" -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " @@ -1838,83 +1843,83 @@ msgid "" "for dynamic and flexible data structuring." msgstr "" -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" "Represents a specific value for an attribute that is linked to a product. It " "links the 'attribute' to a unique 'value', allowing better organization and " "dynamic representation of product characteristics." msgstr "" -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " "class is designed to manage images for products, including functionality for " @@ -1923,39 +1928,39 @@ msgid "" "with alternative text for the images." msgstr "" -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" @@ -1965,39 +1970,39 @@ msgid "" "affected items in the campaign." msgstr "" -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2005,23 +2010,23 @@ msgid "" "operations for adding and removing multiple products at once." msgstr "" -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " @@ -2031,19 +2036,19 @@ msgid "" "custom features." msgstr "" -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" "Represents an address entity that includes location details and associations " "with a user. Provides functionality for geographic and address data storage, " @@ -2055,59 +2060,59 @@ msgid "" "address with a user, facilitating personalized data handling." msgstr "" -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2117,86 +2122,86 @@ msgid "" "apply the promo code to an order while ensuring constraints are met." msgstr "" -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " @@ -2206,145 +2211,145 @@ msgid "" "supports managing the products in the order lifecycle." msgstr "" -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2353,31 +2358,31 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "" -#: engine/core/models.py:1826 +#: engine/core/models.py:1827 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2390,108 +2395,108 @@ msgid "" "Product models and stores a reference to them." msgstr "" -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " @@ -2501,11 +2506,11 @@ msgid "" "the asset when the associated order is in a completed status." msgstr "" -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "" @@ -2835,11 +2840,11 @@ msgid "" " reserved" msgstr "" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" @@ -2871,58 +2876,58 @@ msgstr "" msgid "NOMINATIM_URL must be configured." msgstr "" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2930,31 +2935,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2962,23 +2967,23 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "" -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "" diff --git a/engine/core/locale/hr_HR/LC_MESSAGES/django.po b/engine/core/locale/hr_HR/LC_MESSAGES/django.po index fcf8e2f6..c5c08f79 100644 --- a/engine/core/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/core/locale/hr_HR/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -73,65 +73,65 @@ msgstr "" msgid "timestamps" msgstr "" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "" @@ -194,51 +194,51 @@ msgid "" "parameter both." msgstr "" -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "" -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "" @@ -344,9 +344,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "" @@ -450,7 +450,7 @@ msgstr "" msgid "retrieves a current pending order of an authenticated user" msgstr "" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "" @@ -614,9 +614,6 @@ msgid "Product UUID or slug" msgstr "" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "" @@ -901,8 +898,8 @@ msgstr "" msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "" @@ -911,8 +908,8 @@ msgstr "" msgid "Search" msgstr "" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "" @@ -958,8 +955,8 @@ msgid "Quantity" msgstr "" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "" @@ -975,7 +972,7 @@ msgstr "" msgid "Include personal ordered" msgstr "" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "" @@ -996,12 +993,12 @@ msgid "Bought before (inclusive)" msgstr "" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "" @@ -1025,300 +1022,300 @@ msgstr "" msgid "Level" msgstr "" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "" -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" "please send the attributes as the string formatted like attr1=value1," "attr2=value2" msgstr "" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" -#: engine/core/graphene/object_types.py:227 +#: engine/core/graphene/object_types.py:229 msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "" -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1326,7 +1323,7 @@ msgstr "" msgid "price" msgstr "" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1334,39 +1331,39 @@ msgstr "" msgid "quantity" msgstr "" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1374,98 +1371,98 @@ msgstr "" msgid "product" msgstr "" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "" @@ -1477,23 +1474,23 @@ msgid "" "categorizing and managing attributes more effectively in acomplex system." msgstr "" -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1504,47 +1501,47 @@ msgid "" "use in systems that interact with third-party vendors." msgstr "" -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1553,42 +1550,42 @@ msgid "" "metadata customization for administrative purposes." msgstr "" -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1601,51 +1598,51 @@ msgid "" "priority." msgstr "" -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " @@ -1653,47 +1650,47 @@ msgid "" "organization and representation of brand-related data within the application." msgstr "" -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" "Represents the stock of a product managed in the system. This class provides " "details about the relationship between vendors, products, and their stock " @@ -1703,72 +1700,72 @@ msgid "" "from various vendors." msgstr "" -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1780,55 +1777,63 @@ msgid "" "product data and its associated information within an application." msgstr "" -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " @@ -1838,83 +1843,83 @@ msgid "" "for dynamic and flexible data structuring." msgstr "" -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" "Represents a specific value for an attribute that is linked to a product. It " "links the 'attribute' to a unique 'value', allowing better organization and " "dynamic representation of product characteristics." msgstr "" -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " "class is designed to manage images for products, including functionality for " @@ -1923,39 +1928,39 @@ msgid "" "with alternative text for the images." msgstr "" -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" @@ -1965,39 +1970,39 @@ msgid "" "affected items in the campaign." msgstr "" -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2005,23 +2010,23 @@ msgid "" "operations for adding and removing multiple products at once." msgstr "" -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " @@ -2031,19 +2036,19 @@ msgid "" "custom features." msgstr "" -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" "Represents an address entity that includes location details and associations " "with a user. Provides functionality for geographic and address data storage, " @@ -2055,59 +2060,59 @@ msgid "" "address with a user, facilitating personalized data handling." msgstr "" -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2117,86 +2122,86 @@ msgid "" "apply the promo code to an order while ensuring constraints are met." msgstr "" -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " @@ -2206,145 +2211,145 @@ msgid "" "supports managing the products in the order lifecycle." msgstr "" -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2353,31 +2358,31 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "" -#: engine/core/models.py:1826 +#: engine/core/models.py:1827 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2390,108 +2395,108 @@ msgid "" "Product models and stores a reference to them." msgstr "" -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " @@ -2501,11 +2506,11 @@ msgid "" "the asset when the associated order is in a completed status." msgstr "" -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "" @@ -2835,11 +2840,11 @@ msgid "" " reserved" msgstr "" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" @@ -2871,58 +2876,58 @@ msgstr "" msgid "NOMINATIM_URL must be configured." msgstr "" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2930,31 +2935,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2962,23 +2967,23 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "" -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "" diff --git a/engine/core/locale/id_ID/LC_MESSAGES/django.mo b/engine/core/locale/id_ID/LC_MESSAGES/django.mo index 3189ee3db764d5f66d1f34d5e70e7dbee381ee7c..8cb97f136ab114481b7824f8bf0403b73c6326ed 100644 GIT binary patch delta 14879 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 O;wicBPKakl`2PVqE1Nw4 delta 14672 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 diff --git a/engine/core/locale/id_ID/LC_MESSAGES/django.po b/engine/core/locale/id_ID/LC_MESSAGES/django.po index 2e6b54a8..89e42f95 100644 --- a/engine/core/locale/id_ID/LC_MESSAGES/django.po +++ b/engine/core/locale/id_ID/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -19,7 +19,8 @@ msgstr "ID unik" #: engine/core/abstract.py:13 msgid "unique id is used to surely identify any database object" -msgstr "ID unik digunakan untuk mengidentifikasi objek basis data secara pasti" +msgstr "" +"ID unik digunakan untuk mengidentifikasi objek basis data secara pasti" #: engine/core/abstract.py:20 msgid "is active" @@ -27,7 +28,8 @@ msgstr "Aktif" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Jika diset ke false, objek ini tidak dapat dilihat oleh pengguna tanpa izin " "yang diperlukan" @@ -72,65 +74,65 @@ msgstr "Metadata" msgid "timestamps" msgstr "Stempel waktu" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktifkan %(verbose_name_plural)s yang dipilih" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Item yang dipilih telah diaktifkan!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Menonaktifkan %(verbose_name_plural)s yang dipilih" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Item yang dipilih telah dinonaktifkan!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Nilai Atribut" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Nilai Atribut" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Gambar" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Gambar" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Stok" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Saham" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Pesan Produk" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Pesan Produk" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Anak-anak" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Konfigurasi" @@ -154,7 +156,8 @@ msgstr "Disampaikan." msgid "canceled" msgstr "Dibatalkan" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Gagal" @@ -192,52 +195,51 @@ msgid "" "negotiation. Language can be selected with Accept-Language and query " "parameter both." msgstr "" -"Skema OpenApi3 untuk API ini. Format dapat dipilih melalui negosiasi konten. " -"Bahasa dapat dipilih dengan parameter Accept-Language dan parameter kueri." +"Skema OpenApi3 untuk API ini. Format dapat dipilih melalui negosiasi konten." +" Bahasa dapat dipilih dengan parameter Accept-Language dan parameter kueri." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "I/O Cache" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Terapkan hanya kunci untuk membaca data yang diizinkan dari cache.\n" -"Menerapkan kunci, data, dan batas waktu dengan autentikasi untuk menulis " -"data ke cache." +"Menerapkan kunci, data, dan batas waktu dengan autentikasi untuk menulis data ke cache." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Dapatkan daftar bahasa yang didukung" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Dapatkan parameter aplikasi yang dapat diekspos" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Kirim pesan ke tim dukungan" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Meminta URL CORSed. Hanya https yang diizinkan." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Mencari di antara produk, kategori, dan merek" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" "Titik akhir pencarian global untuk melakukan kueri di seluruh tabel proyek" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Beli pesanan sebagai Bisnis" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -245,7 +247,7 @@ msgstr "" "Beli pesanan sebagai bisnis, menggunakan `produk` yang disediakan dengan " "`product_uuid` dan `atribut`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "mengunduh aset digital dari pesanan digital yang dibeli" @@ -272,7 +274,8 @@ msgstr "" "dapat diedit" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Menulis ulang beberapa bidang dari grup atribut yang sudah ada sehingga " "tidak dapat diedit" @@ -328,7 +331,8 @@ msgstr "" "dapat diedit" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Menulis ulang beberapa bidang dari nilai atribut yang sudah ada sehingga " "tidak dapat diedit" @@ -367,9 +371,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "Cuplikan Meta SEO" @@ -388,8 +392,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Pencarian substring yang tidak peka huruf besar/kecil di human_readable_id, " "order_produk.product.name, dan order_produk.product.partnumber" @@ -413,7 +417,8 @@ msgstr "Filter berdasarkan ID pesanan yang dapat dibaca manusia" #: engine/core/docs/drf/viewsets.py:336 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -"Filter berdasarkan email pengguna (pencocokan persis tanpa huruf besar-kecil)" +"Filter berdasarkan email pengguna (pencocokan persis tanpa huruf besar-" +"kecil)" #: engine/core/docs/drf/viewsets.py:341 msgid "Filter by user's UUID" @@ -427,9 +432,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Urutkan berdasarkan salah satu dari: uuid, human_readable_id, user_email, " "user, status, created, modified, buy_time, random. Awalan dengan '-' untuk " @@ -489,7 +494,7 @@ msgstr "mengambil pesanan yang tertunda saat ini dari pengguna" msgid "retrieves a current pending order of an authenticated user" msgstr "mengambil pesanan tertunda saat ini dari pengguna yang diautentikasi" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "membeli pesanan tanpa pembuatan akun" @@ -638,31 +643,20 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Memfilter berdasarkan satu atau beberapa pasangan nama/nilai atribut. \n" "- **Sintaks**: `attr_name = metode-nilai[;attr2 = metode2-nilai2]...`\n" -"- **Metode** (default ke `icontains` jika dihilangkan): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- Pengetikan nilai**: JSON dicoba terlebih dahulu (sehingga Anda dapat " -"mengoper daftar/diktat), `true`/`false` untuk boolean, bilangan bulat, " -"float; jika tidak, maka akan diperlakukan sebagai string. \n" -"- **Base64**: awalan dengan `b64-` untuk menyandikan base64 yang aman bagi " -"URL untuk menyandikan nilai mentah. \n" +"- **Metode** (default ke `icontains` jika dihilangkan): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- Pengetikan nilai**: JSON dicoba terlebih dahulu (sehingga Anda dapat mengoper daftar/diktat), `true`/`false` untuk boolean, bilangan bulat, float; jika tidak, maka akan diperlakukan sebagai string. \n" +"- **Base64**: awalan dengan `b64-` untuk menyandikan base64 yang aman bagi URL untuk menyandikan nilai mentah. \n" "Contoh: \n" -"`warna=merah-pasti`, `ukuran=gt-10`, `fitur=dalam-[\"wifi\", " -"\"bluetooth\"]`,\n" +"`warna=merah-pasti`, `ukuran=gt-10`, `fitur=dalam-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description = berisi-aGVhdC1jb2xk`" #: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 @@ -675,14 +669,11 @@ msgstr "UUID Produk (persis)" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Daftar bidang yang dipisahkan koma untuk mengurutkan. Awalan dengan `-` " -"untuk mengurutkan. \n" -"**Diizinkan:** uuid, peringkat, nama, siput, dibuat, dimodifikasi, harga, " -"acak" +"Daftar bidang yang dipisahkan koma untuk mengurutkan. Awalan dengan `-` untuk mengurutkan. \n" +"**Diizinkan:** uuid, peringkat, nama, siput, dibuat, dimodifikasi, harga, acak" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "retrieve a single product (detailed view)" @@ -695,9 +686,6 @@ msgid "Product UUID or slug" msgstr "UUID Produk atau Siput" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Membuat produk" @@ -757,7 +745,8 @@ msgstr "Masukan alamat pelengkapan otomatis" #: engine/core/docs/drf/viewsets.py:848 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -"String kueri data mentah, harap tambahkan dengan data dari titik akhir geo-IP" +"String kueri data mentah, harap tambahkan dengan data dari titik akhir geo-" +"IP" #: engine/core/docs/drf/viewsets.py:855 msgid "limit the results amount, 1 < limit < 10, default: 5" @@ -1017,8 +1006,8 @@ msgstr "" "Menulis ulang beberapa bidang dari kategori yang sudah ada sehingga tidak " "dapat diedit" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Tidak ada istilah pencarian yang disediakan." @@ -1027,8 +1016,8 @@ msgstr "Tidak ada istilah pencarian yang disediakan." msgid "Search" msgstr "Pencarian" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1074,8 +1063,8 @@ msgid "Quantity" msgstr "Kuantitas" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Siput" @@ -1091,7 +1080,7 @@ msgstr "Sertakan sub-kategori" msgid "Include personal ordered" msgstr "Menyertakan produk pesanan pribadi" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1112,12 +1101,12 @@ msgid "Bought before (inclusive)" msgstr "Membeli sebelumnya (inklusif)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "Email pengguna" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "UUID Pengguna" @@ -1141,253 +1130,254 @@ msgstr "Seluruh kategori (memiliki setidaknya 1 produk atau tidak)" msgid "Level" msgstr "Tingkat" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "UUID Produk" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Kunci yang harus dicari di dalam atau diatur ke dalam cache" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Data yang akan disimpan dalam cache" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Batas waktu dalam detik untuk mengatur data ke dalam cache" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Data yang di-cache" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Data JSON yang di-camel dari URL yang diminta" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Hanya URL yang dimulai dengan http(s):// yang diperbolehkan" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Menambahkan produk ke pesanan" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Pesanan {order_uuid} tidak ditemukan!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Menghapus produk dari pesanan" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Hapus semua produk dari pesanan" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Beli pesanan" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Harap berikan order_uuid atau order_hr_id - tidak boleh lebih dari satu!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Tipe yang salah berasal dari metode order.buy(): {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Melakukan tindakan pada daftar produk dalam pesanan" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Hapus/Tambah" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Tindakan harus berupa \"tambah\" atau \"hapus\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Melakukan tindakan pada daftar produk dalam daftar keinginan" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Berikan nilai `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} tidak ditemukan!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Menambahkan produk ke pesanan" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Menghapus produk dari pesanan" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Menghapus produk dari pesanan" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Menghapus produk dari pesanan" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Beli pesanan" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Kirimkan atribut dalam bentuk string seperti attr1 = nilai1, attr2 = nilai2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Menambah atau menghapus umpan balik untuk pesananproduk" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Tindakan harus berupa `menambahkan` atau `menghapus`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Orderproduct {order_product_uuid} tidak ditemukan!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "String alamat asli yang diberikan oleh pengguna" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} tidak ada: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Batas harus antara 1 dan 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - bekerja dengan sangat baik" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Atribut" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Atribut yang dikelompokkan" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Kelompok atribut" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Kategori" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Merek" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Kategori" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Persentase Markup" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Atribut dan nilai mana yang dapat digunakan untuk memfilter kategori ini." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Harga minimum dan maksimum untuk produk dalam kategori ini, jika tersedia." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Tag untuk kategori ini" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Produk dalam kategori ini" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Vendor" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Lintang (koordinat Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Bujur (koordinat X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Bagaimana cara" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Nilai penilaian dari 1 hingga 10, inklusif, atau 0 jika tidak ditetapkan." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Merupakan umpan balik dari pengguna." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Pemberitahuan" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Unduh url untuk produk pesanan ini jika ada" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Umpan balik" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Daftar produk pesanan dalam urutan ini" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Alamat penagihan" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1395,53 +1385,53 @@ msgstr "" "Alamat pengiriman untuk pesanan ini, kosongkan jika sama dengan alamat " "penagihan atau jika tidak berlaku" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Total harga pesanan ini" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Jumlah total produk yang dipesan" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Apakah semua produk dalam pesanan digital" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transaksi untuk pesanan ini" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Pesanan" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "URL gambar" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Gambar produk" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Kategori" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Umpan balik" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Merek" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Kelompok atribut" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1449,7 +1439,7 @@ msgstr "Kelompok atribut" msgid "price" msgstr "Harga" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1457,39 +1447,39 @@ msgstr "Harga" msgid "quantity" msgstr "Kuantitas" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Jumlah umpan balik" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Produk hanya tersedia untuk pesanan pribadi" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Harga diskon" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Produk" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Kode promosi" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Produk yang dijual" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Promosi" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Vendor" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1497,99 +1487,100 @@ msgstr "Vendor" msgid "product" msgstr "Produk" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Produk yang diinginkan" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Daftar keinginan" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Produk yang ditandai" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Label produk" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Kategori yang ditandai" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Tag kategori" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Nama proyek" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Nama Perusahaan" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Alamat Perusahaan" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Nomor Telepon Perusahaan" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -"'email from', terkadang harus digunakan sebagai pengganti nilai pengguna host" +"'email from', terkadang harus digunakan sebagai pengganti nilai pengguna " +"host" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Pengguna host email" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Jumlah maksimum untuk pembayaran" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Jumlah minimum untuk pembayaran" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Data analisis" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Data iklan" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Konfigurasi" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Kode bahasa" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Nama bahasa" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Bendera bahasa, jika ada :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Dapatkan daftar bahasa yang didukung" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Hasil pencarian produk" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Hasil pencarian produk" @@ -1602,27 +1593,27 @@ msgid "" msgstr "" "Mewakili sekelompok atribut, yang dapat berupa hirarki. Kelas ini digunakan " "untuk mengelola dan mengatur grup atribut. Sebuah grup atribut dapat " -"memiliki grup induk, membentuk struktur hirarki. Hal ini dapat berguna untuk " -"mengkategorikan dan mengelola atribut secara lebih efektif dalam sistem yang " -"kompleks." +"memiliki grup induk, membentuk struktur hirarki. Hal ini dapat berguna untuk" +" mengkategorikan dan mengelola atribut secara lebih efektif dalam sistem " +"yang kompleks." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Induk dari grup ini" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Grup atribut induk" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Nama grup atribut" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Kelompok atribut" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1634,56 +1625,56 @@ msgid "" msgstr "" "Mewakili entitas vendor yang mampu menyimpan informasi tentang vendor " "eksternal dan persyaratan interaksinya. Kelas Vendor digunakan untuk " -"mendefinisikan dan mengelola informasi yang terkait dengan vendor eksternal. " -"Kelas ini menyimpan nama vendor, detail otentikasi yang diperlukan untuk " +"mendefinisikan dan mengelola informasi yang terkait dengan vendor eksternal." +" Kelas ini menyimpan nama vendor, detail otentikasi yang diperlukan untuk " "komunikasi, dan persentase markup yang diterapkan pada produk yang diambil " "dari vendor. Model ini juga menyimpan metadata dan batasan tambahan, " "sehingga cocok untuk digunakan dalam sistem yang berinteraksi dengan vendor " "pihak ketiga." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Menyimpan kredensial dan titik akhir yang diperlukan untuk komunikasi API " "vendor" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Info otentikasi" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "Tentukan markup untuk produk yang diambil dari vendor ini" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Persentase markup vendor" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Nama vendor ini" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Nama vendor" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "file tanggapan" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "tanggapan pemrosesan terakhir dari vendor" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Jalur file integrasi vendor" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Jalur integrasi" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1694,50 +1685,50 @@ msgstr "" "Merupakan tag produk yang digunakan untuk mengklasifikasikan atau " "mengidentifikasi produk. Kelas ProductTag dirancang untuk mengidentifikasi " "dan mengklasifikasikan produk secara unik melalui kombinasi pengenal tag " -"internal dan nama tampilan yang mudah digunakan. Kelas ini mendukung operasi " -"yang diekspor melalui mixin dan menyediakan penyesuaian metadata untuk " +"internal dan nama tampilan yang mudah digunakan. Kelas ini mendukung operasi" +" yang diekspor melalui mixin dan menyediakan penyesuaian metadata untuk " "tujuan administratif." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Pengidentifikasi tag internal untuk tag produk" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Nama tag" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Nama yang mudah digunakan untuk label produk" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Nama tampilan tag" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Label produk" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -"Merupakan tag kategori yang digunakan untuk produk. Kelas ini memodelkan tag " -"kategori yang dapat digunakan untuk mengaitkan dan mengklasifikasikan " +"Merupakan tag kategori yang digunakan untuk produk. Kelas ini memodelkan tag" +" kategori yang dapat digunakan untuk mengaitkan dan mengklasifikasikan " "produk. Kelas ini mencakup atribut untuk pengenal tag internal dan nama " "tampilan yang mudah digunakan." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "tag kategori" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "tag kategori" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1751,114 +1742,115 @@ msgid "" msgstr "" "Merupakan entitas kategori untuk mengatur dan mengelompokkan item terkait " "dalam struktur hierarki. Kategori dapat memiliki hubungan hierarkis dengan " -"kategori lain, yang mendukung hubungan induk-anak. Kelas ini mencakup bidang " -"untuk metadata dan representasi visual, yang berfungsi sebagai fondasi untuk " -"fitur-fitur terkait kategori. Kelas ini biasanya digunakan untuk " +"kategori lain, yang mendukung hubungan induk-anak. Kelas ini mencakup bidang" +" untuk metadata dan representasi visual, yang berfungsi sebagai fondasi " +"untuk fitur-fitur terkait kategori. Kelas ini biasanya digunakan untuk " "mendefinisikan dan mengelola kategori produk atau pengelompokan serupa " "lainnya dalam aplikasi, yang memungkinkan pengguna atau administrator " "menentukan nama, deskripsi, dan hierarki kategori, serta menetapkan atribut " "seperti gambar, tag, atau prioritas." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Unggah gambar yang mewakili kategori ini" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Kategori gambar" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Tentukan persentase markup untuk produk dalam kategori ini" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Induk dari kategori ini untuk membentuk struktur hirarki" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Kategori induk" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Nama kategori" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Berikan nama untuk kategori ini" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Tambahkan deskripsi terperinci untuk kategori ini" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Deskripsi kategori" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "tag yang membantu mendeskripsikan atau mengelompokkan kategori ini" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Prioritas" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"Mewakili objek Merek dalam sistem. Kelas ini menangani informasi dan atribut " -"yang terkait dengan merek, termasuk nama, logo, deskripsi, kategori terkait, " -"siput unik, dan urutan prioritas. Kelas ini memungkinkan pengaturan dan " -"representasi data yang terkait dengan merek di dalam aplikasi." +"Mewakili objek Merek dalam sistem. Kelas ini menangani informasi dan atribut" +" yang terkait dengan merek, termasuk nama, logo, deskripsi, kategori " +"terkait, siput unik, dan urutan prioritas. Kelas ini memungkinkan pengaturan" +" dan representasi data yang terkait dengan merek di dalam aplikasi." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Nama merek ini" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Nama merek" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Unggah logo yang mewakili merek ini" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Merek gambar kecil" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Unggah logo besar yang mewakili merek ini" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Citra besar merek" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Tambahkan deskripsi terperinci tentang merek" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Deskripsi merek" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Kategori opsional yang dikaitkan dengan merek ini" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Kategori" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1866,77 +1858,77 @@ msgid "" msgstr "" "Mewakili stok produk yang dikelola dalam sistem. Kelas ini memberikan " "rincian tentang hubungan antara vendor, produk, dan informasi stok mereka, " -"serta properti terkait inventaris seperti harga, harga pembelian, kuantitas, " -"SKU, dan aset digital. Ini adalah bagian dari sistem manajemen inventaris " -"untuk memungkinkan pelacakan dan evaluasi produk yang tersedia dari berbagai " -"vendor." +"serta properti terkait inventaris seperti harga, harga pembelian, kuantitas," +" SKU, dan aset digital. Ini adalah bagian dari sistem manajemen inventaris " +"untuk memungkinkan pelacakan dan evaluasi produk yang tersedia dari berbagai" +" vendor." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Vendor yang memasok stok produk ini" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Vendor terkait" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Harga akhir kepada pelanggan setelah markup" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Harga jual" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Produk yang terkait dengan entri saham ini" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Produk terkait" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Harga yang dibayarkan kepada vendor untuk produk ini" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Harga pembelian vendor" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Jumlah produk yang tersedia dalam stok" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Jumlah dalam stok" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU yang ditetapkan vendor untuk mengidentifikasi produk" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "SKU Vendor" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "File digital yang terkait dengan saham ini jika ada" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "File digital" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Atribut sistem" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Entri saham" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1947,214 +1939,222 @@ msgid "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." msgstr "" -"Merepresentasikan produk dengan atribut seperti kategori, merek, tag, status " -"digital, nama, deskripsi, nomor komponen, dan siput. Menyediakan properti " +"Merepresentasikan produk dengan atribut seperti kategori, merek, tag, status" +" digital, nama, deskripsi, nomor komponen, dan siput. Menyediakan properti " "utilitas terkait untuk mengambil peringkat, jumlah umpan balik, harga, " "kuantitas, dan total pesanan. Dirancang untuk digunakan dalam sistem yang " "menangani e-commerce atau manajemen inventaris. Kelas ini berinteraksi " -"dengan model terkait (seperti Kategori, Merek, dan ProductTag) dan mengelola " -"cache untuk properti yang sering diakses untuk meningkatkan kinerja. Kelas " +"dengan model terkait (seperti Kategori, Merek, dan ProductTag) dan mengelola" +" cache untuk properti yang sering diakses untuk meningkatkan kinerja. Kelas " "ini digunakan untuk mendefinisikan dan memanipulasi data produk dan " "informasi terkait di dalam aplikasi." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Kategori produk ini termasuk dalam" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Secara opsional mengaitkan produk ini dengan merek" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Tag yang membantu mendeskripsikan atau mengelompokkan produk ini" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Menunjukkan apakah produk ini dikirimkan secara digital" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Apakah produk digital" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "menunjukkan apakah produk ini harus diperbarui dari tugas berkala" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "adalah produk yang dapat diperbarui" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Berikan nama pengenal yang jelas untuk produk" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Nama produk" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Menambahkan deskripsi rinci tentang produk" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Deskripsi produk" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Nomor komponen untuk produk ini" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Nomor bagian" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Unit Penyimpanan Stok untuk produk ini" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"Merupakan atribut dalam sistem. Kelas ini digunakan untuk mendefinisikan dan " -"mengelola atribut, yang merupakan bagian data yang dapat disesuaikan yang " +"Merupakan atribut dalam sistem. Kelas ini digunakan untuk mendefinisikan dan" +" mengelola atribut, yang merupakan bagian data yang dapat disesuaikan yang " "dapat dikaitkan dengan entitas lain. Atribut memiliki kategori, grup, tipe " "nilai, dan nama yang terkait. Model ini mendukung berbagai jenis nilai, " "termasuk string, integer, float, boolean, array, dan objek. Hal ini " "memungkinkan penataan data yang dinamis dan fleksibel." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Kelompok atribut ini" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "String" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Bilangan bulat" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Mengapung" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Boolean" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Array" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Objek" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Jenis nilai atribut" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Jenis nilai" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Nama atribut ini" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Nama atribut" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "dapat disaring" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Atribut dan nilai mana yang dapat digunakan untuk memfilter kategori ini." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Atribut" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Mewakili nilai spesifik untuk atribut yang terkait dengan produk. Ini " "menghubungkan 'atribut' dengan 'nilai' yang unik, memungkinkan pengaturan " "yang lebih baik dan representasi karakteristik produk yang dinamis." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Atribut dari nilai ini" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Produk spesifik yang terkait dengan nilai atribut ini" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Nilai spesifik untuk atribut ini" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Mewakili gambar produk yang terkait dengan produk dalam sistem. Kelas ini " -"dirancang untuk mengelola gambar untuk produk, termasuk fungsionalitas untuk " -"mengunggah file gambar, mengasosiasikannya dengan produk tertentu, dan " +"dirancang untuk mengelola gambar untuk produk, termasuk fungsionalitas untuk" +" mengunggah file gambar, mengasosiasikannya dengan produk tertentu, dan " "menentukan urutan tampilannya. Kelas ini juga mencakup fitur aksesibilitas " "dengan teks alternatif untuk gambar." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Menyediakan teks alternatif untuk gambar agar mudah diakses" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Teks alt gambar" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Unggah file gambar untuk produk ini" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Gambar produk" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Menentukan urutan gambar yang ditampilkan" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Prioritas tampilan" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Produk yang diwakili oleh gambar ini" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Gambar produk" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Merupakan kampanye promosi untuk produk dengan diskon. Kelas ini digunakan " "untuk mendefinisikan dan mengelola kampanye promosi yang menawarkan diskon " @@ -2163,39 +2163,39 @@ msgstr "" "produk yang berlaku. Kelas ini terintegrasi dengan katalog produk untuk " "menentukan item yang terpengaruh dalam kampanye." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Persentase diskon untuk produk yang dipilih" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Persentase diskon" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Berikan nama unik untuk promosi ini" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Nama promosi" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Deskripsi promosi" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Pilih produk mana yang termasuk dalam promosi ini" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Produk yang disertakan" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Promosi" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2208,30 +2208,30 @@ msgstr "" "serta mendukung operasi untuk menambah dan menghapus beberapa produk " "sekaligus." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Produk yang telah ditandai pengguna sebagai yang diinginkan" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Pengguna yang memiliki daftar keinginan ini" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Pemilik Wishlist" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Daftar keinginan" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Merupakan catatan dokumenter yang terkait dengan suatu produk. Kelas ini " "digunakan untuk menyimpan informasi tentang film dokumenter yang terkait " @@ -2240,28 +2240,28 @@ msgstr "" "untuk file dokumenter. Kelas ini memperluas fungsionalitas dari mixin " "tertentu dan menyediakan fitur khusus tambahan." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Dokumenter" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Dokumenter" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Belum terselesaikan" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Mewakili entitas alamat yang mencakup detail lokasi dan asosiasi dengan " "pengguna. Menyediakan fungsionalitas untuk penyimpanan data geografis dan " @@ -2273,59 +2273,59 @@ msgstr "" "memungkinkan untuk mengasosiasikan alamat dengan pengguna, sehingga " "memudahkan penanganan data yang dipersonalisasi." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Baris alamat untuk pelanggan" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Baris alamat" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Jalan" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Distrik" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Kota" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Wilayah" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Kode pos" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Negara" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Titik Geolokasi (Bujur, Lintang)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Tanggapan JSON lengkap dari geocoder untuk alamat ini" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Respons JSON yang tersimpan dari layanan geocoding" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Alamat" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Alamat" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2335,78 +2335,78 @@ msgid "" "apply the promo code to an order while ensuring constraints are met." msgstr "" "Mewakili kode promosi yang dapat digunakan untuk diskon, mengelola " -"validitas, jenis diskon, dan penerapannya. Kelas PromoCode menyimpan rincian " -"tentang kode promosi, termasuk pengenal unik, properti diskon (jumlah atau " +"validitas, jenis diskon, dan penerapannya. Kelas PromoCode menyimpan rincian" +" tentang kode promosi, termasuk pengenal unik, properti diskon (jumlah atau " "persentase), masa berlaku, pengguna terkait (jika ada), dan status " "penggunaannya. Ini termasuk fungsionalitas untuk memvalidasi dan menerapkan " "kode promo ke pesanan sambil memastikan batasan terpenuhi." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Kode unik yang digunakan oleh pengguna untuk menukarkan diskon" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Pengenal kode promo" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Jumlah diskon tetap berlaku jika persen tidak digunakan" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Jumlah diskon tetap" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Persentase diskon diterapkan jika jumlah tetap tidak digunakan" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Persentase diskon" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Cap waktu saat kode promo berakhir" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Akhiri waktu validitas" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Stempel waktu dari mana kode promo ini valid" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Mulai waktu validitas" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Stempel waktu ketika promocode digunakan, kosongkan jika belum digunakan" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Cap waktu penggunaan" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Pengguna yang ditugaskan ke kode promo ini jika berlaku" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Pengguna yang ditugaskan" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Kode promo" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Kode promo" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2414,21 +2414,21 @@ msgstr "" "Hanya satu jenis diskon yang harus ditentukan (jumlah atau persen), tetapi " "tidak boleh keduanya atau tidak sama sekali." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Promocode telah digunakan" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Jenis diskon tidak valid untuk kode promo {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2440,145 +2440,145 @@ msgstr "" "Fungsionalitas yang sama juga mendukung pengelolaan produk dalam siklus " "hidup pesanan." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Alamat penagihan yang digunakan untuk pesanan ini" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Kode promo opsional berlaku untuk pesanan ini" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Kode promo yang diterapkan" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Alamat pengiriman yang digunakan untuk pesanan ini" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Alamat pengiriman" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Status pesanan saat ini dalam siklus hidupnya" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Status pesanan" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" -"Struktur JSON dari notifikasi untuk ditampilkan kepada pengguna, di UI admin " -"digunakan table-view" +"Struktur JSON dari notifikasi untuk ditampilkan kepada pengguna, di UI admin" +" digunakan table-view" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "Representasi JSON dari atribut pesanan untuk pesanan ini" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "Pengguna yang melakukan pemesanan" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Pengguna" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Stempel waktu saat pesanan diselesaikan" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Beli waktu" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Pengenal yang dapat dibaca manusia untuk pesanan" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "ID yang dapat dibaca manusia" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Pesan" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "" "Seorang pengguna hanya boleh memiliki satu pending order dalam satu waktu!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Anda tidak dapat menambahkan produk ke pesanan yang bukan merupakan pesanan " "yang tertunda" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Anda tidak dapat menambahkan produk yang tidak aktif ke dalam pesanan" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "" "Anda tidak dapat menambahkan lebih banyak produk daripada yang tersedia " "dalam stok" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Anda tidak dapat menghapus produk dari pesanan yang bukan merupakan pesanan " "yang tertunda" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} tidak ada dengan kueri <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Kode promosi tidak ada" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" "Anda hanya dapat membeli produk fisik dengan alamat pengiriman yang " "ditentukan!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Alamat tidak ada" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Anda tidak dapat membeli saat ini, silakan coba lagi dalam beberapa menit." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Nilai gaya tidak valid" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Anda tidak dapat membeli pesanan kosong!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "Anda tidak dapat membeli pesanan tanpa pengguna!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Pengguna tanpa saldo tidak dapat membeli dengan saldo!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Dana tidak mencukupi untuk menyelesaikan pesanan" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2586,7 +2586,7 @@ msgstr "" "Anda tidak dapat membeli tanpa registrasi, berikan informasi berikut: nama " "pelanggan, email pelanggan, nomor telepon pelanggan" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -2594,7 +2594,7 @@ msgstr "" "Metode pembayaran tidak valid: {payment_method} dari " "{available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2609,32 +2609,33 @@ msgstr "" "ditetapkan pengguna. Kelas ini menggunakan bidang basis data untuk " "memodelkan dan mengelola data umpan balik secara efektif." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "" "Komentar yang diberikan pengguna tentang pengalaman mereka dengan produk" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Komentar umpan balik" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "Merujuk ke produk tertentu sesuai dengan urutan umpan balik ini" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Produk pesanan terkait" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Peringkat yang ditetapkan pengguna untuk produk" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Peringkat produk" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2651,122 +2652,122 @@ msgstr "" "pesanan, termasuk rincian seperti harga pembelian, kuantitas, atribut " "produk, dan status. Model ini mengelola notifikasi untuk pengguna dan " "administrator dan menangani operasi seperti mengembalikan saldo produk atau " -"menambahkan umpan balik. Model ini juga menyediakan metode dan properti yang " -"mendukung logika bisnis, seperti menghitung harga total atau menghasilkan " +"menambahkan umpan balik. Model ini juga menyediakan metode dan properti yang" +" mendukung logika bisnis, seperti menghitung harga total atau menghasilkan " "URL unduhan untuk produk digital. Model ini terintegrasi dengan model " "Pesanan dan Produk dan menyimpan referensi ke keduanya." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "" "Harga yang dibayarkan oleh pelanggan untuk produk ini pada saat pembelian" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Harga pembelian pada saat pemesanan" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Komentar internal untuk admin tentang produk yang dipesan ini" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Komentar internal" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Pemberitahuan pengguna" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "Representasi JSON dari atribut item ini" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Atribut produk yang dipesan" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Referensi ke pesanan induk yang berisi produk ini" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Urutan induk" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Produk spesifik yang terkait dengan baris pesanan ini" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Jumlah produk spesifik ini dalam pesanan" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Kuantitas produk" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Status saat ini dari produk ini dalam pesanan" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Status lini produk" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Pesananproduk harus memiliki pesanan terkait!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Tindakan yang salah ditentukan untuk umpan balik: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "" "Anda tidak dapat memberikan umpan balik atas pesanan yang tidak diterima" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Nama" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL integrasi" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Kredensial otentikasi" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Anda hanya dapat memiliki satu penyedia CRM default" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Tautan CRM pesanan" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Tautan CRM Pesanan" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Mewakili fungsionalitas pengunduhan untuk aset digital yang terkait dengan " "pesanan. Kelas DigitalAssetDownload menyediakan kemampuan untuk mengelola " @@ -2776,11 +2777,11 @@ msgstr "" "untuk menghasilkan URL untuk mengunduh aset ketika pesanan terkait dalam " "status selesai." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Unduh" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Unduhan" @@ -2981,8 +2982,7 @@ msgstr "Halo %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Terima kasih atas pesanan Anda #%(order.pk)s! Dengan senang hati kami " @@ -3091,15 +3091,13 @@ msgid "" "Thank you for staying with us! We have granted you with a promocode\n" " for " msgstr "" -"Terima kasih telah tinggal bersama kami! Kami telah memberikan Anda kode " -"promo\n" +"Terima kasih telah tinggal bersama kami! Kami telah memberikan Anda kode promo\n" " untuk" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Terima kasih atas pesanan Anda! Dengan senang hati kami mengkonfirmasi " @@ -3130,11 +3128,11 @@ msgstr "" "Semua hak cipta\n" " dilindungi undang-undang" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Data dan batas waktu diperlukan" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Nilai batas waktu tidak valid, harus antara 0 dan 216000 detik" @@ -3166,13 +3164,13 @@ msgstr "Anda tidak memiliki izin untuk melakukan tindakan ini." msgid "NOMINATIM_URL must be configured." msgstr "Parameter NOMINATIM_URL harus dikonfigurasi!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Dimensi gambar tidak boleh melebihi w{max_width} x h{max_height} piksel!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3180,7 +3178,7 @@ msgstr "" "Menangani permintaan indeks peta situs dan mengembalikan respons XML. " "Memastikan respons menyertakan header jenis konten yang sesuai untuk XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3190,28 +3188,28 @@ msgstr "" "permintaan, mengambil respons detail peta situs yang sesuai, dan menetapkan " "header Jenis Konten untuk XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Mengembalikan daftar bahasa yang didukung dan informasi terkait." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Mengembalikan parameter situs web sebagai objek JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"Menangani operasi cache seperti membaca dan mengatur data cache dengan kunci " -"dan batas waktu tertentu." +"Menangani operasi cache seperti membaca dan mengatur data cache dengan kunci" +" dan batas waktu tertentu." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Menangani pengiriman formulir `hubungi kami`." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3219,66 +3217,58 @@ msgstr "" "Menangani permintaan untuk memproses dan memvalidasi URL dari permintaan " "POST yang masuk." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Menangani kueri penelusuran global." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Menangani logika pembelian sebagai bisnis tanpa registrasi." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Menangani pengunduhan aset digital yang terkait dengan pesanan.\n" -"Fungsi ini mencoba untuk menyajikan file aset digital yang terletak di " -"direktori penyimpanan proyek. Jika file tidak ditemukan, kesalahan HTTP 404 " -"akan muncul untuk mengindikasikan bahwa sumber daya tidak tersedia." +"Fungsi ini mencoba untuk menyajikan file aset digital yang terletak di direktori penyimpanan proyek. Jika file tidak ditemukan, kesalahan HTTP 404 akan muncul untuk mengindikasikan bahwa sumber daya tidak tersedia." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid diperlukan" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "produk pesanan tidak ada" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Anda hanya dapat mengunduh aset digital sekali saja" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "pesanan harus dibayar sebelum mengunduh aset digital" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Produk pesanan tidak memiliki produk" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon tidak ditemukan" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Menangani permintaan favicon dari sebuah situs web.\n" -"Fungsi ini mencoba menyajikan file favicon yang terletak di direktori statis " -"proyek. Jika file favicon tidak ditemukan, kesalahan HTTP 404 akan " -"dimunculkan untuk mengindikasikan bahwa sumber daya tidak tersedia." +"Fungsi ini mencoba menyajikan file favicon yang terletak di direktori statis proyek. Jika file favicon tidak ditemukan, kesalahan HTTP 404 akan dimunculkan untuk mengindikasikan bahwa sumber daya tidak tersedia." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Mengalihkan permintaan ke halaman indeks admin. Fungsi ini menangani " @@ -3286,16 +3276,16 @@ msgstr "" "admin Django. Fungsi ini menggunakan fungsi `redirect` Django untuk " "menangani pengalihan HTTP." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Mengembalikan versi eVibes saat ini." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Pendapatan & Pesanan (terakhir %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Mengembalikan variabel khusus untuk Dasbor." @@ -3315,10 +3305,11 @@ msgstr "" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Mewakili sebuah viewset untuk mengelola objek AttributeGroup. Menangani " "operasi yang terkait dengan AttributeGroup, termasuk pemfilteran, " @@ -3347,11 +3338,11 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"Sebuah viewset untuk mengelola objek AttributeValue. Viewset ini menyediakan " -"fungsionalitas untuk mendaftarkan, mengambil, membuat, memperbarui, dan " +"Sebuah viewset untuk mengelola objek AttributeValue. Viewset ini menyediakan" +" fungsionalitas untuk mendaftarkan, mengambil, membuat, memperbarui, dan " "menghapus objek AttributeValue. Ini terintegrasi dengan mekanisme viewset " "Django REST Framework dan menggunakan serializer yang sesuai untuk tindakan " "yang berbeda. Kemampuan pemfilteran disediakan melalui DjangoFilterBackend." @@ -3365,10 +3356,10 @@ msgid "" "can access specific data." msgstr "" "Mengelola tampilan untuk operasi terkait Kategori. Kelas CategoryViewSet " -"bertanggung jawab untuk menangani operasi yang terkait dengan model Kategori " -"dalam sistem. Kelas ini mendukung pengambilan, pemfilteran, dan serialisasi " -"data kategori. ViewSet juga memberlakukan izin untuk memastikan bahwa hanya " -"pengguna yang memiliki izin yang dapat mengakses data tertentu." +"bertanggung jawab untuk menangani operasi yang terkait dengan model Kategori" +" dalam sistem. Kelas ini mendukung pengambilan, pemfilteran, dan serialisasi" +" data kategori. ViewSet juga memberlakukan izin untuk memastikan bahwa hanya" +" pengguna yang memiliki izin yang dapat mengakses data tertentu." #: engine/core/viewsets.py:346 msgid "" @@ -3379,8 +3370,8 @@ msgid "" msgstr "" "Mewakili sebuah viewset untuk mengelola instance Brand. Kelas ini " "menyediakan fungsionalitas untuk melakukan kueri, penyaringan, dan " -"serialisasi objek Brand. Kelas ini menggunakan kerangka kerja ViewSet Django " -"untuk menyederhanakan implementasi titik akhir API untuk objek Brand." +"serialisasi objek Brand. Kelas ini menggunakan kerangka kerja ViewSet Django" +" untuk menyederhanakan implementasi titik akhir API untuk objek Brand." #: engine/core/viewsets.py:458 msgid "" @@ -3393,11 +3384,11 @@ msgid "" "product." msgstr "" "Mengelola operasi yang terkait dengan model `Product` dalam sistem. Kelas " -"ini menyediakan sebuah viewset untuk mengelola produk, termasuk pemfilteran, " -"serialisasi, dan operasi pada instance tertentu. Kelas ini diperluas dari " +"ini menyediakan sebuah viewset untuk mengelola produk, termasuk pemfilteran," +" serialisasi, dan operasi pada instance tertentu. Kelas ini diperluas dari " "`EvibesViewSet` untuk menggunakan fungsionalitas umum dan terintegrasi " -"dengan kerangka kerja Django REST untuk operasi RESTful API. Termasuk metode " -"untuk mengambil detail produk, menerapkan izin, dan mengakses umpan balik " +"dengan kerangka kerja Django REST untuk operasi RESTful API. Termasuk metode" +" untuk mengambil detail produk, menerapkan izin, dan mengakses umpan balik " "terkait produk." #: engine/core/viewsets.py:605 @@ -3420,15 +3411,15 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Representasi set tampilan yang menangani objek Umpan Balik. Kelas ini " "mengelola operasi yang terkait dengan objek Umpan Balik, termasuk " "mendaftarkan, memfilter, dan mengambil detail. Tujuan dari set tampilan ini " -"adalah untuk menyediakan serializer yang berbeda untuk tindakan yang berbeda " -"dan mengimplementasikan penanganan berbasis izin untuk objek Umpan Balik " +"adalah untuk menyediakan serializer yang berbeda untuk tindakan yang berbeda" +" dan mengimplementasikan penanganan berbasis izin untuk objek Umpan Balik " "yang dapat diakses. Kelas ini memperluas `EvibesViewSet` dasar dan " "menggunakan sistem penyaringan Django untuk meminta data." @@ -3437,9 +3428,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet untuk mengelola pesanan dan operasi terkait. Kelas ini menyediakan " @@ -3455,8 +3446,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Menyediakan viewset untuk mengelola entitas OrderProduct. Viewset ini " @@ -3489,17 +3480,17 @@ msgstr "Menangani operasi yang terkait dengan data Stok di dalam sistem." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" "ViewSet untuk mengelola operasi Wishlist. WishlistViewSet menyediakan titik " -"akhir untuk berinteraksi dengan daftar keinginan pengguna, yang memungkinkan " -"pengambilan, modifikasi, dan penyesuaian produk dalam daftar keinginan. " -"ViewSet ini memfasilitasi fungsionalitas seperti menambahkan, menghapus, dan " -"tindakan massal untuk produk daftar keinginan. Pemeriksaan izin " +"akhir untuk berinteraksi dengan daftar keinginan pengguna, yang memungkinkan" +" pengambilan, modifikasi, dan penyesuaian produk dalam daftar keinginan. " +"ViewSet ini memfasilitasi fungsionalitas seperti menambahkan, menghapus, dan" +" tindakan massal untuk produk daftar keinginan. Pemeriksaan izin " "diintegrasikan untuk memastikan bahwa pengguna hanya dapat mengelola daftar " "keinginan mereka sendiri kecuali jika izin eksplisit diberikan." @@ -3511,8 +3502,8 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"Kelas ini menyediakan fungsionalitas viewset untuk mengelola objek `Alamat`. " -"Kelas AddressViewSet memungkinkan operasi CRUD, pemfilteran, dan tindakan " +"Kelas ini menyediakan fungsionalitas viewset untuk mengelola objek `Alamat`." +" Kelas AddressViewSet memungkinkan operasi CRUD, pemfilteran, dan tindakan " "khusus yang terkait dengan entitas alamat. Kelas ini mencakup perilaku " "khusus untuk metode HTTP yang berbeda, penggantian serializer, dan " "penanganan izin berdasarkan konteks permintaan." diff --git a/engine/core/locale/it_IT/LC_MESSAGES/django.mo b/engine/core/locale/it_IT/LC_MESSAGES/django.mo index b27b7c61173d92c6e82f05909e6bcfbc5c45d409..53ddb898faf0c455578407a059d7b36090077a21 100644 GIT binary patch delta 14879 zcmYk?2Yk)f|HtujLu_L2agBsXti&D_d&Y=Oj6{Oeh(@d`SJ7HkGxn;jt*Wi4*-}&& zI?UR?s!>W+wftZ2dyfA5eLRlm`J8jU-|zXJ@x3>ReU}11_&LybDR=rb!|{HAF-37u zK4WI4GiG0Tl^XMBO=I%nQ|#?ACPyt}s5V1t8r*E2xe<&OdLjHaZJOp9%Hs+w2w?gV`FMiF}{g0?Ql2#fti~cvjt5vo{)B1 zu|DDc=5|D$BSUEBwy-x|h#LC$F+U!`AUube@iuCNA7KG}fj;%TKuddKF;v6q*Z`yO z05_h1orxQ^Hl_>lB5Z^YqHX(XZLRfDBhmtkVlUJbjlq&Q6V>4@s1e-Rmhsoz?V&(J zb`&*aXD}3>q2@4{VabLSP#3K2Y=b3;@jwv@}lC9 z80O!9VG7jq+SraKYl~XlD?8Z5wGl59?{INiM`Je9?mZ00Rt!&%0AogVVYq2`rkgRt zDc{_k#fHJL#=g}oSI+CT91W;iK`jAudMslLXXm3)5q2bf zO-I=w?v6~eiN~_I3CrPG)Z%=OUaUUa4q+G6944WLaxkiWDptg0sHyuB3*s5n+}}mD ze`sT$c}hl$@Hr-6`q%CLO+qj6`(x~CK8d=(Rn#KAg<0?c9^r}p#&kUC!Lh6p%0FXj zwT2#I2o@c0OciW|m2o&`(*9pZMo+vMOXCly6Q5x?2ES?RV^HOA^Wm2#Wp1}H8 zXp%9Fu^Z;baP}8yc%Tk9ogyXk76O>bIwPuKF4%>UU5{1s$e+Q!Z7TIy5Afd`^-i%H7PiYwJ^s! z_6eG!o}h~}3Dx5hNk*hj*ho{3WWxmr)&ljJi(X4BM^%s^ejPng1qa)UY>d zEhM8ZGzT-|TFio*u_5lk2>b`LVdZ!2KCg%B$S~9tOh$EhK5A;$V|M%)v*La%sr`S# zHMoP-h#zAW44Y{?&=b|M{uqVRFbGegp6onoRo`{-Bh(Eu%(C@Cs0S&Dp%{jGrFTN# zS~4@p=!D4GcIfJ2RpJ=bwwjEZq8V5Rk75-Jm}BR-DwZRzizP7;LvS+cMjxTx3pX)0 zK1WSmuDR@gFPV_J_Jz<4a}md5G^XMRJdA^});!yx^_YWr6E?+ts3%O9W=A4B>Ns$bM$jMaA9Gi*LB{WmuVbFX}zuyF;clncR!*SE=f##nu^hfzhZBp(Ut}e1cy5 z5j8?jQ7@q2C3XbMV`1XDs5RBa#eJ|D@fcTr#OgC&lF?kAMP2AR=Eq-9PimIhq0fT_ z3Cp6kQIsohgIfLZSP_#@53mrs;a=1f@7W=1 zhV6-8Mcr^8sv}>Z-UAm=b9xPR!#k)OJwlCCrd4)C@}tUwQ4dfH_2f-meHYaA`>kU9 z)gZ++@S$!n3k%^QSH2Ak5PybRbQe(PWm;`t&G|4Nu@`mW>Zmo;5VdByp|*Dl>Qz1o zwQXmv_Sq8`QJ}fp>>BJxZIk2Z#lKM7w8$DeMU7Dx9E&AzCMMu!ERT74t!k?3qaG+0 z)jkm`;z-n@T&MSMBQh6Jb6;|u-6q{pi)Iz-$u^>Td;oRB<5&uRab{a@_j4swc_-8e zjzZ1(98`ynp+?|3_CVi#G9AdY+F-v#u0Xxvu46b>+-OIj2Wl<6ftu^ts2i+6P01%% z1#dVDyl-DnEl?x!nsccuKZdorzqwB)lm_KLu&>&VsMR_N)q$-ThL^D{X8q7kMI@Fd zj&<>5RJ)In3!4jA4-0IvQ_u+`hb!lZ3!cCXcn|fYk5L^9-f7DRIFm68SUXu0h>!3u^W>PbFBjnpsr3g$dupQJ77$vUCdKp#{` z`lFt3Jm$l9Q0-P>aomI@wg0~)qbIwE8L{|5UaJ^_n(H-4LvtFnx*wy~NbN&*aW+CN z-Wb%P8jc#Fsi+5LOuCNoQTUY z0!w{nr>qk;Bp!__--oU6K32y%pWExFU@_uls0Z7N;oRTcCZih{IBMTu4KTsOH(o4E z`FF>78xr5ebi^sg?Gui`?8M_;{4Q!OEksS-R@8`oh5GdT9(Ddb=R@=@rr-}UnQ`_B zyX}^sF0cuC2btrj_rREwcIc;JUgEi^A>V*He;@XtqeoFwRQ8me>&mD#)7JSemLWcM zit+z3fL|<7Fo=Sa-`F9l`K|qxX=l_B?sncsJweEKc4W$9AaN7aZfWK0ie-rtQ6oG9 zgE9MQUS4!C5{KgLGt@SqqR02f^u%SDg^Fj$XqyZ_vN(yqLe25>pZK1L4bItJa~Jay zKg3YXeBO>+Bx)D5MUBh=%!(vLqZ>z~R(%iDn{1YAa1`|< zr=53D`#12Kebbe}DB|{b0Oz1aBIY{l0pGw3SnGy;;Y6Xekilaz5iibU%U83Y4pZKe-YvoGK_34bc4JPD$;SQ7J~FNG zIEG>VTps_bZ-_OBM`J16f*OG{m=15E7SV02f)BAAmdS0)qfu+C6KV>EVjzx0oj(@+ zzyE)e%s>hzV;nvF9d)5jc|HDj_c+wznTJ}%i%=a|i~6PWE^LLK0v`Xj=IBBm|C?|e z>eaplYvL8u0~Idp@lSC~Va7j%f>;VF<3!X6+p!K_#|ZQm@%UG92aF+}j3x1$^KaA$ z6z5mwx=}l9gi}%NPC4&mOX6J2pWcYE#rXS+7F#L>+Q;KCH>ROJwKkyY_hSNnf!(k| zagXVUld%h4K#fS%61F2vQQL78>diR^_3nQU7vKTZw(R2b+Buny`UW%`b;DJtj(muD z@PI2n?c$4Al=25I&Qa3NbtzQG>!BW~1M2)&QP&-Z>c|xIqHi6UU^2&0Lw^_b9w=7I z_Amy+iQh&&(KgJ4r%-F;d(DYJc)WSok!j17t|BvE@Lf2)cxbk7B8;(U?Zw{(sE3v#j9k!6s zg)g9bcoVhS@1p8Lr~jM`pbqF&+mT%0k~-Y68c&7z!LQSFCf z8JrW!{#S!t6qLoUUBf4sg*d3ZwJ^3P4#uiD5;d0}Vs+eu>gWU1NM#JOaRJoSRzSVD zYM{O+G(vqLX&2_R4Q5iH7tSK*S=TTZf80|~i=$rAjZht)g__e1sMUWMwHQyJcE=^u zNZxYs-xx|9Si#=75*{KR;v=KEs$9|T-x}DII0n_zMc5VBVIsc38koqp65VJSMyejQ zxXz*8gn^ZLHDe9bXTY1N5n77s=vMTi@2G2V3$-``s(4IaEQAAaEcV8ms2etoup`hG zV~G2sI=Tl{e+;#~zCm^L3aTT8BJGD;U(^H7MAnSY%qOE0HlyCz2T`jteN~TXfHhE0 zFdEz8Jk&e<25N3ASF>xOHfm~`quv93P}h3{^_g%G=ipOR2i~c!4zd5{lF?#1fLh(B zQ2Y1+YR=Nt@c4f$uYlT)15t}^D%Qe-SP}n1O+{!;`{X@QQLYl^)m%$DnrA zG1SO?hdw>&1v0wOJ=Eg(9W^Bx>)JP1LDY@IP$zbG2>3pEAz>$&~^2L;+LIbN|tUm9~0S3?bXbJVKthZ_2YsE&S(dVp)_#m86*^Vhde zUJG@jZpdOYeNZDe8nt~ttnaf!ca#DxwhOMJc$B?CP1FmeHEM0dqTUDNu|BRvjmQn> zeN@MvVq?tKz<#l5kJ=3rur}_&7WmjlMm?_I(BuD`Zan57-h#T(LDUo6K;7sLYHt5P zJ<$u)zAo6vS`js3jZq^L@5)nA?Wdu(`D)Y@`}Vj7Cs7x^f_k^#Mh$Vs#?VF<(VXQ6pnf_$-1e09FV$`Bpi~3@69>dVn z)MJ`s1q{Uzs2i+Ay%`Uqc1gKrw!RZ;#C)hHo{F0Lm8hvZjjgr+^E9{nxDV>ZvKY0h zZ=i`R=C-MGIwO-47a(8}Zg zZ#JV)J^dOr0s*b7kw!jWC)@9CH&MF;j`55Qt*p&7`9c_7M=St^oXVp%2D#l?f z?T=vxEYq3&-;2zs&h~r#56&uGY&_k0!&$$pEnnpP-5K4@malhuy4xG{K#kaDtbo^0 zBblp*-9-(3WXe;}5%uY%cswpZy%7t>+VTn*NZbUq{aT^6V^7rLOhfIO71#~WVmhqU z(=O&n)b_4}x?f||uJa|6(dYMD&N--`?^mEYv>)~2_#X8Q=|1WW7S_vS)?+^$jX8ST zH82IWy$+#nXMr2$2%sDbzG#TRTqN|6B$6z_!>dMcfUcrUp?P{)v zt%--C7S*Sy4n9Gh7unb2{|iSfYJ_&9-lT_7ANR+xkoNx%WVDYTp!R#g1iNahqv8e_ zg}q(*O6)=W0qRR-#zZ?}d9X8a1nL2%qTYlDQB(69Y7K<+v!5v)F@yGh0vT<$ftVjR zqMr01>cw##^#;t--#%e|)RT-seO63BJ>hKB`(g>^#zW}EGpIH57}cSS1MGEcpsywc z{mAG7D=-x|qK2|~l3irou|4q|)P=93ZuA6o!D6r4cY8FdJ`Ss5Dr$RfL`~IisBK>m<}rp2F3bez5J>1`H>@j?FOF5WA?l;ZWjfsOvq$ zP^_A4zeDyyO~Gi?h^|krV>72+!3*?IQ89pzNYwEi1>I5qL-tGZHhxXV+s<;)x&9|%j9Eh6(1w~+(iB`X+3p1GCFOOs%Hsc8qyw9g;yDqm2@UiJT1l}ePwyGFaPt!wid zE^_&|C~rfW$2o;5n}lDJCQx<+b)<7``;reNrFZdd>Um-L{2MKaiaf630Tm6&=XY@c z@{0BU+Gz#tZj$&|G@&FNH=RE?RrWcFA41G&9LM=@s*vLuWqjiKf3M0XqFK)V_5bJX z9| zDNou%szc#Nc#1|ru7TR$bthe0CZ1dHwSC zaq%$izgrZRBCT|V`l8jI{4-2PdU-tL#A1~9d|7}eDZ5MhowS5F8|g9m=I&a0dF%Vq zBgzK4vi|r5WrazfYyOXu8KFcYz0COz=RXcu{J$r4S#$Pf23xud@?FeKb9q&dC%*_g z{-^9?Rk))+?aPqQNBvOE|5K8e;2R3>yGCE)Ym~3U(%8sdEQ)+D@^dJkO)5)XpP@TQ zOGzJ*%FyN!>bOKc4{0pvIH@INi#g{kd3{ad`T1KIfsTe2lU+9;>7(cxb)VrUxQ0}P z@=_!nd`J8D&|eI6ly)w~JGRLG2cJ={{03!ZTz*gh_y3fFe@M$*

nkBbkXKGeVB zWQVF?`T3*{#L@Ti~oy$7xEQJW2kGRHsq_2ekG+RK8F|Z8&ZDqP4NxVd*pS5klJx>Z^{ah zhWN*yLj522@t75JQt>MJGo&E$8z|FJi8PLQC+R5pY?P0|&xm#WLeifxULj?1Ww|gH z<+EKJMqL-uYSL)Rd?92SkO`uZzJ{tpyNNeaUXOHhy8v1LQIxvcBpm}R=8E%A zXAzDcg@V zNZUv{Dq{?3A^E*{f>fN8o3xR#oTRTvI+8eluJ-@SqYs$^6n=>1@GvLo*nkH~waF*D zvP_spoSQV0d}Z3}*g}3T`BSc4T~|Jjx@xZM9AoPaUw3j8Kij9ZQ683UoihHb|-G6QCH%v z#0{{8E`&QM&q|s}{2OU3We-rt0LpbtvY3U$SIIBN>#nXb?RCr`*4Nj*#OZO5=6{&0 zjKrhvggf&hfQ%FD4_#QsT3DjN1zepdD3XpVUA)P0EqQD)Osaxvm z4^ozc{0dTecYXhMYv3BcprQxq1o31H#WPr&#t^8U{$7*1MAn$8KGur#R%X)_IHp^i_8tzkyMftLHQ!uw<47!?;(Ye-%j!$dj7u&a#2zLWudDpNIc$^Ri~_p z%TILmuevy#b9Drh68$;*Pb;WJT_4gmS02GRg@^~^6Uy>cbQj5oJ1K}F{k84$nn|&9 z|D0E>%&-B;!v`gJ;}gBZhbF|OCMJ0Mr6dpb4oyr+N=``X>rIUtHgH>5+7?gVq+#Bn zDai@L`=;8aaq)u^x1FEAV@ZpoA+(J14omdDHau}yYO=pwaw?gG#1VKODYgF()Ly`? delta 14686 zcmZA82YgP~AII_Y1d&7#v0_AGMu;H97D>dOvG71iP~YO5MW&DLyDyS25os%DK= zX^9S{T676*{ptVnea`WJdHwI}b@D#HbI!f@+%xX;B-$Ax z`I|AbFBeMqegnLjo zI)vHrJeI=i*b_4)8&d?+aDvB}*RYwFj9-c|RjFuMkAySv5njWcc%eQ|NV_QwjHyFB zub~~0^T-gI-i_>y`=f^b70ic=Feh%tKsF}CF-)=uMqnJWE=?=cYM$fDi>4a0f;b7ac5YxUyyfCYsm#Cc z!W5|IL9Lhqo-6{jx`(&6i)$R-B%bEtv^K_UqTL9L!9omAXVy@|_N*t`t?y{eXv)2v zSZtWl*_g%{-qn~6*uNW{qWuwXcVm`Okg1n3AKG36;Q zKY&Es9seMHW1umeh^GuPrV$ssF_;k`jv8h=cz8GuL3zKC#_Xm1>PtKX&L3k((3|gN zJH%y>X*O{fg%hweZa^*0^B9T#!&} z6ieYftcbZM8B+o4VSx7k7&3ZdFBZplQ74|k7|cM`7n^L$8zb*3^AZ-s?HG=yoj;+@ z_n%_l7Zp%zt1oKXy^0#?MVOQOn{+Z7st2fj`v|otvrn}bE{J;KYRLLB$=Dp1V;#JU zDH#2leZ>yNvc!{7yJRcoz$32y0y0?U2lSRC(|wwqf@!F2I0yCWU525!9dqGPR7bwR zoS2U4@B<9NEYs~1=0nxTqRJDTEl^X|12uAkrZfKP;dBZjaXFU3gBXXmQFB&chAnS` zy6_m(h)u_0I1jVnPE`F~REJNZZg|bbx6q&X5$Zvo&S3m?fowDFkjG*GaZS{drl4L> z%~2iegaJ4Wb>Vra8!mI@n^1GT3pL~?Q6qQ-b;G-;seSC?%-&h{$wM)Kib|LnYhhMQ zLfxPdYDzkyE-(yrqw%Qr3sCKspl-YxH3D0mAEVk|#FBU$H8tMg*>(=YQ4K1irlb+7 z=Uq`Z9**kBbXUIw3lML19(VQWsPi76I^>yScTpf}QC2~%nO-*bnsH>RQLq84V>;>y z!sfacjk7wc$4yWd=z{9-C{%}MqHeqr)#2@^4xd1c#FwaccTgRF;*(g zpf1!4193D4p%;^JHpbyO3`R50?(^)Z8`MQTKzme&`=X|HEM~_^m<{J)QSJZbuE8OU zCq98%^-oY8DEEf#SXE3U?u2@>6{siMf?CywU3?sM!z(VniMr137>!R*uk@1hd8iF! zx{}cenHJcg3&zUC#ZcR-J!*=&Voh9v74Z^kjx#T`@BUycN*s@+us!NV6H#xzJs67T zQB(KbLiT?onMV}pg^+)deWEyQMx26Ua3K!Cz&CA&#$pcQ30NQJqMqr z(MMPsV;0*Ew?$1&*Tsy#8V;pEJ)MMQaUYh)TbLX3EMZ4rX-vS8s2lD?&FMkZlbymU zcpb}O?xk#LOu|e!8r6|;sPoo($rK{9!xfxGeM$TpE92j&3&*}?KZKH;15iV~0QKRs z+r<|#lK4+oo@bf;w2MRS``%a_XJG_-x02DSKZm;DZ>S4~F1H=2fRV&4P$M%O^}<<+ z8o4!C5O<^2(0Lbsg$;=RaOE{t*!sGtscVW{$7?#1$wxsC)RT@y4f$*g!_}yv+Uv?s zpyv1*#^SfA2gtdSwJ$EK)lH^n&{HDU{~DsDtAzI4A-HmEu6gt}pG)QtwAM#_sCk=I@MO4I}FKt1_kSAQOL{Tr_SuB(5vhVj=8 zvaYr71D$*V`|vrLYX~9MoFagLSoqi}Fv@TnB8jH^_&Yk_uQ6yEx}z6!9mh z5&6lPd$TQ1z#5eI#b{iEykWiO3>mG~C#ViYZ?QLMhq~YtERCD73|@BeGb~FS^}fAu zYphK?4+HQl#^IN!js|SCLtX<_KFSv}{~O6@j&7nF=GbOUM3s+3&D|Q*&|bxwn0>o_ zw>LsvZ~|(3?!fYR8+E;WJM0uU#3bVRF201dxxXp6(|)dZa4thV$=6s9!*}*MBIWp?;gfr!Tt7&NdwfH8oHnH*IX{8 zpfX-YZL5F-cCp1`IB`eRVjPQg@NJC8o2U!tJ!nh`OvYN+5B22hQ6sn=v*CwW0FR(X z@*6LiLS+8MU@UaV-mo-kXzODjj=^d;33cK97>38O5#B&OdDLP10I67pcr2E}wWyIj zg_-dhYGl0WWJ1XVe`GrnfqIgfs1ti&0?t4^$)~6eoJFmHuTULHM?K+V%!`>mw(SaF z5#kb96zifMEDf`2|1Typfr3@2xi0jHZP*yKx(B27^G?*_Jb+rgr%;RP9%_Wl5&J|z zSd*|CCgDq{#kmJHRez&Krqof5nAez8GMf8Wu{Q2NJ^2IFBFlTs?(b!&IXjEV_?s)Q zbevyGi2Gs{+=aTqT@1%OC+vg8p*qkLHC6MlEcZA2$n^2>WfKb$H#*552Z{S&CgQuF z*(bb@+J=u^oaK~VOgT|&C>j}3QxEm&*$j1lnsWdyCmw=<7;u{L*R~5KqYIQk-Z>@_ zHPnBghTe0=eij6whCBjwflAnej@CxCTYc8f^}Cor{HZg`IlHD(@TwnwKg7Y*CtqOv zHALGl*guh;Lk(g1i`KrVCs>6VnKhUN4`DDKb$*Uf#MeAI=C5!W6v+_ znz-~O-~DNq=L)TZs2F*L-_Fu6NbW@#t&3L@3{fnX%8;_Qf;+qlqV>Ms71| z7kr8unVXmm@1pj525M?@eq$dbKWZxDykwe@NyNL{cpi2le)$G_miRKx!7(@Oh5f#> zCkCS~To5C%G8V$NSP4g`n_#f8}%fOoxM@}cRa@6 z3QWY$@M8@8!H&c!f8hV{7O9hH~Xj8{lD{?CNBRc(*E;@ zOeOKK$NWBsh5lx}XtjhsVarkQD;A<*^`~}`wEdSoP5Dv`$7jZ4)?;BmkJ(7OBbhwr zJ>vfU9uq*EE5Mc)WI-LJ{7A6JtiacDczkcz$PkZjDk@=99xM@k`~P(^TJ`&}D*lGW zuyihuZv>j4c0pIvBI=11aR8Ra6|Vd^79>84nu0s1-SPl+{zDi4g@cHnp|>YJ92jaZ zbT+rg_wLTX%rwZB$KzYYA*iV+jQS&UEH=TH^Lc#VnvaKheBXdFQ1ABA1w6hFs}86K zT7a73Q&3N-?Yu^OJlx~M;y zt6hq-FE%EgiTUv|sw2N(KFlcWwR0291nW~P0@WZM`(PdHi0iQpKEw9dx`-W-EvSwh zMs3GmQE$$`2#@c@7KTfStDqj}JZeh(B0auebOO9&bi)D|ip4QER&nKxUEBr>Q{Laj z(@=B04At=uP)~H))qjV&ZU%k!^7bL47r~pT9-cz&^QWjMDpQQr zjVY+b)(o`>$Dm#~6H!CE97Avys-wqHi||{_gLhC<^B)%%DefC7uc<^PCl$%4H&ZLr zje4M-V3u#Ul`H=lb;F0K>jjpu9m|hph)bic+Zz3~|GSdWYVU&@ z!U3o`oP@gJ8yJD>P)~FWHHW8ByW#@shTo$)@)$L8K_%@COQ6bIpsv%)IR$fbf3ud1 z=5P;cuFj%HXy4b`!cs5u>nn!-(}2fBiBcpn>JB>y6ni2c#4 zo^K+fIs6FKkt@!7Se)3ew4KvZs5z{QdWWaEcp~aX@1U-;*ZH}tzk?+x4~(|;u^2^M zKbrlo6NXX{gwvf1FqL>ER>lXYxh!7Bz9}oBI@%vKQWIS~4>h;zQ6InCFc=S@zL1=B z_5Nk;`zEBU*JhehpoTM1Jzb1Vbt0;RS!3*+Mxa)Ib<`9jp>{`G)JS%7@hFTY9*?^5 zMm&N)qNeKIa(4S}^OC7g!6{S+LSj9p1BPQ7j=`#U9d)BTd^@S6demx8MZJK=VNDUXF2taCd*fB8j;u$WcLBAS(^1>juZpIK{g;PKZ3+@l+iyHp!R1&T zFJdfat7?b72I@(NqNZS@i!Wj=;=pRQWA#x}H5=pcBTU4Hs1CU_BL!N;V^KrD3DwhYQ71gaNc2yz-;APAPu>`Hqk*VJHUc$rvr(_$!>C>G6>5#$ zcje{l*y}f{!~WL`q$>ql979n1e*xCPJ*W|RW*_b^kzpJU>B=us5u(?MV#k2~trPo`q_#0!!g`7hger$oz~&v0#e5U@cVp zj;KXA#Ff8{dVs~Qd<$yL?7@=S|M$pfpN7`+n1+~u(KrKjgPo{1;bqh=sb1gK_eG7^ zeAE*!N6r0C)YRR=rdXnZ-NqwO?~^U4Mg0iFwf~=y(S-^(v^Ol}Y>0aDfi7O)-0l1l z)#1meU6I(x4*4+bO*{!Z;w{vT6B>Jb{}s(FR7bzXlHA|qZem{))lqXc1S4>wD_@Oz zL0!T`3~6e2ODgKqaVqM9`&|4BYH>z3v*l@+Nc&|C)6=8R7}JJsJVWEdh_|Wv^S`W4TvY8M(6~##T==2SM+giOJ)BzqT(-C zkle~PnCrZP^{J0+ZOi*PcRHUq>$R~rdIP)A{wlV{__iL?4QHXI;wNWvI~%WT=e3zf zuApUm8*g@I?qK6?&VA0%j`jwFQ6u&Vmcxgrku289?xNOMhByuNp*0^T;d`hzVzjrj ztw=z9sceVZeqGS_A%j|+8&OlW1N9`gF%u?sv8y=+wZEI9ZrB#{;w03^^%Cbg)UWe9 zP#yAqPDU?|J6ID$X&8~rEsO@zLb)(Skc6Hario`QfBX9tN6z`)uGX-?KU3s;Q`cxUc^}K{|qu3suF$e6ShR1I2ZL{u?Y2qYmrx` zc^~y5bO|HzN7S0}?`Jy{hI%12M15?JMV-F`U%~^Zku2Yz{jWtfh)gQ3LtQunb)$d* z_JXmfcY8Nf{Ycb{XByVW1E{I;47B^aIckK~qjtwPsE*_uWZN}Fy%!b_V*jgQItA-6 z?_k@r{TM@>fqIb?8)6sLKpalI0(HUQq4ot;5B1$~7-}2NMvdq`=PhT*Fpu$2uA>7f z+K=&n*^li(pjT!I@^6s%lI#2L_b4*Ik}swV$4qzjEb`huI>ysJhVq&CCTiqblK+Q% z4%hxMWy8teBE3%Xklv(CCe6Q&&q(@I(ve7Idz`BASr0YblQK#cQ)V92d?~_)O zv<7rUlYUanIXbS9ukP~s$m=NT^tK?#M&*wbyh*+(`NE`m#2Qi^-@3-izvV8ZJp0## zy--*7g*ts6Tz#P~8+pA?dj>d=xQmM2Wi6W*1VX_lEYqj(Fl{SQ>TgAgv@n9@mi8ab6gf zqihCVao5iCeEy$MSdYS~qzLleNXJM&5Le@*{dk_#k9;_(IC)-rzQ5GJB4p@Bu?XSz4+?+ z{VkYZ1jmS?XKbSOx_)B+xvzXu!m0i@*9UCY+_dNJN^HZnelEwG4 z0%dc^b#!%0@GkM|Sc7YSL4FwdPcVR3hxb#LQ80$Qez|y$MqNodc9M#@HrFwN^q#MV zr=ZPRQW00rR|V6|<<+Dd`El+#AGz}H@F1xQDUi<}bCZUDlKPP5x<(^8X+0@~GJTog zJB0b!)nyRBLw+9htI5|T6>~QsYxwH-zax^IKXor*9@pkJ^^q>WK=VJyHP=59XglgC zO`|g8r<2b|3L@VKcav69H`(3f6b4ha9LJ)LhO{k7e4qR_d>el!H6lg6Mny zWf17_I{T8(Oa2f1oK%X`gY^99MxFj+^IGVqi*Ss31i1M2SK6ykSD`WCdFG*NZLe9tg^ z;+kEgJfzx`eUCk<*AcAw?@r+p3Uy?1J|zD(`7FLtZa{tnDJyN)kiH`SfYgclcd8$oN`5dd$A+X(k~f3`9sFiw@{_icPLN)w zj9&@Najb^nq)<{tZk9&b8{`AYKR*f+A10`di(Fw796(BzwEc#mo{$CKven`^y_hF>3NGECY{MbPLOBWA(E|n{|=!e8p$hXD?c+S=9+@0j-;}B9` z+WPk23Yb8}IMNYPPL*>MBEQdOegC=qzvSmo)`2vfe5$Ma7(b)zFH#xOpCldKxIs3X z_5DnB<@z_qvA&!0Nvb`6(ltt>unDOlWksDJ$=4uFCOtpykVz*Mr!3Z$PvkuP zqA`^;owAMi;!%g-D5ZJb=C%O8eFSMKF@~_ZF zM?7&HH|R&cp1V;CTuIzj4LH`ha1DJ z+ai-d*^lHGlO|Eu8!J<$BQxnY^68`-q}ik#?)R&qUsj^502MNsWo?K7Z#wrNLPW2U0i- zKPTz<-s1Z?gR+;X-%oU!^oMJs$_J!o)E#}HOywQ*gYp14L|tM0h}4R*N9Y^nKr&ZU zNSaTh>{RM_gH)XKGpQ-587YeTrS2y8u|H)AwEx$Y5&DiB&PA@g3T=`|t4Wint3-K> zANRlK8f2kjC>3wH6Ght>^2)X*m8JbBq{HsKjhy!iDVF#e^{Yr{NQ;S6DPM-Uu`Ou~ z0Zcv5o;{7E0EVs}Qh0bO>lUA)b+J8kI) YEB5xT\n" "Language-Team: BRITISH ENGLISH \n" @@ -29,10 +29,11 @@ msgstr "È attivo" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" -"Se impostato a false, questo oggetto non può essere visto dagli utenti senza " -"i necessari permessi." +"Se impostato a false, questo oggetto non può essere visto dagli utenti senza" +" i necessari permessi." #: engine/core/abstract.py:26 engine/core/choices.py:18 msgid "created" @@ -74,65 +75,65 @@ msgstr "Metadati" msgid "timestamps" msgstr "Timestamp" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Attivare il %(verbose_name_plural)s selezionato" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Gli articoli selezionati sono stati attivati!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Disattivare il %(verbose_name_plural)s selezionato" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Gli articoli selezionati sono stati disattivati!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Valore dell'attributo" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Valori degli attributi" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Immagine" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Immagini" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Stock" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Le scorte" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Ordina il prodotto" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Ordinare i prodotti" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "I bambini" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Configurazione" @@ -156,7 +157,8 @@ msgstr "Consegnato" msgid "canceled" msgstr "Annullato" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Fallito" @@ -194,53 +196,52 @@ msgid "" "negotiation. Language can be selected with Accept-Language and query " "parameter both." msgstr "" -"Schema OpenApi3 per questa API. Il formato può essere selezionato tramite la " -"negoziazione dei contenuti. La lingua può essere selezionata sia con Accept-" -"Language che con il parametro query." +"Schema OpenApi3 per questa API. Il formato può essere selezionato tramite la" +" negoziazione dei contenuti. La lingua può essere selezionata sia con " +"Accept-Language che con il parametro query." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "I/O della cache" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Applicare solo una chiave per leggere i dati consentiti dalla cache.\n" -"Applicare chiave, dati e timeout con autenticazione per scrivere dati nella " -"cache." +"Applicare chiave, dati e timeout con autenticazione per scrivere dati nella cache." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Ottenere un elenco delle lingue supportate" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Ottenere i parametri esponibili dell'applicazione" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Inviate un messaggio al team di assistenza" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Richiedere un URL CORSed. È consentito solo https." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Ricerca tra prodotti, categorie e marchi" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" "Endpoint di ricerca globale per interrogare tutte le tabelle del progetto" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Acquistare un ordine come azienda" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -248,7 +249,7 @@ msgstr "" "Acquistare un ordine come azienda, utilizzando i `prodotti` forniti con " "`product_uuid` e `attributi`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "scaricare un bene digitale da un ordine digitale acquistato" @@ -274,7 +275,8 @@ msgstr "" "Riscrivere un gruppo di attributi esistente salvando i non modificabili" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Riscrivere alcuni campi di un gruppo di attributi esistente salvando quelli " "non modificabili" @@ -329,7 +331,8 @@ msgstr "" "modificabili" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Riscrivere alcuni campi di un valore di attributo esistente salvando i " "valori non modificabili" @@ -362,14 +365,14 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:270 engine/core/docs/drf/viewsets.py:272 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "Meta-immagine SEO" @@ -389,12 +392,12 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Ricerca di sottostringhe senza distinzione di maiuscole e minuscole tra " -"human_readable_id, order_products.product.name e order_products.product." -"partnumber" +"human_readable_id, order_products.product.name e " +"order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -430,9 +433,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordinare per uno dei seguenti criteri: uuid, human_readable_id, user_email, " "user, status, created, modified, buy_time, random. Prefisso con '-' per la " @@ -466,8 +469,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:403 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: engine/core/docs/drf/viewsets.py:410 msgid "purchase an order" @@ -480,8 +483,8 @@ msgid "" "transaction is initiated." msgstr "" "Finalizza l'acquisto dell'ordine. Se si utilizza `forza_bilancio`, " -"l'acquisto viene completato utilizzando il saldo dell'utente; se si utilizza " -"`forza_pagamento`, viene avviata una transazione." +"l'acquisto viene completato utilizzando il saldo dell'utente; se si utilizza" +" `forza_pagamento`, viene avviata una transazione." #: engine/core/docs/drf/viewsets.py:427 msgid "retrieve current pending order of a user" @@ -491,7 +494,7 @@ msgstr "recuperare l'ordine in corso di un utente" msgid "retrieves a current pending order of an authenticated user" msgstr "recupera un ordine in sospeso di un utente autenticato" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "acquistare un ordine senza creare un account" @@ -557,8 +560,8 @@ msgstr "Elenco di tutti gli attributi (vista semplice)" #: engine/core/docs/drf/viewsets.py:498 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -"Per gli utenti che non fanno parte del personale, vengono restituite solo le " -"loro liste dei desideri." +"Per gli utenti che non fanno parte del personale, vengono restituite solo le" +" loro liste dei desideri." #: engine/core/docs/drf/viewsets.py:508 msgid "retrieve a single wishlist (detailed view)" @@ -639,28 +642,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrare in base a una o più coppie nome/valore dell'attributo. \n" "- **Sintassi**: `nome_attraverso=metodo-valore[;attr2=metodo2-valore2]...`\n" -"- **Metodi** (predefiniti a `icontains` se omessi): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- **Tipo di valore**: JSON viene tentato per primo (in modo da poter passare " -"liste/dict), `true`/`false` per booleani, interi, float; altrimenti viene " -"trattato come stringa. \n" -"- **Base64**: prefisso con `b64-` per codificare in base64 il valore " -"grezzo. \n" +"- **Metodi** (predefiniti a `icontains` se omessi): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- **Tipo di valore**: JSON viene tentato per primo (in modo da poter passare liste/dict), `true`/`false` per booleani, interi, float; altrimenti viene trattato come stringa. \n" +"- **Base64**: prefisso con `b64-` per codificare in base64 il valore grezzo. \n" "Esempi: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" @@ -675,12 +668,10 @@ msgstr "(esatto) UUID del prodotto" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Elenco separato da virgole dei campi da ordinare. Prefisso con `-` per " -"l'ordinamento discendente. \n" +"Elenco separato da virgole dei campi da ordinare. Prefisso con `-` per l'ordinamento discendente. \n" "**Consentito:** uuid, rating, nome, slug, creato, modificato, prezzo, casuale" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -694,15 +685,13 @@ msgid "Product UUID or slug" msgstr "UUID o Slug del prodotto" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Creare un prodotto" #: engine/core/docs/drf/viewsets.py:677 engine/core/docs/drf/viewsets.py:678 msgid "rewrite an existing product, preserving non-editable fields" -msgstr "Riscrivere un prodotto esistente, preservando i campi non modificabili" +msgstr "" +"Riscrivere un prodotto esistente, preservando i campi non modificabili" #: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:700 msgid "" @@ -784,8 +773,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:909 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: engine/core/docs/drf/viewsets.py:919 msgid "list all order–product relations (simple view)" @@ -843,8 +832,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1039 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: engine/core/docs/drf/viewsets.py:1064 msgid "list all vendors (simple view)" @@ -870,8 +859,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1102 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: engine/core/docs/drf/viewsets.py:1112 msgid "list all product images (simple view)" @@ -897,8 +886,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1154 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: engine/core/docs/drf/viewsets.py:1165 msgid "list all promo codes (simple view)" @@ -924,8 +913,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1203 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: engine/core/docs/drf/viewsets.py:1213 msgid "list all promotions (simple view)" @@ -951,8 +940,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1251 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: engine/core/docs/drf/viewsets.py:1261 msgid "list all stocks (simple view)" @@ -978,8 +967,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1297 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: engine/core/docs/drf/viewsets.py:1308 msgid "list all product tags (simple view)" @@ -1005,11 +994,11 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1350 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Non è stato fornito alcun termine di ricerca." @@ -1018,8 +1007,8 @@ msgstr "Non è stato fornito alcun termine di ricerca." msgid "Search" msgstr "Ricerca" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1065,8 +1054,8 @@ msgid "Quantity" msgstr "Quantità" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Lumaca" @@ -1082,7 +1071,7 @@ msgstr "Includere le sottocategorie" msgid "Include personal ordered" msgstr "Includere prodotti ordinati personalmente" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1104,12 +1093,12 @@ msgid "Bought before (inclusive)" msgstr "Acquistato prima (compreso)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "Email dell'utente" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "UUID utente" @@ -1133,254 +1122,256 @@ msgstr "Intera categoria (con o senza almeno 1 prodotto)" msgid "Level" msgstr "Livello" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "UUID del prodotto" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Chiave da cercare o da inserire nella cache" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Data to store in cache" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout in secondi per l'inserimento dei dati nella cache" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Dati in cache" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Dati JSON camelizzati dall'URL richiesto" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Sono consentiti solo gli URL che iniziano con http(s)://" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Aggiungere un prodotto all'ordine" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Ordine {order_uuid} non trovato!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Rimuovere un prodotto dall'ordine" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Rimuovere tutti i prodotti dall'ordine" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Acquistare un ordine" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Si prega di fornire order_uuid o order_hr_id, che si escludono a vicenda!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" -msgstr "Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}" +msgstr "" +"Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Eseguire un'azione su un elenco di prodotti nell'ordine" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Rimuovi/Aggiungi" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "L'azione deve essere \"aggiungere\" o \"rimuovere\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Eseguire un'azione su un elenco di prodotti nella wishlist" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Fornire il valore `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista dei desideri {wishlist_uuid} non trovata!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Aggiungere un prodotto all'ordine" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Acquistare un ordine" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Inviare gli attributi come stringa formattata come attr1=valore1," -"attr2=valore2" +"Inviare gli attributi come stringa formattata come " +"attr1=valore1,attr2=valore2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Aggiungere o eliminare un feedback per l'ordine-prodotto" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "L'azione deve essere `add` o `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Prodotto dell'ordine {order_product_uuid} non trovato!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Stringa di indirizzo originale fornita dall'utente" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} non esiste: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Il limite deve essere compreso tra 1 e 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch: funziona a meraviglia" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Attributi" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Attributi raggruppati" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Gruppi di attributi" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Categorie" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Marche" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Categorie" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Percentuale di markup" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Quali attributi e valori possono essere utilizzati per filtrare questa " "categoria." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Prezzi minimi e massimi per i prodotti di questa categoria, se disponibili." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Tag per questa categoria" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Prodotti in questa categoria" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Venditori" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Latitudine (coordinata Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Longitudine (coordinata X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Come" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valore di valutazione da 1 a 10, incluso, o 0 se non impostato." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Rappresenta il feedback di un utente." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Notifiche" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "URL di download per il prodotto dell'ordine, se applicabile" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Feedback" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Un elenco di prodotti ordinati in questo ordine" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Indirizzo di fatturazione" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1388,53 +1379,53 @@ msgstr "" "Indirizzo di spedizione per questo ordine, lasciare in bianco se è uguale " "all'indirizzo di fatturazione o se non è applicabile" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Prezzo totale dell'ordine" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Quantità totale di prodotti in ordine" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Tutti i prodotti sono presenti nell'ordine digitale" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transazioni per questo ordine" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Ordini" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "URL immagine" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Immagini del prodotto" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Categoria" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Feedback" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Marchio" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Gruppi di attributi" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1442,7 +1433,7 @@ msgstr "Gruppi di attributi" msgid "price" msgstr "Prezzo" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1450,39 +1441,39 @@ msgstr "Prezzo" msgid "quantity" msgstr "Quantità" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Numero di feedback" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Prodotti disponibili solo per ordini personali" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Prezzo scontato" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Prodotti" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Codici promozionali" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Prodotti in vendita" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Promozioni" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Venditore" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1490,99 +1481,99 @@ msgstr "Venditore" msgid "product" msgstr "Prodotto" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Prodotti desiderati" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Liste dei desideri" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Prodotti contrassegnati" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Tag del prodotto" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Contrassegnato dalle categorie" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Tag delle categorie" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Nome del progetto" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Nome della società" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Indirizzo dell'azienda" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Numero di telefono dell'azienda" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', a volte deve essere usato al posto del valore dell'utente host" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Utente host dell'e-mail" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Importo massimo per il pagamento" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Importo minimo per il pagamento" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Dati analitici" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Dati pubblicitari" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Configurazione" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Codice lingua" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Nome della lingua" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Bandiera della lingua, se esiste :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Ottenere un elenco delle lingue supportate" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Risultati della ricerca dei prodotti" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Risultati della ricerca dei prodotti" @@ -1593,29 +1584,29 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"Rappresenta un gruppo di attributi, che può essere gerarchico. Questa classe " -"viene utilizzata per gestire e organizzare i gruppi di attributi. Un gruppo " -"di attributi può avere un gruppo padre, formando una struttura gerarchica. " +"Rappresenta un gruppo di attributi, che può essere gerarchico. Questa classe" +" viene utilizzata per gestire e organizzare i gruppi di attributi. Un gruppo" +" di attributi può avere un gruppo padre, formando una struttura gerarchica. " "Questo può essere utile per categorizzare e gestire meglio gli attributi in " "un sistema complesso." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Genitore di questo gruppo" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Gruppo di attributi padre" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Nome del gruppo di attributi" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Gruppo di attributi" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1634,49 +1625,49 @@ msgstr "" "anche metadati e vincoli aggiuntivi, rendendolo adatto all'uso in sistemi " "che interagiscono con venditori terzi." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Memorizza le credenziali e gli endpoint necessari per la comunicazione API " "del fornitore." -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Informazioni sull'autenticazione" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "Definire il markup per i prodotti recuperati da questo fornitore" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Percentuale di ricarico del fornitore" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Nome del fornitore" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Nome del fornitore" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "file di risposta" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "risposta del venditore all'ultima elaborazione" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Percorso del file di integrazione del fornitore" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Percorso di integrazione" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1691,27 +1682,27 @@ msgstr "" "operazioni esportate attraverso i mixin e fornisce la personalizzazione dei " "metadati per scopi amministrativi." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Identificatore interno dell'etichetta del prodotto" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Nome del tag" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Nome intuitivo per l'etichetta del prodotto" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Nome del tag" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Etichetta del prodotto" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1719,18 +1710,18 @@ msgid "" msgstr "" "Rappresenta un tag di categoria utilizzato per i prodotti. Questa classe " "modella un tag di categoria che può essere usato per associare e " -"classificare i prodotti. Include gli attributi per un identificatore interno " -"del tag e un nome di visualizzazione facile da usare." +"classificare i prodotti. Include gli attributi per un identificatore interno" +" del tag e un nome di visualizzazione facile da usare." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "tag categoria" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "tag di categoria" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1744,117 +1735,118 @@ msgid "" msgstr "" "Rappresenta un'entità di categoria per organizzare e raggruppare gli " "elementi correlati in una struttura gerarchica. Le categorie possono avere " -"relazioni gerarchiche con altre categorie, supportando le relazioni genitore-" -"figlio. La classe include campi per i metadati e per la rappresentazione " -"visiva, che servono come base per le funzionalità legate alle categorie. " -"Questa classe viene tipicamente utilizzata per definire e gestire le " -"categorie di prodotti o altri raggruppamenti simili all'interno di " -"un'applicazione, consentendo agli utenti o agli amministratori di " +"relazioni gerarchiche con altre categorie, supportando le relazioni " +"genitore-figlio. La classe include campi per i metadati e per la " +"rappresentazione visiva, che servono come base per le funzionalità legate " +"alle categorie. Questa classe viene tipicamente utilizzata per definire e " +"gestire le categorie di prodotti o altri raggruppamenti simili all'interno " +"di un'applicazione, consentendo agli utenti o agli amministratori di " "specificare il nome, la descrizione e la gerarchia delle categorie, nonché " "di assegnare attributi come immagini, tag o priorità." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Caricare un'immagine che rappresenti questa categoria" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Categoria immagine" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "" "Definire una percentuale di ricarico per i prodotti di questa categoria" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Genitore di questa categoria per formare una struttura gerarchica" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Categoria di genitori" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Nome della categoria" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Indicare un nome per questa categoria" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Aggiungere una descrizione dettagliata per questa categoria" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Descrizione della categoria" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "tag che aiutano a descrivere o raggruppare questa categoria" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Priorità" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Rappresenta un oggetto Marchio nel sistema. Questa classe gestisce le " "informazioni e gli attributi relativi a un marchio, tra cui il nome, il " "logo, la descrizione, le categorie associate, uno slug unico e l'ordine di " -"priorità. Permette di organizzare e rappresentare i dati relativi al marchio " -"all'interno dell'applicazione." +"priorità. Permette di organizzare e rappresentare i dati relativi al marchio" +" all'interno dell'applicazione." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Nome del marchio" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Nome del marchio" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Caricare un logo che rappresenti questo marchio" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Immagine piccola del marchio" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Caricare un grande logo che rappresenti questo marchio" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Grande immagine del marchio" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Aggiungere una descrizione dettagliata del marchio" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Descrizione del marchio" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Categorie opzionali a cui questo marchio è associato" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Categorie" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1862,77 +1854,77 @@ msgid "" msgstr "" "Rappresenta lo stock di un prodotto gestito nel sistema. Questa classe " "fornisce dettagli sulla relazione tra fornitori, prodotti e informazioni " -"sulle scorte, oltre a proprietà legate all'inventario come prezzo, prezzo di " -"acquisto, quantità, SKU e asset digitali. Fa parte del sistema di gestione " -"dell'inventario per consentire il monitoraggio e la valutazione dei prodotti " -"disponibili presso i vari fornitori." +"sulle scorte, oltre a proprietà legate all'inventario come prezzo, prezzo di" +" acquisto, quantità, SKU e asset digitali. Fa parte del sistema di gestione " +"dell'inventario per consentire il monitoraggio e la valutazione dei prodotti" +" disponibili presso i vari fornitori." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Il venditore che fornisce questo stock di prodotti" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Venditore associato" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Prezzo finale al cliente dopo i ricarichi" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Prezzo di vendita" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Il prodotto associato a questa voce di magazzino" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Prodotto associato" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Il prezzo pagato al venditore per questo prodotto" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Prezzo di acquisto del fornitore" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Quantità disponibile del prodotto in magazzino" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Quantità in magazzino" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU assegnato dal fornitore per identificare il prodotto" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "SKU del venditore" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "File digitale associato a questo stock, se applicabile" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "File digitale" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Attributi del sistema" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Voci di magazzino" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1950,252 +1942,261 @@ msgstr "" "sistema che gestisce il commercio elettronico o l'inventario. Questa classe " "interagisce con i modelli correlati (come Category, Brand e ProductTag) e " "gestisce la cache per le proprietà a cui si accede di frequente, per " -"migliorare le prestazioni. Viene utilizzata per definire e manipolare i dati " -"dei prodotti e le informazioni ad essi associate all'interno di " +"migliorare le prestazioni. Viene utilizzata per definire e manipolare i dati" +" dei prodotti e le informazioni ad essi associate all'interno di " "un'applicazione." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Categoria a cui appartiene questo prodotto" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Associare facoltativamente questo prodotto a un marchio" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Tag che aiutano a descrivere o raggruppare questo prodotto" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Indica se il prodotto è consegnato in formato digitale" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Il prodotto è digitale" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" +"indica se questo prodotto deve essere aggiornato dall'attività periodica" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "il prodotto è aggiornabile" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Fornire un nome identificativo chiaro per il prodotto" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Nome del prodotto" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Aggiungere una descrizione dettagliata del prodotto" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Descrizione del prodotto" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Numero di parte per questo prodotto" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Numero di parte" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Unità di mantenimento delle scorte per questo prodotto" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Rappresenta un attributo nel sistema. Questa classe viene utilizzata per " -"definire e gestire gli attributi, che sono dati personalizzabili che possono " -"essere associati ad altre entità. Gli attributi hanno categorie, gruppi, " -"tipi di valori e nomi associati. Il modello supporta diversi tipi di valori, " -"tra cui stringa, intero, float, booleano, array e oggetto. Ciò consente una " -"strutturazione dinamica e flessibile dei dati." +"definire e gestire gli attributi, che sono dati personalizzabili che possono" +" essere associati ad altre entità. Gli attributi hanno categorie, gruppi, " +"tipi di valori e nomi associati. Il modello supporta diversi tipi di valori," +" tra cui stringa, intero, float, booleano, array e oggetto. Ciò consente una" +" strutturazione dinamica e flessibile dei dati." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Gruppo di questo attributo" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Stringa" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Intero" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Galleggiante" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Booleano" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Array" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Oggetto" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Tipo di valore dell'attributo" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Tipo di valore" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Nome dell'attributo" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Nome dell'attributo" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "è filtrabile" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Quali attributi e valori possono essere utilizzati per filtrare questa " "categoria." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attributo" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Rappresenta un valore specifico per un attributo collegato a un prodotto. " "Collega l'\"attributo\" a un \"valore\" unico, consentendo una migliore " "organizzazione e rappresentazione dinamica delle caratteristiche del " "prodotto." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Attributo di questo valore" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Il prodotto specifico associato al valore di questo attributo" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Il valore specifico per questo attributo" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Rappresenta l'immagine di un prodotto associata a un prodotto del sistema. " -"Questa classe è progettata per gestire le immagini dei prodotti, comprese le " -"funzionalità di caricamento dei file immagine, di associazione a prodotti " +"Questa classe è progettata per gestire le immagini dei prodotti, comprese le" +" funzionalità di caricamento dei file immagine, di associazione a prodotti " "specifici e di determinazione dell'ordine di visualizzazione. Include anche " "una funzione di accessibilità con testo alternativo per le immagini." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "" "Fornire un testo alternativo per l'immagine ai fini dell'accessibilità." -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Testo alt dell'immagine" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Caricare il file immagine per questo prodotto" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Immagine del prodotto" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Determina l'ordine di visualizzazione delle immagini" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Priorità del display" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Il prodotto che questa immagine rappresenta" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Immagini del prodotto" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"Rappresenta una campagna promozionale per prodotti con sconto. Questa classe " -"viene utilizzata per definire e gestire campagne promozionali che offrono " +"Rappresenta una campagna promozionale per prodotti con sconto. Questa classe" +" viene utilizzata per definire e gestire campagne promozionali che offrono " "uno sconto in percentuale sui prodotti. La classe include attributi per " "impostare la percentuale di sconto, fornire dettagli sulla promozione e " "collegarla ai prodotti applicabili. Si integra con il catalogo dei prodotti " "per determinare gli articoli interessati dalla campagna." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Percentuale di sconto per i prodotti selezionati" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Percentuale di sconto" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Fornite un nome unico per questa promozione" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Nome della promozione" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Descrizione della promozione" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Selezionare i prodotti inclusi in questa promozione" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Prodotti inclusi" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Promozione" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2208,60 +2209,60 @@ msgstr "" "rimozione di prodotti, nonché operazioni per l'aggiunta e la rimozione di " "più prodotti contemporaneamente." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Prodotti che l'utente ha contrassegnato come desiderati" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Utente che possiede questa wishlist" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Proprietario della lista dei desideri" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Lista dei desideri" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"Rappresenta un record documentario legato a un prodotto. Questa classe viene " -"utilizzata per memorizzare informazioni sui documentari relativi a prodotti " -"specifici, compresi i file caricati e i relativi metadati. Contiene metodi e " -"proprietà per gestire il tipo di file e il percorso di archiviazione dei " +"Rappresenta un record documentario legato a un prodotto. Questa classe viene" +" utilizzata per memorizzare informazioni sui documentari relativi a prodotti" +" specifici, compresi i file caricati e i relativi metadati. Contiene metodi " +"e proprietà per gestire il tipo di file e il percorso di archiviazione dei " "file documentari. Estende le funzionalità di mixin specifici e fornisce " "ulteriori caratteristiche personalizzate." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Documentario" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Documentari" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Non risolto" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Rappresenta un'entità indirizzo che include dettagli sulla posizione e " "associazioni con un utente. Fornisce funzionalità per la memorizzazione di " @@ -2274,59 +2275,59 @@ msgstr "" "classe consente inoltre di associare un indirizzo a un utente, facilitando " "la gestione personalizzata dei dati." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Indirizzo del cliente" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Linea di indirizzo" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Via" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Distretto" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Città" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Regione" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Codice postale" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Paese" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Punto di geolocalizzazione(Longitudine, Latitudine)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Risposta JSON completa di geocoder per questo indirizzo" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Risposta JSON memorizzata dal servizio di geocodifica" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Indirizzo" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Indirizzi" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2335,248 +2336,250 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"Rappresenta un codice promozionale che può essere utilizzato per gli sconti, " -"gestendone la validità, il tipo di sconto e l'applicazione. La classe " +"Rappresenta un codice promozionale che può essere utilizzato per gli sconti," +" gestendone la validità, il tipo di sconto e l'applicazione. La classe " "PromoCode memorizza i dettagli di un codice promozionale, tra cui il suo " "identificatore univoco, le proprietà dello sconto (importo o percentuale), " "il periodo di validità, l'utente associato (se presente) e lo stato di " "utilizzo. Include funzionalità per convalidare e applicare il codice " "promozionale a un ordine, assicurando il rispetto dei vincoli." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Codice univoco utilizzato da un utente per riscattare uno sconto" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Identificatore del codice promozionale" -#: engine/core/models.py:1126 -msgid "fixed discount amount applied if percent is not used" -msgstr "Importo fisso dello sconto applicato se non si utilizza la percentuale" - #: engine/core/models.py:1127 +msgid "fixed discount amount applied if percent is not used" +msgstr "" +"Importo fisso dello sconto applicato se non si utilizza la percentuale" + +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Importo fisso dello sconto" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Sconto percentuale applicato se l'importo fisso non viene utilizzato" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Sconto percentuale" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Data di scadenza del codice promozionale" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Tempo di validità finale" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Data a partire dalla quale il codice promozionale è valido" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Ora di inizio validità" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Timestamp in cui è stato utilizzato il codice promozionale, vuoto se non " "ancora utilizzato" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Timestamp d'uso" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Utente assegnato a questo codice promozionale, se applicabile" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Utente assegnato" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Codice promozionale" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Codici promozionali" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"È necessario definire un solo tipo di sconto (importo o percentuale), ma non " -"entrambi o nessuno." +"È necessario definire un solo tipo di sconto (importo o percentuale), ma non" +" entrambi o nessuno." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Il codice promozionale è già stato utilizzato" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo di sconto non valido per il codice promozionale {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Rappresenta un ordine effettuato da un utente. Questa classe modella un " -"ordine all'interno dell'applicazione, includendo i suoi vari attributi, come " -"le informazioni di fatturazione e spedizione, lo stato, l'utente associato, " -"le notifiche e le operazioni correlate. Gli ordini possono avere prodotti " +"ordine all'interno dell'applicazione, includendo i suoi vari attributi, come" +" le informazioni di fatturazione e spedizione, lo stato, l'utente associato," +" le notifiche e le operazioni correlate. Gli ordini possono avere prodotti " "associati, possono essere applicate promozioni, impostati indirizzi e " "aggiornati i dettagli di spedizione o fatturazione. Allo stesso modo, la " -"funzionalità supporta la gestione dei prodotti nel ciclo di vita dell'ordine." +"funzionalità supporta la gestione dei prodotti nel ciclo di vita " +"dell'ordine." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "L'indirizzo di fatturazione utilizzato per questo ordine" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Codice promozionale opzionale applicato a questo ordine" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Codice promozionale applicato" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "L'indirizzo di spedizione utilizzato per questo ordine" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Indirizzo di spedizione" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Stato attuale dell'ordine nel suo ciclo di vita" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Stato dell'ordine" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "Struttura JSON delle notifiche da mostrare agli utenti; nell'interfaccia " "utente dell'amministratore viene utilizzata la visualizzazione a tabella." -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "Rappresentazione JSON degli attributi dell'ordine per questo ordine" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "L'utente che ha effettuato l'ordine" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Utente" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Il timestamp del momento in cui l'ordine è stato finalizzato" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Acquista tempo" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Un identificatore leggibile dall'uomo per l'ordine" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "ID leggibile dall'uomo" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Ordine" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "Un utente può avere un solo ordine pendente alla volta!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Non è possibile aggiungere prodotti a un ordine che non sia in sospeso." -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Non è possibile aggiungere all'ordine prodotti inattivi" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "" "Non è possibile aggiungere più prodotti di quelli disponibili in magazzino" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "Non è possibile rimuovere i prodotti da un ordine che non è in corso." -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} non esiste con la query <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Il codice promozionale non esiste" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" "È possibile acquistare solo prodotti fisici con indirizzo di spedizione " "specificato!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "L'indirizzo non esiste" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "In questo momento non è possibile acquistare, riprovare tra qualche minuto." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Valore di forza non valido" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Non è possibile acquistare un ordine vuoto!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "Non è possibile acquistare un ordine senza un utente!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Un utente senza saldo non può acquistare con il saldo!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Fondi insufficienti per completare l'ordine" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2585,7 +2588,7 @@ msgstr "" "seguenti informazioni: nome del cliente, e-mail del cliente, numero di " "telefono del cliente" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -2593,7 +2596,7 @@ msgstr "" "Metodo di pagamento non valido: {payment_method} da " "{available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2605,35 +2608,36 @@ msgstr "" "per catturare e memorizzare i commenti degli utenti su prodotti specifici " "che hanno acquistato. Contiene attributi per memorizzare i commenti degli " "utenti, un riferimento al prodotto correlato nell'ordine e una valutazione " -"assegnata dall'utente. La classe utilizza campi del database per modellare e " -"gestire efficacemente i dati di feedback." +"assegnata dall'utente. La classe utilizza campi del database per modellare e" +" gestire efficacemente i dati di feedback." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "Commenti degli utenti sulla loro esperienza con il prodotto" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Commenti di feedback" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "Riferisce il prodotto specifico in un ordine di cui si tratta il feedback." -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Prodotto correlato all'ordine" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Valutazione del prodotto assegnata dall'utente" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Valutazione del prodotto" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2656,116 +2660,116 @@ msgstr "" "modello si integra con i modelli Ordine e Prodotto e memorizza un " "riferimento ad essi." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "" "Il prezzo pagato dal cliente per questo prodotto al momento dell'acquisto." -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Prezzo di acquisto al momento dell'ordine" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Commenti interni per gli amministratori su questo prodotto ordinato" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Commenti interni" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Notifiche degli utenti" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "Rappresentazione JSON degli attributi di questo elemento" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Attributi del prodotto ordinati" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Riferimento all'ordine padre che contiene questo prodotto" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Ordine dei genitori" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Il prodotto specifico associato a questa riga d'ordine" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Quantità di questo prodotto specifico nell'ordine" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Quantità di prodotto" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Stato attuale di questo prodotto nell'ordine" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Stato della linea di prodotti" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "L'ordine-prodotto deve avere un ordine associato!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Azione errata specificata per il feedback: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "non è possibile dare un riscontro a un ordine non ricevuto" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Nome" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL dell'integrazione" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Credenziali di autenticazione" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "È possibile avere un solo provider CRM predefinito" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Link al CRM dell'ordine" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Link al CRM degli ordini" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Rappresenta la funzionalità di download degli asset digitali associati agli " "ordini. La classe DigitalAssetDownload offre la possibilità di gestire e " @@ -2775,11 +2779,11 @@ msgstr "" "il download della risorsa quando l'ordine associato è in uno stato " "completato." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Scaricare" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Scaricamento" @@ -2787,8 +2791,8 @@ msgstr "Scaricamento" msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" -"per aggiungere un feedback è necessario fornire un commento, una valutazione " -"e l'uuid del prodotto dell'ordine." +"per aggiungere un feedback è necessario fornire un commento, una valutazione" +" e l'uuid del prodotto dell'ordine." #: engine/core/sitemaps.py:25 msgid "Home" @@ -2980,8 +2984,7 @@ msgstr "Hello %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Grazie per il vostro ordine #%(order.pk)s! Siamo lieti di informarla che " @@ -3010,8 +3013,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(config.EMAIL_HOST_USER)s." msgstr "" -"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero " -"%(config.EMAIL_HOST_USER)s." +"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero" +" %(config.EMAIL_HOST_USER)s." #: engine/core/templates/digital_order_created_email.html:133 #, python-format @@ -3063,8 +3066,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(contact_email)s." msgstr "" -"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero " -"%(contact_email)s." +"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero" +" %(contact_email)s." #: engine/core/templates/digital_order_delivered_email.html:165 #: engine/core/templates/promocode_granted_email.html:108 @@ -3096,8 +3099,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Grazie per il vostro ordine! Siamo lieti di confermare il suo acquisto. Di " @@ -3128,11 +3130,11 @@ msgstr "" "tutti i diritti\n" " riservato" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Sono richiesti sia i dati che il timeout" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" "Valore di timeout non valido, deve essere compreso tra 0 e 216000 secondi." @@ -3165,14 +3167,14 @@ msgstr "Non si ha il permesso di eseguire questa azione." msgid "NOMINATIM_URL must be configured." msgstr "Il parametro NOMINATIM_URL deve essere configurato!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -"Le dimensioni dell'immagine non devono superare w{max_width} x h{max_height} " -"pixel" +"Le dimensioni dell'immagine non devono superare w{max_width} x h{max_height}" +" pixel" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3181,7 +3183,7 @@ msgstr "" "XML. Assicura che la risposta includa l'intestazione del tipo di contenuto " "appropriato per XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3191,17 +3193,17 @@ msgstr "" "funzione elabora la richiesta, recupera la risposta dettagliata della " "sitemap e imposta l'intestazione Content-Type per XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Restituisce un elenco di lingue supportate e le informazioni corrispondenti." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Restituisce i parametri del sito web come oggetto JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3209,11 +3211,11 @@ msgstr "" "Gestisce le operazioni di cache, come la lettura e l'impostazione dei dati " "della cache con una chiave e un timeout specificati." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Gestisce l'invio del modulo `contatti`." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3221,67 +3223,58 @@ msgstr "" "Gestisce le richieste di elaborazione e validazione degli URL dalle " "richieste POST in arrivo." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Gestisce le query di ricerca globali." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Gestisce la logica dell'acquisto come azienda senza registrazione." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestisce il download di una risorsa digitale associata a un ordine.\n" -"Questa funzione tenta di servire il file della risorsa digitale che si trova " -"nella directory di archiviazione del progetto. Se il file non viene trovato, " -"viene generato un errore HTTP 404 per indicare che la risorsa non è " -"disponibile." +"Questa funzione tenta di servire il file della risorsa digitale che si trova nella directory di archiviazione del progetto. Se il file non viene trovato, viene generato un errore HTTP 404 per indicare che la risorsa non è disponibile." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid è obbligatorio" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "ordine prodotto non esistente" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "È possibile scaricare l'asset digitale una sola volta" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "l'ordine deve essere pagato prima di scaricare il bene digitale" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Il prodotto dell'ordine non ha un prodotto" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon non trovata" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestisce le richieste per la favicon di un sito web.\n" -"Questa funzione tenta di servire il file favicon situato nella cartella " -"statica del progetto. Se il file favicon non viene trovato, viene generato " -"un errore HTTP 404 per indicare che la risorsa non è disponibile." +"Questa funzione tenta di servire il file favicon situato nella cartella statica del progetto. Se il file favicon non viene trovato, viene generato un errore HTTP 404 per indicare che la risorsa non è disponibile." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Reindirizza la richiesta alla pagina indice dell'amministrazione. La " @@ -3289,16 +3282,16 @@ msgstr "" "indice dell'interfaccia di amministrazione di Django. Utilizza la funzione " "`redirect` di Django per gestire il reindirizzamento HTTP." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Restituisce la versione corrente di eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Entrate e ordini (ultimo %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Restituisce le variabili personalizzate per Dashboard." @@ -3313,19 +3306,20 @@ msgstr "" "Definisce un insieme di viste per la gestione delle operazioni relative a " "Evibes. La classe EvibesViewSet eredita da ModelViewSet e fornisce " "funzionalità per la gestione di azioni e operazioni sulle entità Evibes. " -"Include il supporto per classi di serializzatori dinamici in base all'azione " -"corrente, permessi personalizzabili e formati di rendering." +"Include il supporto per classi di serializzatori dinamici in base all'azione" +" corrente, permessi personalizzabili e formati di rendering." #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Rappresenta un insieme di viste per la gestione degli oggetti " -"AttributeGroup. Gestisce le operazioni relative agli AttributeGroup, tra cui " -"il filtraggio, la serializzazione e il recupero dei dati. Questa classe fa " +"AttributeGroup. Gestisce le operazioni relative agli AttributeGroup, tra cui" +" il filtraggio, la serializzazione e il recupero dei dati. Questa classe fa " "parte del livello API dell'applicazione e fornisce un modo standardizzato " "per elaborare le richieste e le risposte per i dati di AttributeGroup." @@ -3342,16 +3336,16 @@ msgstr "" "dell'applicazione. Fornisce un insieme di endpoint API per interagire con i " "dati Attribute. Questa classe gestisce l'interrogazione, il filtraggio e la " "serializzazione degli oggetti Attribute, consentendo un controllo dinamico " -"sui dati restituiti, come il filtraggio per campi specifici o il recupero di " -"informazioni dettagliate o semplificate, a seconda della richiesta." +"sui dati restituiti, come il filtraggio per campi specifici o il recupero di" +" informazioni dettagliate o semplificate, a seconda della richiesta." #: engine/core/viewsets.py:198 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Un insieme di viste per la gestione degli oggetti AttributeValue. Questo " "insieme di viste fornisce funzionalità per elencare, recuperare, creare, " @@ -3383,9 +3377,9 @@ msgid "" "endpoints for Brand objects." msgstr "" "Rappresenta un insieme di viste per la gestione delle istanze del marchio. " -"Questa classe fornisce funzionalità per interrogare, filtrare e serializzare " -"gli oggetti Brand. Utilizza il framework ViewSet di Django per semplificare " -"l'implementazione di endpoint API per gli oggetti Brand." +"Questa classe fornisce funzionalità per interrogare, filtrare e serializzare" +" gli oggetti Brand. Utilizza il framework ViewSet di Django per semplificare" +" l'implementazione di endpoint API per gli oggetti Brand." #: engine/core/viewsets.py:458 msgid "" @@ -3400,8 +3394,8 @@ msgstr "" "Gestisce le operazioni relative al modello `Product` nel sistema. Questa " "classe fornisce un insieme di viste per la gestione dei prodotti, compreso " "il loro filtraggio, la serializzazione e le operazioni su istanze " -"specifiche. Si estende da `EvibesViewSet` per utilizzare funzionalità comuni " -"e si integra con il framework Django REST per le operazioni API RESTful. " +"specifiche. Si estende da `EvibesViewSet` per utilizzare funzionalità comuni" +" e si integra con il framework Django REST per le operazioni API RESTful. " "Include metodi per recuperare i dettagli del prodotto, applicare i permessi " "e accedere ai feedback correlati di un prodotto." @@ -3413,9 +3407,9 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Rappresenta un insieme di viste per la gestione degli oggetti Vendor. Questo " -"insieme di viste consente di recuperare, filtrare e serializzare i dati del " -"fornitore. Definisce il queryset, le configurazioni dei filtri e le classi " +"Rappresenta un insieme di viste per la gestione degli oggetti Vendor. Questo" +" insieme di viste consente di recuperare, filtrare e serializzare i dati del" +" fornitore. Definisce il queryset, le configurazioni dei filtri e le classi " "di serializzazione utilizzate per gestire le diverse azioni. Lo scopo di " "questa classe è fornire un accesso semplificato alle risorse relative a " "Vendor attraverso il framework REST di Django." @@ -3425,14 +3419,14 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Rappresentazione di un insieme di viste che gestisce gli oggetti Feedback. " -"Questa classe gestisce le operazioni relative agli oggetti Feedback, tra cui " -"l'elencazione, il filtraggio e il recupero dei dettagli. Lo scopo di questo " -"insieme di viste è fornire serializzatori diversi per azioni diverse e " +"Questa classe gestisce le operazioni relative agli oggetti Feedback, tra cui" +" l'elencazione, il filtraggio e il recupero dei dettagli. Lo scopo di questo" +" insieme di viste è fornire serializzatori diversi per azioni diverse e " "implementare una gestione basata sui permessi degli oggetti Feedback " "accessibili. Estende l'insieme di base `EvibesViewSet` e fa uso del sistema " "di filtraggio di Django per interrogare i dati." @@ -3442,9 +3436,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet per la gestione degli ordini e delle operazioni correlate. Questa " @@ -3460,8 +3454,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Fornisce un insieme di viste per la gestione delle entità OrderProduct. " @@ -3474,7 +3468,8 @@ msgstr "" #: engine/core/viewsets.py:974 msgid "Manages operations related to Product images in the application. " msgstr "" -"Gestisce le operazioni relative alle immagini dei prodotti nell'applicazione." +"Gestisce le operazioni relative alle immagini dei prodotti " +"nell'applicazione." #: engine/core/viewsets.py:988 msgid "" @@ -3496,8 +3491,8 @@ msgstr "Gestisce le operazioni relative ai dati delle scorte nel sistema." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3509,8 +3504,8 @@ msgstr "" "ViewSet facilita funzionalità quali l'aggiunta, la rimozione e le azioni di " "massa per i prodotti della lista dei desideri. I controlli delle " "autorizzazioni sono integrati per garantire che gli utenti possano gestire " -"solo la propria lista dei desideri, a meno che non vengano concessi permessi " -"espliciti." +"solo la propria lista dei desideri, a meno che non vengano concessi permessi" +" espliciti." #: engine/core/viewsets.py:1183 msgid "" @@ -3520,8 +3515,8 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"Questa classe fornisce la funzionalità viewset per la gestione degli oggetti " -"`Address`. La classe AddressViewSet consente operazioni CRUD, filtri e " +"Questa classe fornisce la funzionalità viewset per la gestione degli oggetti" +" `Address`. La classe AddressViewSet consente operazioni CRUD, filtri e " "azioni personalizzate relative alle entità indirizzo. Include comportamenti " "specializzati per diversi metodi HTTP, override del serializzatore e " "gestione dei permessi in base al contesto della richiesta." diff --git a/engine/core/locale/ja_JP/LC_MESSAGES/django.mo b/engine/core/locale/ja_JP/LC_MESSAGES/django.mo index 0a4782d8c882d890011a6079898ae7f860d150e1..8f942e1b2b57ebc2daa58a7ddb65959b4fa5f13d 100644 GIT binary patch delta 14875 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 diff --git a/engine/core/locale/pl_PL/LC_MESSAGES/django.po b/engine/core/locale/pl_PL/LC_MESSAGES/django.po index 364e5a30..96951b78 100644 --- a/engine/core/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/core/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Jest aktywny" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Jeśli ustawione na false, obiekt ten nie może być widoczny dla użytkowników " "bez wymaganych uprawnień." @@ -74,65 +75,65 @@ msgstr "Metadane" msgid "timestamps" msgstr "Znaczniki czasu" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktywuj wybrane %(verbose_name_plural)s" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Wybrane elementy zostały aktywowane!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Dezaktywacja wybranego %(verbose_name_plural)s" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Wybrane elementy zostały dezaktywowane!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Wartość atrybutu" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Wartości atrybutów" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Obraz" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Obrazy" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Stan magazynowy" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Akcje" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Zamów produkt" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Zamawianie produktów" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Dzieci" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Konfiguracja" @@ -156,7 +157,8 @@ msgstr "Dostarczone" msgid "canceled" msgstr "Anulowane" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Nie powiodło się" @@ -198,48 +200,47 @@ msgstr "" "negocjację treści. Język można wybrać za pomocą Accept-Language i parametru " "zapytania." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Pamięć podręczna we/wy" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Zastosuj tylko klucz, aby odczytać dozwolone dane z pamięci podręcznej.\n" -"Zastosuj klucz, dane i limit czasu z uwierzytelnianiem, aby zapisać dane w " -"pamięci podręcznej." +"Zastosuj klucz, dane i limit czasu z uwierzytelnianiem, aby zapisać dane w pamięci podręcznej." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Pobierz listę obsługiwanych języków" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Uzyskaj dostępne parametry aplikacji" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Wyślij wiadomość do zespołu wsparcia" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Żądanie adresu URL CORSed. Dozwolony jest tylko protokół https." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Wyszukiwanie między produktami, kategoriami i markami" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "Globalny punkt końcowy wyszukiwania do zapytań w tabelach projektu" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Zakup zamówienia jako firma" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -247,7 +248,7 @@ msgstr "" "Kup zamówienie jako firma, używając dostarczonych `products` z " "`product_uuid` i `attributes`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "pobranie zasobu cyfrowego z zakupionego zamówienia cyfrowego" @@ -274,7 +275,8 @@ msgstr "" "nieedytowalnych" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Przepisanie niektórych pól istniejącej grupy atrybutów z zachowaniem " "atrybutów nieedytowalnych" @@ -329,7 +331,8 @@ msgstr "" "nieedytowalnych" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej wartości atrybutu, zapisując wartości " "nieedytowalne" @@ -366,9 +369,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" @@ -388,11 +391,11 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Wyszukiwanie podciągów z uwzględnieniem wielkości liter w human_readable_id, " -"order_products.product.name i order_products.product.partnumber." +"Wyszukiwanie podciągów z uwzględnieniem wielkości liter w human_readable_id," +" order_products.product.name i order_products.product.partnumber." #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -425,14 +428,14 @@ msgstr "Filtrowanie według identyfikatora UUID użytkownika" #: engine/core/docs/drf/viewsets.py:347 msgid "Filter by order status (case-insensitive substring match)" msgstr "" -"Filtrowanie według statusu zamówienia (dopasowanie podciągu z uwzględnieniem " -"wielkości liter)" +"Filtrowanie według statusu zamówienia (dopasowanie podciągu z uwzględnieniem" +" wielkości liter)" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Kolejność według jednego z: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. Prefiks z \"-\" dla malejącego " @@ -444,7 +447,8 @@ msgstr "Pobieranie pojedynczej kategorii (widok szczegółowy)" #: engine/core/docs/drf/viewsets.py:371 msgid "Order UUID or human-readable id" -msgstr "Identyfikator UUID zamówienia lub identyfikator czytelny dla człowieka" +msgstr "" +"Identyfikator UUID zamówienia lub identyfikator czytelny dla człowieka" #: engine/core/docs/drf/viewsets.py:381 msgid "create an order" @@ -490,7 +494,7 @@ msgstr "pobieranie bieżącego oczekującego zamówienia użytkownika" msgid "retrieves a current pending order of an authenticated user" msgstr "pobiera bieżące oczekujące zamówienie uwierzytelnionego użytkownika" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "zakup zamówienia bez tworzenia konta" @@ -632,28 +636,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrowanie według jednej lub więcej par atrybut/wartość. \n" "- Składnia**: `attr_name=method-value[;attr2=method2-value2]...`\n" -"- **Metody** (domyślnie `icontains` jeśli pominięte): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- Wpisywanie wartości**: JSON jest próbowany jako pierwszy (więc można " -"przekazywać listy/dykty), `true`/`false` dla booleans, integers, floats; w " -"przeciwnym razie traktowane jako string. \n" -"- Base64**: prefiks z `b64-` do bezpiecznego dla adresów URL kodowania " -"base64 surowej wartości. \n" +"- **Metody** (domyślnie `icontains` jeśli pominięte): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- Wpisywanie wartości**: JSON jest próbowany jako pierwszy (więc można przekazywać listy/dykty), `true`/`false` dla booleans, integers, floats; w przeciwnym razie traktowane jako string. \n" +"- Base64**: prefiks z `b64-` do bezpiecznego dla adresów URL kodowania base64 surowej wartości. \n" "Przykłady: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" @@ -668,12 +662,10 @@ msgstr "(dokładny) UUID produktu" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Rozdzielana przecinkami lista pól do posortowania. Prefiks z `-` dla " -"sortowania malejącego. \n" +"Rozdzielana przecinkami lista pól do posortowania. Prefiks z `-` dla sortowania malejącego. \n" "**Dozwolone:** uuid, rating, name, slug, created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -687,9 +679,6 @@ msgid "Product UUID or slug" msgstr "UUID produktu lub Slug" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Tworzenie produktu" @@ -999,8 +988,8 @@ msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Nie podano wyszukiwanego hasła." @@ -1009,8 +998,8 @@ msgstr "Nie podano wyszukiwanego hasła." msgid "Search" msgstr "Wyszukiwanie" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1056,8 +1045,8 @@ msgid "Quantity" msgstr "Ilość" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Ślimak" @@ -1073,7 +1062,7 @@ msgstr "Uwzględnienie podkategorii" msgid "Include personal ordered" msgstr "Obejmuje produkty zamawiane osobiście" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1094,12 +1083,12 @@ msgid "Bought before (inclusive)" msgstr "Kupione wcześniej (włącznie)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "E-mail użytkownika" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "UUID użytkownika" @@ -1123,252 +1112,253 @@ msgstr "Cała kategoria (ma co najmniej 1 produkt lub nie)" msgid "Level" msgstr "Poziom" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "UUID produktu" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Klucz do wyszukania lub ustawienia w pamięci podręcznej" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Dane do przechowywania w pamięci podręcznej" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Limit czasu w sekundach na wprowadzenie danych do pamięci podręcznej" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Dane w pamięci podręcznej" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Kamelizowane dane JSON z żądanego adresu URL" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Dozwolone są tylko adresy URL zaczynające się od http(s)://" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Dodawanie produktu do zamówienia" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Nie znaleziono zamówienia {order_uuid}!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Usunięcie produktu z zamówienia" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Usuń wszystkie produkty z zamówienia" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Kup zamówienie" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Podaj albo order_uuid albo order_hr_id - wzajemnie się wykluczają!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Nieprawidłowy typ pochodzi z metody order.buy(): {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Wykonanie akcji na liście produktów w zamówieniu" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Usuń/Dodaj" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Akcją musi być \"dodaj\" lub \"usuń\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Wykonanie akcji na liście produktów na liście życzeń" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Podaj wartość `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista życzeń {wishlist_uuid} nie została znaleziona!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Dodawanie produktu do zamówienia" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Usunięcie produktu z zamówienia" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Usunięcie produktu z zamówienia" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Usunięcie produktu z zamówienia" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Kup zamówienie" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Prześlij atrybuty jako ciąg znaków sformatowany w następujący sposób: " "attr1=value1,attr2=value2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Dodawanie lub usuwanie opinii dla produktu zamówienia" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Akcją musi być `add` lub `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Orderproduct {order_product_uuid} nie został znaleziony!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Oryginalny ciąg adresu podany przez użytkownika" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nie istnieje: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Limit musi wynosić od 1 do 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - działa jak urok" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Atrybuty" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Atrybuty pogrupowane" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Grupy atrybutów" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Kategorie" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Marki" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Kategorie" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Procentowy narzut" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Które atrybuty i wartości mogą być używane do filtrowania tej kategorii." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimalne i maksymalne ceny produktów w tej kategorii, jeśli są dostępne." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Tagi dla tej kategorii" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Produkty w tej kategorii" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Sprzedawcy" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Szerokość geograficzna (współrzędna Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Długość geograficzna (współrzędna X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Jak" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Wartość oceny od 1 do 10 włącznie lub 0, jeśli nie jest ustawiona." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Reprezentuje informacje zwrotne od użytkownika." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Powiadomienia" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Adres URL pobierania dla tego produktu zamówienia, jeśli dotyczy" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Informacje zwrotne" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Lista zamówionych produktów w tym zamówieniu" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Adres rozliczeniowy" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1376,53 +1366,53 @@ msgstr "" "Adres wysyłki dla tego zamówienia, pozostaw pusty, jeśli jest taki sam jak " "adres rozliczeniowy lub jeśli nie dotyczy" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Całkowita cena tego zamówienia" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Całkowita ilość produktów w zamówieniu" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Czy wszystkie produkty w zamówieniu są cyfrowe?" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transakcje dla tego zamówienia" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Zamówienia" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "Adres URL obrazu" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Zdjęcia produktu" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Kategoria" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Informacje zwrotne" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Marka" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Grupy atrybutów" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1430,7 +1420,7 @@ msgstr "Grupy atrybutów" msgid "price" msgstr "Cena" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1438,39 +1428,39 @@ msgstr "Cena" msgid "quantity" msgstr "Ilość" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Liczba informacji zwrotnych" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Produkty dostępne tylko dla zamówień osobistych" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Cena rabatowa" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Produkty" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Promocodes" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Produkty w sprzedaży" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Promocje" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Sprzedawca" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1478,99 +1468,98 @@ msgstr "Sprzedawca" msgid "product" msgstr "Produkt" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Produkty z listy życzeń" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Listy życzeń" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Produkty Tagged" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Tagi produktu" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Kategorie oznaczone tagami" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Tagi kategorii" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Nazwa projektu" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Nazwa firmy" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Adres firmy" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Numer telefonu firmy" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" -msgstr "" -"\"email from\", czasami musi być użyty zamiast wartości użytkownika hosta" +msgstr "\"email from\", czasami musi być użyty zamiast wartości użytkownika hosta" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Użytkownik hosta poczty e-mail" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Maksymalna kwota płatności" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Minimalna kwota płatności" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Dane analityczne" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Dane reklamowe" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Konfiguracja" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Kod języka" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Nazwa języka" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Flaga języka, jeśli istnieje :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Pobierz listę obsługiwanych języków" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Wyniki wyszukiwania produktów" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Wyniki wyszukiwania produktów" @@ -1587,23 +1576,23 @@ msgstr "" "bardziej efektywnego kategoryzowania i zarządzania atrybutami w złożonym " "systemie." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Rodzic tej grupy" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Grupa atrybutów nadrzędnych" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Nazwa grupy atrybutów" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Grupa atrybutów" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1616,55 +1605,55 @@ msgstr "" "Reprezentuje jednostkę dostawcy zdolną do przechowywania informacji o " "zewnętrznych dostawcach i ich wymaganiach dotyczących interakcji. Klasa " "Vendor służy do definiowania i zarządzania informacjami związanymi z " -"zewnętrznym dostawcą. Przechowuje nazwę dostawcy, szczegóły uwierzytelniania " -"wymagane do komunikacji oraz procentowe znaczniki stosowane do produktów " +"zewnętrznym dostawcą. Przechowuje nazwę dostawcy, szczegóły uwierzytelniania" +" wymagane do komunikacji oraz procentowe znaczniki stosowane do produktów " "pobieranych od dostawcy. Model ten zachowuje również dodatkowe metadane i " "ograniczenia, dzięki czemu nadaje się do użytku w systemach, które " "współpracują z zewnętrznymi dostawcami." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Przechowuje dane uwierzytelniające i punkty końcowe wymagane do komunikacji " "API dostawcy." -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Informacje o uwierzytelnianiu" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "Definiowanie znaczników dla produktów pobranych od tego dostawcy" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Procentowa marża sprzedawcy" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Nazwa tego sprzedawcy" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Nazwa sprzedawcy" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "plik odpowiedzi" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "odpowiedź sprzedawcy na ostatnie przetwarzanie" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Ścieżka do pliku integracji dostawcy" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Ścieżka integracji" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1679,27 +1668,27 @@ msgstr "" "Obsługuje operacje eksportowane przez mixiny i zapewnia dostosowanie " "metadanych do celów administracyjnych." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Wewnętrzny identyfikator tagu produktu" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Nazwa tagu" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Przyjazna dla użytkownika nazwa etykiety produktu" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Wyświetlana nazwa znacznika" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Etykieta produktu" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1710,15 +1699,15 @@ msgstr "" "Zawiera atrybuty dla wewnętrznego identyfikatora tagu i przyjaznej dla " "użytkownika nazwy wyświetlanej." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "tag kategorii" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "tagi kategorii" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1740,106 +1729,107 @@ msgstr "" "administratorom określanie nazwy, opisu i hierarchii kategorii, a także " "przypisywanie atrybutów, takich jak obrazy, tagi lub priorytety." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Prześlij obraz reprezentujący tę kategorię" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Obraz kategorii" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Zdefiniuj procentowy narzut dla produktów w tej kategorii." -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Rodzic tej kategorii w celu utworzenia struktury hierarchicznej" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Kategoria nadrzędna" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Nazwa kategorii" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Podaj nazwę dla tej kategorii" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Dodaj szczegółowy opis dla tej kategorii" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Opis kategorii" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "tagi, które pomagają opisać lub pogrupować tę kategorię" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Priorytet" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Reprezentuje obiekt marki w systemie. Ta klasa obsługuje informacje i " -"atrybuty związane z marką, w tym jej nazwę, logo, opis, powiązane kategorie, " -"unikalny slug i kolejność priorytetów. Pozwala na organizację i " +"atrybuty związane z marką, w tym jej nazwę, logo, opis, powiązane kategorie," +" unikalny slug i kolejność priorytetów. Pozwala na organizację i " "reprezentację danych związanych z marką w aplikacji." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Nazwa tej marki" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Nazwa marki" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Prześlij logo reprezentujące tę markę" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Mały wizerunek marki" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Prześlij duże logo reprezentujące tę markę" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Duży wizerunek marki" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Dodaj szczegółowy opis marki" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Opis marki" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Opcjonalne kategorie, z którymi powiązana jest ta marka" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Kategorie" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1852,72 +1842,72 @@ msgstr "" "częścią systemu zarządzania zapasami, umożliwiając śledzenie i ocenę " "produktów dostępnych od różnych dostawców." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Sprzedawca dostarczający ten produkt" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Powiązany sprzedawca" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Ostateczna cena dla klienta po uwzględnieniu marży" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Cena sprzedaży" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Produkt powiązany z tym wpisem magazynowym" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Produkt powiązany" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Cena zapłacona sprzedawcy za ten produkt" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Cena zakupu przez sprzedawcę" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Dostępna ilość produktu w magazynie" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Ilość w magazynie" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "Jednostki SKU przypisane przez dostawcę w celu identyfikacji produktu" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "SKU sprzedawcy" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Plik cyfrowy powiązany z tymi zapasami, jeśli dotyczy" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Plik cyfrowy" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Atrybuty systemu" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Zapisy magazynowe" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1938,61 +1928,70 @@ msgstr "" "definiowania i manipulowania danymi produktu i powiązanymi z nimi " "informacjami w aplikacji." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Kategoria, do której należy ten produkt" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Opcjonalnie można powiązać ten produkt z marką" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Tagi, które pomagają opisać lub pogrupować ten produkt" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Wskazuje, czy produkt jest dostarczany cyfrowo." -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Czy produkt jest cyfrowy?" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" +"wskazuje, czy ten produkt powinien być aktualizowany z zadania okresowego" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "czy produkt można aktualizować" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Wyraźna nazwa identyfikująca produkt" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Nazwa produktu" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Dodaj szczegółowy opis produktu" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Opis produktu" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Numer części dla tego produktu" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Numer części" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Jednostka magazynowa dla tego produktu" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Reprezentuje atrybut w systemie. Ta klasa jest używana do definiowania i " @@ -2002,91 +2001,91 @@ msgstr "" "string, integer, float, boolean, array i object. Pozwala to na dynamiczną i " "elastyczną strukturę danych." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Grupa tego atrybutu" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "String" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Integer" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Pływak" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Wartość logiczna" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Tablica" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Obiekt" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Typ wartości atrybutu" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Typ wartości" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Nazwa tego atrybutu" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Nazwa atrybutu" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "można filtrować" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Które atrybuty i wartości mogą być używane do filtrowania tej kategorii." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Atrybut" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Reprezentuje określoną wartość atrybutu powiązanego z produktem. Łączy " "\"atrybut\" z unikalną \"wartością\", umożliwiając lepszą organizację i " "dynamiczną reprezentację cech produktu." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Atrybut tej wartości" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Konkretny produkt powiązany z wartością tego atrybutu" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Konkretna wartość dla tego atrybutu" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2096,87 +2095,88 @@ msgstr "" "określania kolejności ich wyświetlania. Zawiera również funkcję dostępności " "z tekstem alternatywnym dla obrazów." -#: engine/core/models.py:849 -msgid "provide alternative text for the image for accessibility" -msgstr "Zapewnienie alternatywnego tekstu dla obrazu w celu ułatwienia dostępu" - #: engine/core/models.py:850 +msgid "provide alternative text for the image for accessibility" +msgstr "" +"Zapewnienie alternatywnego tekstu dla obrazu w celu ułatwienia dostępu" + +#: engine/core/models.py:851 msgid "image alt text" msgstr "Tekst alternatywny obrazu" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Prześlij plik obrazu dla tego produktu" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Obraz produktu" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Określa kolejność wyświetlania obrazów" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Priorytet wyświetlania" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Produkt, który przedstawia ten obraz" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Zdjęcia produktów" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Reprezentuje kampanię promocyjną dla produktów z rabatem. Ta klasa służy do " -"definiowania i zarządzania kampaniami promocyjnymi, które oferują procentowy " -"rabat na produkty. Klasa zawiera atrybuty do ustawiania stopy rabatu, " +"definiowania i zarządzania kampaniami promocyjnymi, które oferują procentowy" +" rabat na produkty. Klasa zawiera atrybuty do ustawiania stopy rabatu, " "dostarczania szczegółów na temat promocji i łączenia jej z odpowiednimi " "produktami. Integruje się z katalogiem produktów w celu określenia pozycji, " "których dotyczy kampania." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Rabat procentowy na wybrane produkty" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Procent rabatu" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Podaj unikalną nazwę tej promocji" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Nazwa promocji" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Opis promocji" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Wybierz produkty objęte promocją" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Dołączone produkty" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Promocja" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2184,64 +2184,64 @@ msgid "" "operations for adding and removing multiple products at once." msgstr "" "Reprezentuje listę życzeń użytkownika do przechowywania i zarządzania " -"pożądanymi produktami. Klasa zapewnia funkcjonalność do zarządzania kolekcją " -"produktów, wspierając operacje takie jak dodawanie i usuwanie produktów, a " +"pożądanymi produktami. Klasa zapewnia funkcjonalność do zarządzania kolekcją" +" produktów, wspierając operacje takie jak dodawanie i usuwanie produktów, a " "także wspierając operacje dodawania i usuwania wielu produktów jednocześnie." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Produkty, które użytkownik oznaczył jako poszukiwane" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Użytkownik posiadający tę listę życzeń" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Właściciel listy życzeń" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Lista życzeń" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Reprezentuje rekord dokumentu powiązany z produktem. Ta klasa służy do " -"przechowywania informacji o dokumentach związanych z określonymi produktami, " -"w tym przesyłanych plików i ich metadanych. Zawiera metody i właściwości do " -"obsługi typu pliku i ścieżki przechowywania plików dokumentów. Rozszerza " +"przechowywania informacji o dokumentach związanych z określonymi produktami," +" w tym przesyłanych plików i ich metadanych. Zawiera metody i właściwości do" +" obsługi typu pliku i ścieżki przechowywania plików dokumentów. Rozszerza " "funkcjonalność z określonych miksów i zapewnia dodatkowe niestandardowe " "funkcje." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Film dokumentalny" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Filmy dokumentalne" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Nierozwiązany" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Reprezentuje jednostkę adresu, która zawiera szczegóły lokalizacji i " "powiązania z użytkownikiem. Zapewnia funkcjonalność przechowywania danych " @@ -2249,64 +2249,64 @@ msgstr "" "Klasa ta została zaprojektowana do przechowywania szczegółowych informacji " "adresowych, w tym elementów takich jak ulica, miasto, region, kraj i " "geolokalizacja (długość i szerokość geograficzna). Obsługuje integrację z " -"interfejsami API geokodowania, umożliwiając przechowywanie nieprzetworzonych " -"odpowiedzi API do dalszego przetwarzania lub kontroli. Klasa umożliwia " +"interfejsami API geokodowania, umożliwiając przechowywanie nieprzetworzonych" +" odpowiedzi API do dalszego przetwarzania lub kontroli. Klasa umożliwia " "również powiązanie adresu z użytkownikiem, ułatwiając spersonalizowaną " "obsługę danych." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Linia adresu dla klienta" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Linia adresowa" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "ul." -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Okręg" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Miasto" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Region" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Kod pocztowy" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Kraj" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Pełna odpowiedź JSON z geokodera dla tego adresu" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Przechowywana odpowiedź JSON z usługi geokodowania" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Adres" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adresy" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2323,73 +2323,73 @@ msgstr "" "Obejmuje funkcję sprawdzania poprawności i stosowania kodu promocyjnego do " "zamówienia, zapewniając jednocześnie spełnienie ograniczeń." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Unikalny kod używany przez użytkownika do realizacji rabatu." -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Identyfikator kodu promocyjnego" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Stała kwota rabatu stosowana, jeśli procent nie jest używany" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Stała kwota rabatu" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Rabat procentowy stosowany w przypadku niewykorzystania stałej kwoty" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Rabat procentowy" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Znacznik czasu wygaśnięcia kodu promocyjnego" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Końcowy czas ważności" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Znacznik czasu, od którego ten kod promocyjny jest ważny" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Czas rozpoczęcia ważności" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Znacznik czasu użycia kodu promocyjnego, pusty, jeśli nie został jeszcze " "użyty." -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Znacznik czasu użycia" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Użytkownik przypisany do tego kodu promocyjnego, jeśli dotyczy" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Przypisany użytkownik" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Kod promocyjny" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Kody promocyjne" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2397,21 +2397,21 @@ msgstr "" "Należy zdefiniować tylko jeden rodzaj rabatu (kwotowy lub procentowy), ale " "nie oba lub żaden z nich." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Kod promocyjny został już wykorzystany" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Nieprawidłowy typ rabatu dla kodu promocyjnego {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2423,142 +2423,143 @@ msgstr "" "Funkcjonalność wspiera również zarządzanie produktami w cyklu życia " "zamówienia." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Adres rozliczeniowy użyty dla tego zamówienia" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Opcjonalny kod promocyjny zastosowany do tego zamówienia" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Zastosowany kod promocyjny" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Adres wysyłki użyty dla tego zamówienia" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Adres wysyłki" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Aktualny status zamówienia w jego cyklu życia" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Status zamówienia" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "Struktura JSON powiadomień do wyświetlenia użytkownikom, w interfejsie " "administratora używany jest widok tabeli" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "Reprezentacja JSON atrybutów zamówienia dla tego zamówienia" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "Użytkownik, który złożył zamówienie" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Użytkownik" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Znacznik czasu, kiedy zamówienie zostało sfinalizowane" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Kup czas" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Czytelny dla człowieka identyfikator zamówienia" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "Identyfikator czytelny dla człowieka" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Zamówienie" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" -msgstr "Użytkownik może mieć tylko jedno oczekujące zlecenie w danym momencie!" +msgstr "" +"Użytkownik może mieć tylko jedno oczekujące zlecenie w danym momencie!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Nie można dodać produktów do zamówienia, które nie jest zamówieniem " "oczekującym." -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Nie można dodać nieaktywnych produktów do zamówienia" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "Nie można dodać więcej produktów niż jest dostępnych w magazynie" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Nie można usunąć produktów z zamówienia, które nie jest zamówieniem " "oczekującym." -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nie istnieje z zapytaniem <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Kod promocyjny nie istnieje" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "Możesz kupować tylko produkty fizyczne z podanym adresem wysyłki!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Adres nie istnieje" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "W tej chwili nie możesz dokonać zakupu, spróbuj ponownie za kilka minut." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Nieprawidłowa wartość siły" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Nie można kupić pustego zamówienia!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "" "Nie można usunąć produktów z zamówienia, które nie jest zamówieniem " "oczekującym." -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Użytkownik bez salda nie może kupować za saldo!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Niewystarczające środki do zrealizowania zamówienia" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2567,7 +2568,7 @@ msgstr "" "informacje: imię i nazwisko klienta, adres e-mail klienta, numer telefonu " "klienta." -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -2575,7 +2576,7 @@ msgstr "" "Nieprawidłowa metoda płatności: {payment_method} z " "{available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2588,36 +2589,37 @@ msgstr "" "temat konkretnych produktów, które zostały przez nich zakupione. Zawiera " "atrybuty do przechowywania komentarzy użytkowników, odniesienie do " "powiązanego produktu w zamówieniu oraz ocenę przypisaną przez użytkownika. " -"Klasa wykorzystuje pola bazy danych do efektywnego modelowania i zarządzania " -"danymi opinii." +"Klasa wykorzystuje pola bazy danych do efektywnego modelowania i zarządzania" +" danymi opinii." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "Komentarze użytkowników na temat ich doświadczeń z produktem" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Komentarze zwrotne" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "Odnosi się do konkretnego produktu w zamówieniu, którego dotyczy ta " "informacja zwrotna." -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Powiązany produkt zamówienia" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Ocena produktu przypisana przez użytkownika" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Ocena produktu" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2631,126 +2633,127 @@ msgid "" msgstr "" "Reprezentuje produkty powiązane z zamówieniami i ich atrybutami. Model " "OrderProduct przechowuje informacje o produkcie, który jest częścią " -"zamówienia, w tym szczegóły, takie jak cena zakupu, ilość, atrybuty produktu " -"i status. Zarządza powiadomieniami dla użytkownika i administratorów oraz " -"obsługuje operacje, takie jak zwracanie salda produktu lub dodawanie opinii. " -"Model ten zapewnia również metody i właściwości, które obsługują logikę " +"zamówienia, w tym szczegóły, takie jak cena zakupu, ilość, atrybuty produktu" +" i status. Zarządza powiadomieniami dla użytkownika i administratorów oraz " +"obsługuje operacje, takie jak zwracanie salda produktu lub dodawanie opinii." +" Model ten zapewnia również metody i właściwości, które obsługują logikę " "biznesową, taką jak obliczanie całkowitej ceny lub generowanie adresu URL " -"pobierania dla produktów cyfrowych. Model ten integruje się z modelami Order " -"i Product i przechowuje odniesienia do nich." +"pobierania dla produktów cyfrowych. Model ten integruje się z modelami Order" +" i Product i przechowuje odniesienia do nich." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "Cena zapłacona przez klienta za ten produkt w momencie zakupu." -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Cena zakupu w momencie zamówienia" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "" -"Wewnętrzne komentarze dla administratorów dotyczące tego zamówionego produktu" +"Wewnętrzne komentarze dla administratorów dotyczące tego zamówionego " +"produktu" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Uwagi wewnętrzne" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Powiadomienia użytkownika" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "Reprezentacja JSON atrybutów tego elementu" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Zamówione atrybuty produktu" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Odniesienie do zamówienia nadrzędnego zawierającego ten produkt" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Zamówienie nadrzędne" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Konkretny produkt powiązany z tą linią zamówienia" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Ilość tego konkretnego produktu w zamówieniu" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Ilość produktu" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Aktualny status tego produktu w zamówieniu" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Status linii produktów" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Orderproduct musi mieć powiązane zamówienie!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Nieprawidłowa akcja określona dla informacji zwrotnej: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "" "Nie można usunąć produktów z zamówienia, które nie jest zamówieniem " "oczekującym." -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Nazwa" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "Adres URL integracji" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Dane uwierzytelniające" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Można mieć tylko jednego domyślnego dostawcę CRM" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Łącze CRM zamówienia" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Łącza CRM zamówień" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Reprezentuje funkcjonalność pobierania zasobów cyfrowych powiązanych z " "zamówieniami. Klasa DigitalAssetDownload zapewnia możliwość zarządzania i " @@ -2760,11 +2763,11 @@ msgstr "" "generowania adresu URL do pobrania zasobu, gdy powiązane zamówienie ma " "status ukończonego." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Pobierz" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Pliki do pobrania" @@ -2965,8 +2968,7 @@ msgstr "Witaj %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Dziękujemy za zamówienie #%(order.pk)s! Z przyjemnością informujemy, że " @@ -3025,8 +3027,8 @@ msgid "" "we have successfully processed your order №%(order_uuid)s! below are the\n" " details of your order:" msgstr "" -"Pomyślnie przetworzyliśmy Twoje zamówienie №%(order_uuid)s! Poniżej znajdują " -"się szczegóły zamówienia:" +"Pomyślnie przetworzyliśmy Twoje zamówienie №%(order_uuid)s! Poniżej znajdują" +" się szczegóły zamówienia:" #: engine/core/templates/digital_order_delivered_email.html:128 msgid "" @@ -3081,8 +3083,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Dziękujemy za zamówienie! Z przyjemnością potwierdzamy zakup. Poniżej " @@ -3113,11 +3114,11 @@ msgstr "" "wszelkie prawa\n" " zastrzeżone" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Wymagane są zarówno dane, jak i limit czasu" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" "Nieprawidłowa wartość limitu czasu, musi zawierać się w przedziale od 0 do " @@ -3151,13 +3152,13 @@ msgstr "Nie masz uprawnień do wykonania tej akcji." msgid "NOMINATIM_URL must be configured." msgstr "Parametr NOMINATIM_URL musi być skonfigurowany!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Wymiary obrazu nie powinny przekraczać w{max_width} x h{max_height} pikseli." -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3165,26 +3166,26 @@ msgstr "" "Obsługuje żądanie indeksu mapy witryny i zwraca odpowiedź XML. Zapewnia, że " "odpowiedź zawiera odpowiedni nagłówek typu zawartości dla XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" "Obsługuje szczegółową odpowiedź widoku dla mapy witryny. Ta funkcja " -"przetwarza żądanie, pobiera odpowiednią szczegółową odpowiedź mapy witryny i " -"ustawia nagłówek Content-Type dla XML." +"przetwarza żądanie, pobiera odpowiednią szczegółową odpowiedź mapy witryny i" +" ustawia nagłówek Content-Type dla XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Zwraca listę obsługiwanych języków i odpowiadające im informacje." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Zwraca parametry strony internetowej jako obiekt JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3192,11 +3193,11 @@ msgstr "" "Obsługuje operacje pamięci podręcznej, takie jak odczytywanie i ustawianie " "danych pamięci podręcznej z określonym kluczem i limitem czasu." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Obsługuje zgłoszenia formularzy `kontaktuj się z nami`." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3204,66 +3205,58 @@ msgstr "" "Obsługuje żądania przetwarzania i sprawdzania poprawności adresów URL z " "przychodzących żądań POST." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Obsługuje globalne zapytania wyszukiwania." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Obsługuje logikę zakupu jako firma bez rejestracji." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Obsługuje pobieranie zasobu cyfrowego powiązanego z zamówieniem.\n" -"Ta funkcja próbuje obsłużyć plik zasobu cyfrowego znajdujący się w katalogu " -"przechowywania projektu. Jeśli plik nie zostanie znaleziony, zgłaszany jest " -"błąd HTTP 404 wskazujący, że zasób jest niedostępny." +"Ta funkcja próbuje obsłużyć plik zasobu cyfrowego znajdujący się w katalogu przechowywania projektu. Jeśli plik nie zostanie znaleziony, zgłaszany jest błąd HTTP 404 wskazujący, że zasób jest niedostępny." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "Order_product_uuid jest wymagany" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "zamówiony produkt nie istnieje" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Zasób cyfrowy można pobrać tylko raz" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "zamówienie musi zostać opłacone przed pobraniem zasobu cyfrowego" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Produkt zamówienia nie ma produktu" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "nie znaleziono favicon" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Obsługuje żądania favicon strony internetowej.\n" -"Ta funkcja próbuje obsłużyć plik favicon znajdujący się w katalogu " -"statycznym projektu. Jeśli plik favicon nie zostanie znaleziony, zgłaszany " -"jest błąd HTTP 404 wskazujący, że zasób jest niedostępny." +"Ta funkcja próbuje obsłużyć plik favicon znajdujący się w katalogu statycznym projektu. Jeśli plik favicon nie zostanie znaleziony, zgłaszany jest błąd HTTP 404 wskazujący, że zasób jest niedostępny." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Przekierowuje żądanie na stronę indeksu administratora. Funkcja obsługuje " @@ -3271,16 +3264,16 @@ msgstr "" "administratora Django. Używa funkcji `redirect` Django do obsługi " "przekierowania HTTP." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Zwraca aktualną wersję aplikacji eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Przychody i zamówienia (ostatnie %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Zwraca zmienne niestandardowe dla Dashboard." @@ -3300,16 +3293,17 @@ msgstr "" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Reprezentuje zestaw widoków do zarządzania obiektami AttributeGroup. " "Obsługuje operacje związane z AttributeGroup, w tym filtrowanie, " "serializację i pobieranie danych. Klasa ta jest częścią warstwy API " -"aplikacji i zapewnia ustandaryzowany sposób przetwarzania żądań i odpowiedzi " -"dla danych AttributeGroup." +"aplikacji i zapewnia ustandaryzowany sposób przetwarzania żądań i odpowiedzi" +" dla danych AttributeGroup." #: engine/core/viewsets.py:179 msgid "" @@ -3332,14 +3326,14 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"Zestaw widoków do zarządzania obiektami AttributeValue. Ten viewset zapewnia " -"funkcjonalność do listowania, pobierania, tworzenia, aktualizowania i " +"Zestaw widoków do zarządzania obiektami AttributeValue. Ten viewset zapewnia" +" funkcjonalność do listowania, pobierania, tworzenia, aktualizowania i " "usuwania obiektów AttributeValue. Integruje się z mechanizmami viewset " -"Django REST Framework i używa odpowiednich serializatorów dla różnych akcji. " -"Możliwości filtrowania są dostarczane przez DjangoFilterBackend." +"Django REST Framework i używa odpowiednich serializatorów dla różnych akcji." +" Możliwości filtrowania są dostarczane przez DjangoFilterBackend." #: engine/core/viewsets.py:217 msgid "" @@ -3350,8 +3344,8 @@ msgid "" "can access specific data." msgstr "" "Zarządza widokami dla operacji związanych z kategoriami. Klasa " -"CategoryViewSet jest odpowiedzialna za obsługę operacji związanych z modelem " -"kategorii w systemie. Obsługuje pobieranie, filtrowanie i serializowanie " +"CategoryViewSet jest odpowiedzialna za obsługę operacji związanych z modelem" +" kategorii w systemie. Obsługuje pobieranie, filtrowanie i serializowanie " "danych kategorii. Zestaw widoków wymusza również uprawnienia, aby zapewnić, " "że tylko autoryzowani użytkownicy mają dostęp do określonych danych." @@ -3381,8 +3375,8 @@ msgstr "" "zapewnia zestaw widoków do zarządzania produktami, w tym ich filtrowania, " "serializacji i operacji na konkretnych instancjach. Rozszerza się z " "`EvibesViewSet`, aby używać wspólnej funkcjonalności i integruje się z " -"frameworkiem Django REST dla operacji RESTful API. Zawiera metody pobierania " -"szczegółów produktu, stosowania uprawnień i uzyskiwania dostępu do " +"frameworkiem Django REST dla operacji RESTful API. Zawiera metody pobierania" +" szczegółów produktu, stosowania uprawnień i uzyskiwania dostępu do " "powiązanych informacji zwrotnych o produkcie." #: engine/core/viewsets.py:605 @@ -3395,8 +3389,8 @@ msgid "" msgstr "" "Reprezentuje zestaw widoków do zarządzania obiektami Vendor. Ten zestaw " "widoków umożliwia pobieranie, filtrowanie i serializowanie danych dostawcy. " -"Definiuje zestaw zapytań, konfiguracje filtrów i klasy serializatora używane " -"do obsługi różnych działań. Celem tej klasy jest zapewnienie usprawnionego " +"Definiuje zestaw zapytań, konfiguracje filtrów i klasy serializatora używane" +" do obsługi różnych działań. Celem tej klasy jest zapewnienie usprawnionego " "dostępu do zasobów związanych z Vendorem poprzez framework Django REST." #: engine/core/viewsets.py:625 @@ -3404,8 +3398,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Reprezentacja zestawu widoków obsługujących obiekty opinii. Ta klasa " @@ -3421,9 +3415,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet do zarządzania zamówieniami i powiązanymi operacjami. Klasa ta " @@ -3439,8 +3433,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Udostępnia zestaw widoków do zarządzania jednostkami OrderProduct. Ten " @@ -3473,8 +3467,8 @@ msgstr "Obsługuje operacje związane z danymi Stock w systemie." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3498,8 +3492,8 @@ msgstr "" "Ta klasa zapewnia funkcjonalność zestawu widoków do zarządzania obiektami " "`Address`. Klasa AddressViewSet umożliwia operacje CRUD, filtrowanie i " "niestandardowe akcje związane z jednostkami adresowymi. Obejmuje ona " -"wyspecjalizowane zachowania dla różnych metod HTTP, zastępowanie serializera " -"i obsługę uprawnień w oparciu o kontekst żądania." +"wyspecjalizowane zachowania dla różnych metod HTTP, zastępowanie serializera" +" i obsługę uprawnień w oparciu o kontekst żądania." #: engine/core/viewsets.py:1254 #, python-brace-format diff --git a/engine/core/locale/pt_BR/LC_MESSAGES/django.mo b/engine/core/locale/pt_BR/LC_MESSAGES/django.mo index fda5dcb8cd244807e4340c59cfb054cbb2a7bf6a..020731035b8d0a462da7d222273500d32d9e6645 100644 GIT binary patch delta 14855 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 diff --git a/engine/core/locale/pt_BR/LC_MESSAGES/django.po b/engine/core/locale/pt_BR/LC_MESSAGES/django.po index e4dd6c63..d81dbe92 100644 --- a/engine/core/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/core/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Está ativo" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Se definido como false, esse objeto não poderá ser visto por usuários sem a " "permissão necessária" @@ -74,65 +75,65 @@ msgstr "Metadados" msgid "timestamps" msgstr "Carimbos de data/hora" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Ativar o %(verbose_name_plural)s selecionado" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Os itens selecionados foram ativados!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Desativar o %(verbose_name_plural)s selecionado" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Os itens selecionados foram desativados!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Valor do atributo" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Valores de atributos" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Imagem" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Imagens" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Estoque" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Ações" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Pedido de produto" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Solicitar produtos" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Crianças" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Configuração" @@ -156,7 +157,8 @@ msgstr "Entregue" msgid "canceled" msgstr "Cancelado" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Falha" @@ -198,49 +200,48 @@ msgstr "" "negociação de conteúdo. O idioma pode ser selecionado com Accept-Language e " "com o parâmetro de consulta." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "E/S do cache" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Aplicar somente uma chave para ler dados permitidos do cache.\n" -"Aplicar chave, dados e tempo limite com autenticação para gravar dados no " -"cache." +"Aplicar chave, dados e tempo limite com autenticação para gravar dados no cache." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Obter uma lista de idiomas suportados" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Obter os parâmetros expostos do aplicativo" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Envie uma mensagem para a equipe de suporte" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Solicite um URL com CORS. Somente https é permitido." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Pesquisa entre produtos, categorias e marcas" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" "Ponto de extremidade de pesquisa global para consultar as tabelas do projeto" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Comprar um pedido como uma empresa" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -248,7 +249,7 @@ msgstr "" "Compre um pedido como uma empresa, usando os `products` fornecidos com " "`product_uuid` e `attributes`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "baixar um ativo digital de um pedido digital adquirido" @@ -273,7 +274,8 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescrever um grupo de atributos existente salvando os não editáveis" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Reescreva alguns campos de um grupo de atributos existente salvando os não " "editáveis" @@ -324,7 +326,8 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescreva um valor de atributo existente salvando os não editáveis" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Reescreva alguns campos de um valor de atributo existente salvando os não " "editáveis" @@ -360,9 +363,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "Meta snapshot de SEO" @@ -381,12 +384,12 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Pesquisa de substring sem distinção entre maiúsculas e minúsculas em " -"human_readable_id, order_products.product.name e order_products.product." -"partnumber" +"human_readable_id, order_products.product.name e " +"order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -422,9 +425,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordene por uma das seguintes opções: uuid, human_readable_id, user_email, " "user, status, created, modified, buy_time, random. Prefixe com '-' para " @@ -481,7 +484,7 @@ msgstr "recuperar o pedido pendente atual de um usuário" msgid "retrieves a current pending order of an authenticated user" msgstr "recupera um pedido pendente atual de um usuário autenticado" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "comprar um pedido sem criar uma conta" @@ -580,7 +583,8 @@ msgstr "recuperar a lista de desejos pendente atual de um usuário" #: engine/core/docs/drf/viewsets.py:545 msgid "retrieves a current pending wishlist of an authenticated user" -msgstr "recupera uma lista de desejos pendente atual de um usuário autenticado" +msgstr "" +"recupera uma lista de desejos pendente atual de um usuário autenticado" #: engine/core/docs/drf/viewsets.py:555 msgid "add product to wishlist" @@ -625,28 +629,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrar por um ou mais pares de nome/valor de atributo. \n" "- **Sintaxe**: `attr_name=method-value[;attr2=method2-value2]...`\n" -"- Métodos** (o padrão é `icontains` se omitido): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- Digitação de valores**: JSON é tentado primeiro (para que você possa " -"passar listas/dicas), `true`/`false` para booleanos, inteiros, flutuantes; " -"caso contrário, é tratado como string. \n" -"- Base64**: prefixo com `b64-` para codificar o valor bruto com base64 de " -"forma segura para a URL. \n" +"- Métodos** (o padrão é `icontains` se omitido): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- Digitação de valores**: JSON é tentado primeiro (para que você possa passar listas/dicas), `true`/`false` para booleanos, inteiros, flutuantes; caso contrário, é tratado como string. \n" +"- Base64**: prefixo com `b64-` para codificar o valor bruto com base64 de forma segura para a URL. \n" "Exemplos: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" @@ -661,14 +655,11 @@ msgstr "UUID (exato) do produto" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Lista de campos separada por vírgulas para classificação. Prefixe com `-` " -"para classificação decrescente. \n" -"**Permitido:** uuid, classificação, nome, slug, criado, modificado, preço, " -"aleatório" +"Lista de campos separada por vírgulas para classificação. Prefixe com `-` para classificação decrescente. \n" +"**Permitido:** uuid, classificação, nome, slug, criado, modificado, preço, aleatório" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "retrieve a single product (detailed view)" @@ -681,9 +672,6 @@ msgid "Product UUID or slug" msgstr "UUID ou Slug do produto" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Criar um produto" @@ -899,7 +887,8 @@ msgstr "Delete a promo code" #: engine/core/docs/drf/viewsets.py:1196 msgid "rewrite an existing promo code saving non-editables" -msgstr "Reescreva um código promocional existente salvando itens não editáveis" +msgstr "" +"Reescreva um código promocional existente salvando itens não editáveis" #: engine/core/docs/drf/viewsets.py:1203 msgid "rewrite some fields of an existing promo code saving non-editables" @@ -982,8 +971,8 @@ msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Nenhum termo de pesquisa foi fornecido." @@ -992,8 +981,8 @@ msgstr "Nenhum termo de pesquisa foi fornecido." msgid "Search" msgstr "Pesquisa" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1039,8 +1028,8 @@ msgid "Quantity" msgstr "Quantidade" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Lesma" @@ -1056,7 +1045,7 @@ msgstr "Incluir subcategorias" msgid "Include personal ordered" msgstr "Incluir produtos pessoais encomendados" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1078,12 +1067,12 @@ msgid "Bought before (inclusive)" msgstr "Comprado antes (inclusive)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "E-mail do usuário" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "UUID do usuário" @@ -1107,251 +1096,252 @@ msgstr "Toda a categoria (com pelo menos 1 produto ou não)" msgid "Level" msgstr "Nível" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "UUID do produto" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Chave para procurar ou colocar no cache" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Dados a serem armazenados no cache" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Tempo limite em segundos para definir os dados para o cache" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Dados em cache" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Dados JSON camelizados da URL solicitada" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Somente URLs que começam com http(s):// são permitidos" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Adicionar um produto ao pedido" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Pedido {order_uuid} não encontrado!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Remover um produto do pedido" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Remover todos os produtos do pedido" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Comprar um pedido" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Forneça order_uuid ou order_hr_id - mutuamente exclusivos!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "O tipo errado veio do método order.buy(): {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Executar uma ação em uma lista de produtos no pedido" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Remover/Adicionar" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "A ação deve ser \"adicionar\" ou \"remover\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Executar uma ação em uma lista de produtos na lista de desejos" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Forneça o valor `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista de desejos {wishlist_uuid} não encontrada!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Adicionar um produto ao pedido" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Remover um produto do pedido" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Remover um produto do pedido" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Remover um produto do pedido" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Comprar um pedido" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Envie os atributos como uma string formatada como attr1=value1,attr2=value2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Adicionar ou excluir um feedback para o produto do pedido" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "A ação deve ser `add` ou `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Orderproduct {order_product_uuid} não encontrado!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Cadeia de endereços original fornecida pelo usuário" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} não existe: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "O limite deve estar entre 1 e 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funciona muito bem" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Atributos" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Atributos agrupados" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Grupos de atributos" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Categorias" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Marcas" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Categorias" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Porcentagem de marcação" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Quais atributos e valores podem ser usados para filtrar essa categoria." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "Preços mínimo e máximo dos produtos dessa categoria, se disponíveis." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Tags para esta categoria" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Produtos desta categoria" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Vendors" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Latitude (coordenada Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Longitude (coordenada X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Como fazer" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Valor de classificação de 1 a 10, inclusive, ou 0 se não estiver definido." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Representa o feedback de um usuário." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Notificações" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "URL de download para este produto do pedido, se aplicável" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Feedback" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Uma lista dos produtos solicitados nesse pedido" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Endereço de cobrança" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1359,53 +1349,53 @@ msgstr "" "Endereço de entrega para este pedido, deixe em branco se for o mesmo que o " "endereço de cobrança ou se não for aplicável" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Preço total deste pedido" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Quantidade total de produtos no pedido" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Todos os produtos estão no pedido digital?" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transações para esta ordem" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Pedidos" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "URL da imagem" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Imagens do produto" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Categoria" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Feedbacks" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Brand" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Grupos de atributos" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1413,7 +1403,7 @@ msgstr "Grupos de atributos" msgid "price" msgstr "Preço" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1421,39 +1411,39 @@ msgstr "Preço" msgid "quantity" msgstr "Quantidade" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Número de feedbacks" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Produtos disponíveis apenas para pedidos pessoais" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Preço com desconto" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Produtos" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Códigos promocionais" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Produtos à venda" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Promoções" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Vendor" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1461,99 +1451,99 @@ msgstr "Vendor" msgid "product" msgstr "Produto" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Produtos da lista de desejos" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Listas de desejos" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Produtos marcados" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Etiquetas do produto" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Categorias de tags" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Tags das categorias" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Nome do projeto" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Nome da empresa" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Endereço da empresa" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Número de telefone da empresa" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', às vezes ele deve ser usado em vez do valor do usuário do host" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Usuário do host de e-mail" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Valor máximo para pagamento" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Valor mínimo para pagamento" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Dados analíticos" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Dados do anúncio" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Configuração" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Código do idioma" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Nome do idioma" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Sinalizador de idioma, se houver :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Obter uma lista de idiomas suportados" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Resultados da pesquisa de produtos" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Resultados da pesquisa de produtos" @@ -1570,23 +1560,23 @@ msgstr "" "útil para categorizar e gerenciar atributos de forma mais eficaz em um " "sistema complexo." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Pai deste grupo" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Grupo de atributos pai" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Nome do grupo de atributos" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Grupo de atributos" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1600,54 +1590,54 @@ msgstr "" "fornecedores externos e seus requisitos de interação. A classe Vendor é " "usada para definir e gerenciar informações relacionadas a um fornecedor " "externo. Ela armazena o nome do fornecedor, os detalhes de autenticação " -"necessários para a comunicação e a marcação percentual aplicada aos produtos " -"recuperados do fornecedor. Esse modelo também mantém metadados e restrições " -"adicionais, tornando-o adequado para uso em sistemas que interagem com " +"necessários para a comunicação e a marcação percentual aplicada aos produtos" +" recuperados do fornecedor. Esse modelo também mantém metadados e restrições" +" adicionais, tornando-o adequado para uso em sistemas que interagem com " "fornecedores terceirizados." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Armazena as credenciais e os pontos de extremidade necessários para a " "comunicação da API do fornecedor" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Informações de autenticação" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "Definir a marcação para produtos recuperados desse fornecedor" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Porcentagem da margem de lucro do fornecedor" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Nome do fornecedor" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Nome do fornecedor" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "arquivo de resposta" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "última resposta de processamento do fornecedor" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Caminho do arquivo de integração do fornecedor" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Caminho de integração" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1662,27 +1652,27 @@ msgstr "" "operações exportadas por meio de mixins e fornece personalização de " "metadados para fins administrativos." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Identificador de tag interno para a tag do produto" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Nome da etiqueta" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Nome de fácil utilização para a etiqueta do produto" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Nome de exibição da tag" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Etiqueta do produto" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1693,15 +1683,15 @@ msgstr "" "Ela inclui atributos para um identificador de tag interno e um nome de " "exibição de fácil utilização." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "tag de categoria" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "tags de categoria" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1724,107 +1714,108 @@ msgstr "" "descrição e a hierarquia das categorias, bem como atribuam atributos como " "imagens, tags ou prioridade." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Faça upload de uma imagem que represente essa categoria" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Imagem da categoria" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Definir uma porcentagem de majoração para os produtos dessa categoria" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Pai dessa categoria para formar uma estrutura hierárquica" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Categoria dos pais" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Nome da categoria" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Forneça um nome para essa categoria" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Adicione uma descrição detalhada para essa categoria" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Descrição da categoria" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "tags que ajudam a descrever ou agrupar essa categoria" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Prioridade" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"Representa um objeto de marca no sistema. Essa classe lida com informações e " -"atributos relacionados a uma marca, incluindo seu nome, logotipos, " +"Representa um objeto de marca no sistema. Essa classe lida com informações e" +" atributos relacionados a uma marca, incluindo seu nome, logotipos, " "descrição, categorias associadas, um slug exclusivo e ordem de prioridade. " -"Ela permite a organização e a representação de dados relacionados à marca no " -"aplicativo." +"Ela permite a organização e a representação de dados relacionados à marca no" +" aplicativo." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Nome da marca" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Nome da marca" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Faça upload de um logotipo que represente essa marca" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Imagem pequena da marca" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Faça upload de um logotipo grande que represente essa marca" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Imagem de marca grande" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Adicione uma descrição detalhada da marca" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Descrição da marca" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Categorias opcionais às quais essa marca está associada" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Categorias" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1837,72 +1828,72 @@ msgstr "" "sistema de gerenciamento de estoque para permitir o rastreamento e a " "avaliação dos produtos disponíveis de vários fornecedores." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "O fornecedor que fornece esse estoque de produtos" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Fornecedor associado" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Preço final para o cliente após as marcações" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Preço de venda" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "O produto associado a essa entrada em estoque" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Produto associado" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "O preço pago ao fornecedor por esse produto" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Preço de compra do fornecedor" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Quantidade disponível do produto em estoque" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Quantidade em estoque" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuído pelo fornecedor para identificar o produto" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "SKU do fornecedor" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Arquivo digital associado a esse estoque, se aplicável" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Arquivo digital" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Atributos do sistema" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Entradas de estoque" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1918,209 +1909,219 @@ msgstr "" "utilitárias relacionadas para recuperar classificações, contagens de " "feedback, preço, quantidade e total de pedidos. Projetado para uso em um " "sistema que lida com comércio eletrônico ou gerenciamento de estoque. Essa " -"classe interage com modelos relacionados (como Category, Brand e ProductTag) " -"e gerencia o armazenamento em cache das propriedades acessadas com " +"classe interage com modelos relacionados (como Category, Brand e ProductTag)" +" e gerencia o armazenamento em cache das propriedades acessadas com " "frequência para melhorar o desempenho. É usada para definir e manipular " "dados de produtos e suas informações associadas em um aplicativo." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Categoria à qual este produto pertence" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Opcionalmente, associe esse produto a uma marca" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Tags que ajudam a descrever ou agrupar este produto" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Indica se esse produto é entregue digitalmente" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "O produto é digital" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" +"indica se esse produto deve ser atualizado a partir da tarefa periódica" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "o produto é atualizável" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Fornecer um nome de identificação claro para o produto" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Nome do produto" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Adicione uma descrição detalhada do produto" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Descrição do produto" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Número de peça para este produto" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Número da peça" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Unidade de Manutenção de Estoque para este produto" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Representa um atributo no sistema. Essa classe é usada para definir e " "gerenciar atributos, que são partes personalizáveis de dados que podem ser " -"associadas a outras entidades. Os atributos têm categorias, grupos, tipos de " -"valores e nomes associados. O modelo é compatível com vários tipos de " +"associadas a outras entidades. Os atributos têm categorias, grupos, tipos de" +" valores e nomes associados. O modelo é compatível com vários tipos de " "valores, incluindo string, inteiro, float, booleano, matriz e objeto. Isso " "permite a estruturação dinâmica e flexível dos dados." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Grupo desse atributo" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Cordas" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Inteiro" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Flutuação" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Booleano" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Matriz" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Objeto" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Tipo do valor do atributo" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Tipo de valor" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Nome desse atributo" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Nome do atributo" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "é filtrável" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Quais atributos e valores podem ser usados para filtrar essa categoria." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Atributo" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Representa um valor específico para um atributo que está vinculado a um " -"produto. Ele vincula o \"atributo\" a um \"valor\" exclusivo, permitindo uma " -"melhor organização e representação dinâmica das características do produto." +"produto. Ele vincula o \"atributo\" a um \"valor\" exclusivo, permitindo uma" +" melhor organização e representação dinâmica das características do produto." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Atributo desse valor" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "O produto específico associado ao valor desse atributo" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "O valor específico para esse atributo" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Representa uma imagem de produto associada a um produto no sistema. Essa " "classe foi projetada para gerenciar imagens de produtos, incluindo a " "funcionalidade de carregar arquivos de imagem, associá-los a produtos " -"específicos e determinar sua ordem de exibição. Ela também inclui um recurso " -"de acessibilidade com texto alternativo para as imagens." - -#: engine/core/models.py:849 -msgid "provide alternative text for the image for accessibility" -msgstr "Forneça um texto alternativo para a imagem para fins de acessibilidade" +"específicos e determinar sua ordem de exibição. Ela também inclui um recurso" +" de acessibilidade com texto alternativo para as imagens." #: engine/core/models.py:850 +msgid "provide alternative text for the image for accessibility" +msgstr "" +"Forneça um texto alternativo para a imagem para fins de acessibilidade" + +#: engine/core/models.py:851 msgid "image alt text" msgstr "Texto alternativo da imagem" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Faça o upload do arquivo de imagem para este produto" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Imagem do produto" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Determina a ordem em que as imagens são exibidas" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Prioridade de exibição" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "O produto que esta imagem representa" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Imagens do produto" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Representa uma campanha promocional para produtos com desconto. Essa classe " "é usada para definir e gerenciar campanhas promocionais que oferecem um " @@ -2129,39 +2130,39 @@ msgstr "" "vinculá-la aos produtos aplicáveis. Ela se integra ao catálogo de produtos " "para determinar os itens afetados na campanha." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Desconto percentual para os produtos selecionados" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Porcentagem de desconto" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Forneça um nome exclusivo para essa promoção" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Nome da promoção" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Descrição da promoção" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Selecione quais produtos estão incluídos nessa promoção" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Produtos incluídos" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Promoção" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2170,129 +2171,129 @@ msgid "" msgstr "" "Representa a lista de desejos de um usuário para armazenar e gerenciar os " "produtos desejados. A classe oferece funcionalidade para gerenciar uma " -"coleção de produtos, suportando operações como adicionar e remover produtos, " -"bem como operações de suporte para adicionar e remover vários produtos de " +"coleção de produtos, suportando operações como adicionar e remover produtos," +" bem como operações de suporte para adicionar e remover vários produtos de " "uma só vez." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Produtos que o usuário marcou como desejados" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Usuário que possui esta lista de desejos" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Proprietário da lista de desejos" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Lista de desejos" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"Representa um registro de documentário vinculado a um produto. Essa classe é " -"usada para armazenar informações sobre documentários relacionados a produtos " -"específicos, incluindo uploads de arquivos e seus metadados. Ela contém " -"métodos e propriedades para lidar com o tipo de arquivo e o caminho de " -"armazenamento dos arquivos do documentário. Ela estende a funcionalidade de " -"mixins específicos e fornece recursos personalizados adicionais." +"Representa um registro de documentário vinculado a um produto. Essa classe é" +" usada para armazenar informações sobre documentários relacionados a " +"produtos específicos, incluindo uploads de arquivos e seus metadados. Ela " +"contém métodos e propriedades para lidar com o tipo de arquivo e o caminho " +"de armazenamento dos arquivos do documentário. Ela estende a funcionalidade " +"de mixins específicos e fornece recursos personalizados adicionais." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Documentário" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Documentários" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Não resolvido" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Representa uma entidade de endereço que inclui detalhes de localização e " "associações com um usuário. Fornece funcionalidade para armazenamento de " "dados geográficos e de endereço, bem como integração com serviços de " "geocodificação. Essa classe foi projetada para armazenar informações " -"detalhadas de endereço, incluindo componentes como rua, cidade, região, país " -"e geolocalização (longitude e latitude). Ela oferece suporte à integração " +"detalhadas de endereço, incluindo componentes como rua, cidade, região, país" +" e geolocalização (longitude e latitude). Ela oferece suporte à integração " "com APIs de geocodificação, permitindo o armazenamento de respostas brutas " "de API para processamento ou inspeção posterior. A classe também permite " "associar um endereço a um usuário, facilitando o tratamento personalizado " "dos dados." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Linha de endereço do cliente" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Linha de endereço" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Rua" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Distrito" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Cidade" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Região" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Código postal" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "País" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Ponto de geolocalização (Longitude, Latitude)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Resposta JSON completa do geocodificador para este endereço" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Resposta JSON armazenada do serviço de geocodificação" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Endereço" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Endereços" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2309,96 +2310,96 @@ msgstr "" "funcionalidade para validar e aplicar o código promocional a um pedido, " "garantindo que as restrições sejam atendidas." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Código exclusivo usado por um usuário para resgatar um desconto" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Identificador de código promocional" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Valor de desconto fixo aplicado se a porcentagem não for usada" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Valor do desconto fixo" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Desconto percentual aplicado se o valor fixo não for usado" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Desconto percentual" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Registro de data e hora em que o código promocional expira" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Tempo de validade final" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "" "Registro de data e hora a partir do qual esse código promocional é válido" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Hora de início da validade" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Registro de data e hora em que o código promocional foi usado, em branco se " "ainda não tiver sido usado" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Registro de data e hora de uso" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Usuário atribuído a esse código promocional, se aplicável" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Usuário atribuído" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Código promocional" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Códigos promocionais" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Apenas um tipo de desconto deve ser definido (valor ou porcentagem), mas não " -"ambos ou nenhum." +"Apenas um tipo de desconto deve ser definido (valor ou porcentagem), mas não" +" ambos ou nenhum." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "O código promocional já foi usado" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo de desconto inválido para o código promocional {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2410,138 +2411,139 @@ msgstr "" "atualizados. Da mesma forma, a funcionalidade suporta o gerenciamento dos " "produtos no ciclo de vida do pedido." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "O endereço de cobrança usado para esse pedido" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Código promocional opcional aplicado a este pedido" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Código promocional aplicado" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "O endereço de entrega usado para esse pedido" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Endereço de entrega" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Status atual do pedido em seu ciclo de vida" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Status do pedido" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "Estrutura JSON de notificações a serem exibidas aos usuários; na interface " "do usuário do administrador, é usada a visualização de tabela" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "Representação JSON dos atributos do pedido para esse pedido" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "O usuário que fez o pedido" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Usuário" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "O registro de data e hora em que o pedido foi finalizado" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Tempo de compra" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Um identificador legível por humanos para o pedido" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "ID legível por humanos" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Pedido" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "Um usuário deve ter apenas uma ordem pendente por vez!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "Não é possível adicionar produtos a um pedido que não esteja pendente" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Não é possível adicionar produtos inativos ao pedido" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "" "Não é possível adicionar mais produtos do que os disponíveis em estoque" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "Não é possível remover produtos de um pedido que não esteja pendente" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} não existe com a consulta <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "O código promocional não existe" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" -"Você só pode comprar produtos físicos com o endereço de entrega especificado!" +"Você só pode comprar produtos físicos com o endereço de entrega " +"especificado!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "O endereço não existe" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Não é possível comprar neste momento, tente novamente em alguns minutos." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Valor de força inválido" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Você não pode comprar um pedido vazio!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "Não é possível comprar um pedido sem um usuário!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Um usuário sem saldo não pode comprar com saldo!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Fundos insuficientes para concluir o pedido" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2549,7 +2551,7 @@ msgstr "" "Não é possível comprar sem registro, forneça as seguintes informações: nome " "do cliente, e-mail do cliente, número de telefone do cliente" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -2557,7 +2559,7 @@ msgstr "" "Método de pagamento inválido: {payment_method} de " "{available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2566,40 +2568,41 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "Gerencia o feedback dos usuários sobre os produtos. Essa classe foi criada " -"para capturar e armazenar o feedback dos usuários sobre produtos específicos " -"que eles compraram. Ela contém atributos para armazenar comentários de " +"para capturar e armazenar o feedback dos usuários sobre produtos específicos" +" que eles compraram. Ela contém atributos para armazenar comentários de " "usuários, uma referência ao produto relacionado no pedido e uma " "classificação atribuída pelo usuário. A classe usa campos de banco de dados " "para modelar e gerenciar com eficiência os dados de feedback." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "" "Comentários fornecidos pelo usuário sobre sua experiência com o produto" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Comentários de feedback" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Faz referência ao produto específico em um pedido sobre o qual se trata esse " -"feedback" +"Faz referência ao produto específico em um pedido sobre o qual se trata esse" +" feedback" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Produto de pedido relacionado" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Classificação atribuída pelo usuário ao produto" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Avaliação do produto" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2612,138 +2615,138 @@ msgid "" "Product models and stores a reference to them." msgstr "" "Representa produtos associados a pedidos e seus atributos. O modelo " -"OrderProduct mantém informações sobre um produto que faz parte de um pedido, " -"incluindo detalhes como preço de compra, quantidade, atributos do produto e " -"status. Ele gerencia as notificações para o usuário e os administradores e " +"OrderProduct mantém informações sobre um produto que faz parte de um pedido," +" incluindo detalhes como preço de compra, quantidade, atributos do produto e" +" status. Ele gerencia as notificações para o usuário e os administradores e " "trata de operações como devolver o saldo do produto ou adicionar feedback. " "Esse modelo também fornece métodos e propriedades que dão suporte à lógica " "comercial, como o cálculo do preço total ou a geração de um URL de download " "para produtos digitais. O modelo se integra aos modelos Order e Product e " "armazena uma referência a eles." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "O preço pago pelo cliente por esse produto no momento da compra" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Preço de compra no momento do pedido" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "" "Comentários internos para administradores sobre este produto encomendado" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Comentários internos" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Notificações do usuário" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "Representação JSON dos atributos desse item" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Atributos ordenados do produto" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Referência ao pedido pai que contém esse produto" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Ordem dos pais" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "O produto específico associado a essa linha de pedido" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Quantidade desse produto específico no pedido" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Quantidade do produto" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Status atual desse produto no pedido" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Status da linha de produtos" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "O Orderproduct deve ter um pedido associado!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Ação incorreta especificada para o feedback: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "você não pode dar feedback a um pedido que não foi recebido" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Nome" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL da integração" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Credenciais de autenticação" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Você só pode ter um provedor de CRM padrão" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRMs" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Link do CRM do pedido" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Links de CRM dos pedidos" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Representa a funcionalidade de download de ativos digitais associados a " "pedidos. A classe DigitalAssetDownload oferece a capacidade de gerenciar e " -"acessar downloads relacionados a produtos de pedidos. Ela mantém informações " -"sobre o produto do pedido associado, o número de downloads e se o ativo está " -"visível publicamente. Ela inclui um método para gerar um URL para download " -"do ativo quando o pedido associado estiver em um status concluído." +"acessar downloads relacionados a produtos de pedidos. Ela mantém informações" +" sobre o produto do pedido associado, o número de downloads e se o ativo " +"está visível publicamente. Ela inclui um método para gerar um URL para " +"download do ativo quando o pedido associado estiver em um status concluído." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Baixar" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Downloads" @@ -2944,8 +2947,7 @@ msgstr "Olá %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Obrigado por seu pedido #%(order.pk)s! Temos o prazer de informá-lo de que " @@ -3059,8 +3061,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Obrigado por seu pedido! Temos o prazer de confirmar sua compra. Abaixo " @@ -3091,11 +3092,11 @@ msgstr "" "todos os direitos\n" " reservados" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "São necessários dados e tempo limite" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Valor de tempo limite inválido, deve estar entre 0 e 216000 segundos" @@ -3127,22 +3128,22 @@ msgstr "Você não tem permissão para executar essa ação." msgid "NOMINATIM_URL must be configured." msgstr "O parâmetro NOMINATIM_URL deve ser configurado!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "As dimensões da imagem não devem exceder w{max_width} x h{max_height} pixels" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" "Trata a solicitação do índice do mapa do site e retorna uma resposta XML. " -"Ele garante que a resposta inclua o cabeçalho de tipo de conteúdo apropriado " -"para XML." +"Ele garante que a resposta inclua o cabeçalho de tipo de conteúdo apropriado" +" para XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3152,29 +3153,29 @@ msgstr "" "processa a solicitação, obtém a resposta detalhada apropriada do mapa do " "site e define o cabeçalho Content-Type para XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Retorna uma lista de idiomas suportados e suas informações correspondentes." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Retorna os parâmetros do site como um objeto JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"Manipula operações de cache, como ler e definir dados de cache com uma chave " -"e um tempo limite especificados." +"Manipula operações de cache, como ler e definir dados de cache com uma chave" +" e um tempo limite especificados." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Trata os envios de formulários \"entre em contato conosco\"." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3182,83 +3183,75 @@ msgstr "" "Trata as solicitações de processamento e validação de URLs de solicitações " "POST recebidas." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Trata as consultas de pesquisa global." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Lida com a lógica de comprar como uma empresa sem registro." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Trata do download de um ativo digital associado a um pedido.\n" -"Essa função tenta servir o arquivo de ativo digital localizado no diretório " -"de armazenamento do projeto. Se o arquivo não for encontrado, será gerado um " -"erro HTTP 404 para indicar que o recurso não está disponível." +"Essa função tenta servir o arquivo de ativo digital localizado no diretório de armazenamento do projeto. Se o arquivo não for encontrado, será gerado um erro HTTP 404 para indicar que o recurso não está disponível." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid é obrigatório" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "o produto do pedido não existe" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Você só pode fazer o download do ativo digital uma vez" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "o pedido deve ser pago antes de fazer o download do ativo digital" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "O produto do pedido não tem um produto" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon não encontrado" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Trata as solicitações do favicon de um site.\n" -"Essa função tenta servir o arquivo favicon localizado no diretório estático " -"do projeto. Se o arquivo favicon não for encontrado, será gerado um erro " -"HTTP 404 para indicar que o recurso não está disponível." +"Essa função tenta servir o arquivo favicon localizado no diretório estático do projeto. Se o arquivo favicon não for encontrado, será gerado um erro HTTP 404 para indicar que o recurso não está disponível." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -"Redireciona a solicitação para a página de índice do administrador. A função " -"lida com as solicitações HTTP recebidas e as redireciona para a página de " +"Redireciona a solicitação para a página de índice do administrador. A função" +" lida com as solicitações HTTP recebidas e as redireciona para a página de " "índice da interface de administração do Django. Ela usa a função `redirect` " "do Django para lidar com o redirecionamento HTTP." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Retorna a versão atual do eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Receita e pedidos (último %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Retorna variáveis personalizadas para o Dashboard." @@ -3270,18 +3263,19 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"Define um conjunto de visualizações para gerenciar operações relacionadas ao " -"Evibes. A classe EvibesViewSet é herdeira do ModelViewSet e oferece " +"Define um conjunto de visualizações para gerenciar operações relacionadas ao" +" Evibes. A classe EvibesViewSet é herdeira do ModelViewSet e oferece " "funcionalidade para lidar com ações e operações em entidades Evibes. Ela " "inclui suporte para classes de serializadores dinâmicos com base na ação " "atual, permissões personalizáveis e formatos de renderização." #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Representa um conjunto de visualizações para gerenciar objetos " "AttributeGroup. Trata das operações relacionadas ao AttributeGroup, " @@ -3298,11 +3292,11 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"Trata de operações relacionadas a objetos de atributo no aplicativo. Fornece " -"um conjunto de pontos de extremidade de API para interagir com dados de " +"Trata de operações relacionadas a objetos de atributo no aplicativo. Fornece" +" um conjunto de pontos de extremidade de API para interagir com dados de " "atributos. Essa classe gerencia a consulta, a filtragem e a serialização de " -"objetos Attribute, permitindo o controle dinâmico dos dados retornados, como " -"a filtragem por campos específicos ou a recuperação de informações " +"objetos Attribute, permitindo o controle dinâmico dos dados retornados, como" +" a filtragem por campos específicos ou a recuperação de informações " "detalhadas ou simplificadas, dependendo da solicitação." #: engine/core/viewsets.py:198 @@ -3310,8 +3304,8 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Um conjunto de exibições para gerenciar objetos AttributeValue. Esse " "conjunto de visualizações fornece funcionalidade para listar, recuperar, " @@ -3331,8 +3325,8 @@ msgstr "" "Gerencia as visualizações das operações relacionadas à categoria. A classe " "CategoryViewSet é responsável pelo tratamento das operações relacionadas ao " "modelo de categoria no sistema. Ela suporta a recuperação, a filtragem e a " -"serialização de dados de categoria. O conjunto de visualizações também impõe " -"permissões para garantir que somente usuários autorizados possam acessar " +"serialização de dados de categoria. O conjunto de visualizações também impõe" +" permissões para garantir que somente usuários autorizados possam acessar " "dados específicos." #: engine/core/viewsets.py:346 @@ -3342,8 +3336,8 @@ msgid "" "uses Django's ViewSet framework to simplify the implementation of API " "endpoints for Brand objects." msgstr "" -"Representa um conjunto de visualizações para gerenciar instâncias de marcas. " -"Essa classe fornece funcionalidade para consulta, filtragem e serialização " +"Representa um conjunto de visualizações para gerenciar instâncias de marcas." +" Essa classe fornece funcionalidade para consulta, filtragem e serialização " "de objetos de marca. Ela usa a estrutura ViewSet do Django para simplificar " "a implementação de pontos de extremidade da API para objetos de marca." @@ -3359,9 +3353,9 @@ msgid "" msgstr "" "Gerencia as operações relacionadas ao modelo `Product` no sistema. Essa " "classe fornece um conjunto de visualizações para gerenciar produtos, " -"incluindo filtragem, serialização e operações em instâncias específicas. Ela " -"se estende do `EvibesViewSet` para usar a funcionalidade comum e se integra " -"à estrutura Django REST para operações de API RESTful. Inclui métodos para " +"incluindo filtragem, serialização e operações em instâncias específicas. Ela" +" se estende do `EvibesViewSet` para usar a funcionalidade comum e se integra" +" à estrutura Django REST para operações de API RESTful. Inclui métodos para " "recuperar detalhes do produto, aplicar permissões e acessar o feedback " "relacionado de um produto." @@ -3377,39 +3371,39 @@ msgstr "" "fornecedor. Esse conjunto de visualizações permite a busca, a filtragem e a " "serialização de dados do fornecedor. Ele define o conjunto de consultas, as " "configurações de filtro e as classes de serializador usadas para lidar com " -"diferentes ações. O objetivo dessa classe é fornecer acesso simplificado aos " -"recursos relacionados ao Vendor por meio da estrutura Django REST." +"diferentes ações. O objetivo dessa classe é fornecer acesso simplificado aos" +" recursos relacionados ao Vendor por meio da estrutura Django REST." #: engine/core/viewsets.py:625 msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Representação de um conjunto de visualizações que manipula objetos de " -"feedback. Essa classe gerencia operações relacionadas a objetos de feedback, " -"incluindo listagem, filtragem e recuperação de detalhes. O objetivo desse " +"feedback. Essa classe gerencia operações relacionadas a objetos de feedback," +" incluindo listagem, filtragem e recuperação de detalhes. O objetivo desse " "conjunto de visualizações é fornecer serializadores diferentes para ações " "diferentes e implementar o manuseio baseado em permissão de objetos de " -"feedback acessíveis. Ela estende a base `EvibesViewSet` e faz uso do sistema " -"de filtragem do Django para consultar dados." +"feedback acessíveis. Ela estende a base `EvibesViewSet` e faz uso do sistema" +" de filtragem do Django para consultar dados." #: engine/core/viewsets.py:652 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"ViewSet para gerenciar pedidos e operações relacionadas. Essa classe oferece " -"funcionalidade para recuperar, modificar e gerenciar objetos de pedido. Ela " -"inclui vários pontos de extremidade para lidar com operações de pedidos, " +"ViewSet para gerenciar pedidos e operações relacionadas. Essa classe oferece" +" funcionalidade para recuperar, modificar e gerenciar objetos de pedido. Ela" +" inclui vários pontos de extremidade para lidar com operações de pedidos, " "como adicionar ou remover produtos, realizar compras para usuários " "registrados e não registrados e recuperar os pedidos pendentes do usuário " "autenticado atual. O ViewSet usa vários serializadores com base na ação " @@ -3420,13 +3414,13 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Fornece um conjunto de visualizações para gerenciar entidades OrderProduct. " -"Esse conjunto de visualizações permite operações CRUD e ações personalizadas " -"específicas do modelo OrderProduct. Ele inclui filtragem, verificações de " +"Esse conjunto de visualizações permite operações CRUD e ações personalizadas" +" específicas do modelo OrderProduct. Ele inclui filtragem, verificações de " "permissão e troca de serializador com base na ação solicitada. Além disso, " "fornece uma ação detalhada para lidar com feedback sobre instâncias de " "OrderProduct" @@ -3455,8 +3449,8 @@ msgstr "Trata de operações relacionadas a dados de estoque no sistema." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3479,8 +3473,8 @@ msgid "" "on the request context." msgstr "" "Essa classe fornece a funcionalidade de conjunto de visualizações para " -"gerenciar objetos `Address`. A classe AddressViewSet permite operações CRUD, " -"filtragem e ações personalizadas relacionadas a entidades de endereço. Ela " +"gerenciar objetos `Address`. A classe AddressViewSet permite operações CRUD," +" filtragem e ações personalizadas relacionadas a entidades de endereço. Ela " "inclui comportamentos especializados para diferentes métodos HTTP, " "substituições de serializadores e tratamento de permissões com base no " "contexto da solicitação." diff --git a/engine/core/locale/ro_RO/LC_MESSAGES/django.mo b/engine/core/locale/ro_RO/LC_MESSAGES/django.mo index eb1526cbe5d0754036881d50a29035242f8671b6..401874f636ef391e7945fd6a97de164266fef874 100644 GIT binary patch delta 14858 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 QUpOl%byv4&&;8i{1KY>8Q2+n{ delta 14681 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 diff --git a/engine/core/locale/ro_RO/LC_MESSAGES/django.po b/engine/core/locale/ro_RO/LC_MESSAGES/django.po index 817f2382..2d342645 100644 --- a/engine/core/locale/ro_RO/LC_MESSAGES/django.po +++ b/engine/core/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,10 +29,11 @@ msgstr "Este activ" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" -"Dacă este setat la false, acest obiect nu poate fi văzut de utilizatori fără " -"permisiunea necesară" +"Dacă este setat la false, acest obiect nu poate fi văzut de utilizatori fără" +" permisiunea necesară" #: engine/core/abstract.py:26 engine/core/choices.py:18 msgid "created" @@ -74,65 +75,65 @@ msgstr "Metadate" msgid "timestamps" msgstr "Timestamps" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activați %(verbose_name_plural)s selectat" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Articolele selectate au fost activate!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Dezactivați %(verbose_name_plural)s selectat" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Articolele selectate au fost dezactivate!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Atribut Valoare" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Valori ale atributului" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Imagine" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Imagini" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Stoc" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Stocuri" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Comanda Produs" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Comandați produse" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Copii" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Configurare" @@ -156,7 +157,8 @@ msgstr "Livrat" msgid "canceled" msgstr "Anulată" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Eșuat" @@ -194,62 +196,61 @@ msgid "" "negotiation. Language can be selected with Accept-Language and query " "parameter both." msgstr "" -"Schema OpenApi3 pentru acest API. Formatul poate fi selectat prin negocierea " -"conținutului. Limba poate fi selectată atât cu Accept-Language, cât și cu " +"Schema OpenApi3 pentru acest API. Formatul poate fi selectat prin negocierea" +" conținutului. Limba poate fi selectată atât cu Accept-Language, cât și cu " "parametrul de interogare." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Aplicați doar o cheie pentru a citi datele permise din cache.\n" -"Aplicați o cheie, date și timeout cu autentificare pentru a scrie date în " -"cache." +"Aplicați o cheie, date și timeout cu autentificare pentru a scrie date în cache." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Obțineți o listă a limbilor acceptate" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Obțineți parametrii expunibili ai aplicației" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Trimiteți un mesaj echipei de asistență" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Solicitați un URL CORSed. Numai https este permis." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Căutare între produse, categorii și mărci" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" -"Punct final de căutare globală pentru a efectua interogări în toate tabelele " -"proiectului" +"Punct final de căutare globală pentru a efectua interogări în toate tabelele" +" proiectului" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Achiziționați o comandă ca întreprindere" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"Achiziționați o comandă ca o afacere, utilizând `products` cu `product_uuid` " -"și `attributes` furnizate." +"Achiziționați o comandă ca o afacere, utilizând `products` cu `product_uuid`" +" și `attributes` furnizate." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "descărcarea unui bun digital din comanda digitală achiziționată" @@ -272,10 +273,12 @@ msgstr "Ștergerea unui grup de atribute" #: engine/core/docs/drf/viewsets.py:99 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -"Rescrierea unui grup de atribute existent cu salvarea elementelor needitabile" +"Rescrierea unui grup de atribute existent cu salvarea elementelor " +"needitabile" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Rescrierea unor câmpuri ale unui grup de atribute existent, cu salvarea " "elementelor needitabile" @@ -328,7 +331,8 @@ msgstr "" "Rescrierea unei valori de atribut existente care salvează non-editabile" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Rescrierea unor câmpuri ale unei valori de atribut existente salvând " "elementele needitabile" @@ -365,9 +369,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" @@ -387,8 +391,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Căutare de substring insensibilă la majuscule în human_readable_id, " "order_products.product.name și order_products.product.partnumber" @@ -427,9 +431,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordonați după unul dintre: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. Prefixați cu \"-\" pentru " @@ -488,7 +492,7 @@ msgid "retrieves a current pending order of an authenticated user" msgstr "" "recuperează o comandă curentă în așteptare a unui utilizator autentificat" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "achiziționarea unei comenzi fără crearea unui cont" @@ -634,29 +638,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrați după una sau mai multe perechi nume de atribut/valoare. \n" "- **Sintaxa**: `attr_name=method-value[;attr2=method2-value2]...`\n" -"- **Metode** (valoarea implicită este `icontains` dacă este omisă): " -"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, " -"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, " -"`gt`, `gte`, `in`\n" -"- **Value typing**: JSON este încercat în primul rând (astfel încât să " -"puteți trece liste/dicte), `true`/`false` pentru booleeni, întregi, float; " -"în caz contrar tratat ca string. \n" -"- **Base64**: prefix cu `b64-` pentru a codifica valoarea brută în baza64 în " -"condiții de siguranță URL. \n" +"- **Metode** (valoarea implicită este `icontains` dacă este omisă): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Value typing**: JSON este încercat în primul rând (astfel încât să puteți trece liste/dicte), `true`/`false` pentru booleeni, întregi, float; în caz contrar tratat ca string. \n" +"- **Base64**: prefix cu `b64-` pentru a codifica valoarea brută în baza64 în condiții de siguranță URL. \n" "Exemple: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" @@ -671,12 +664,10 @@ msgstr "(exact) UUID al produsului" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Lista de câmpuri separate prin virgulă după care se face sortarea. Prefixați " -"cu `-` pentru descrescător. \n" +"Lista de câmpuri separate prin virgulă după care se face sortarea. Prefixați cu `-` pentru descrescător. \n" "**Autorizate:** uuid, rating, nume, slug, creat, modificat, preț, aleatoriu" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -690,9 +681,6 @@ msgid "Product UUID or slug" msgstr "UUID sau Slug al produsului" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Creați un produs" @@ -751,8 +739,8 @@ msgstr "Autocompletare adresă de intrare" #: engine/core/docs/drf/viewsets.py:848 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -"docker compose exec app poetry run python manage.py deepl_translate -l en-gb " -"-l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " "it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" "hans -a core -a geo -a plăți -a vibes_auth -a blog" @@ -836,7 +824,8 @@ msgstr "Ștergeți un brand" #: engine/core/docs/drf/viewsets.py:1032 msgid "rewrite an existing brand saving non-editables" -msgstr "Rescrierea unui brand existent care economisește materiale needitabile" +msgstr "" +"Rescrierea unui brand existent care economisește materiale needitabile" #: engine/core/docs/drf/viewsets.py:1039 msgid "rewrite some fields of an existing brand saving non-editables" @@ -888,7 +877,8 @@ msgstr "Ștergeți imaginea unui produs" #: engine/core/docs/drf/viewsets.py:1146 msgid "rewrite an existing product image saving non-editables" -msgstr "Rescrieți o imagine de produs existentă salvând elementele needitabile" +msgstr "" +"Rescrieți o imagine de produs existentă salvând elementele needitabile" #: engine/core/docs/drf/viewsets.py:1154 msgid "rewrite some fields of an existing product image saving non-editables" @@ -940,7 +930,8 @@ msgstr "Ștergeți o promovare" #: engine/core/docs/drf/viewsets.py:1244 msgid "rewrite an existing promotion saving non-editables" -msgstr "Rescrierea unei promoții existente cu salvarea elementelor needitabile" +msgstr "" +"Rescrierea unei promoții existente cu salvarea elementelor needitabile" #: engine/core/docs/drf/viewsets.py:1251 msgid "rewrite some fields of an existing promotion saving non-editables" @@ -1002,8 +993,8 @@ msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Nu a fost furnizat niciun termen de căutare." @@ -1012,8 +1003,8 @@ msgstr "Nu a fost furnizat niciun termen de căutare." msgid "Search" msgstr "Căutare" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1059,8 +1050,8 @@ msgid "Quantity" msgstr "Cantitate" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Melc" @@ -1076,7 +1067,7 @@ msgstr "Includeți subcategorii" msgid "Include personal ordered" msgstr "Includeți produsele comandate personal" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1099,12 +1090,12 @@ msgid "Bought before (inclusive)" msgstr "Cumpărat înainte (inclusiv)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "E-mail utilizator" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "UUID utilizator" @@ -1128,255 +1119,256 @@ msgstr "Întreaga categorie (are cel puțin 1 produs sau nu)" msgid "Level" msgstr "Nivel" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "UUID produs" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Cheie care trebuie căutată sau introdusă în cache" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Date de stocat în cache" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout în secunde pentru a seta datele în cache" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Date în cache" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Date JSON Camelizate de la URL-ul solicitat" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Sunt permise numai URL-urile care încep cu http(s)://" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Adăugați un produs la comandă" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Comanda {order_uuid} nu a fost găsită!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Eliminați un produs din comandă" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Eliminați toate produsele din comandă" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Cumpărați o comandă" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Vă rugăm să furnizați fie order_uuid sau order_hr_id - se exclud reciproc!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Metoda order.buy() a generat un tip greșit: {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Efectuați o acțiune asupra unei liste de produse din comandă" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Eliminare/adăugare" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Acțiunea trebuie să fie fie \"adăugare\" sau \"eliminare\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Efectuați o acțiune pe o listă de produse din lista de dorințe" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Vă rugăm să furnizați valoarea `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} nu a fost găsit!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Adăugați un produs la comandă" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Eliminați un produs din comandă" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Eliminați un produs din comandă" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Eliminați un produs din comandă" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Cumpărați o comandă" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Vă rugăm să trimiteți atributele sub formă de șir format ca attr1=valoare1, " "attr2=valoare2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Adăugați sau ștergeți un feedback pentru comandaprodus" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Acțiunea trebuie să fie `add` sau `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Comandaprodus {order_product_uuid} nu a fost găsită!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Șirul de adrese original furnizat de utilizator" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nu există: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Limita trebuie să fie între 1 și 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funcționează ca un farmec" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Atribute" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Atribute grupate" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Grupuri de atribute" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Categorii" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Mărci" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Categorii" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Procentul de majorare" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Atributele și valorile care pot fi utilizate pentru filtrarea acestei " "categorii." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" -"Prețurile minime și maxime pentru produsele din această categorie, dacă sunt " -"disponibile." +"Prețurile minime și maxime pentru produsele din această categorie, dacă sunt" +" disponibile." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Etichete pentru această categorie" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Produse din această categorie" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Furnizori" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Latitudine (coordonata Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Longitudine (coordonata X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Cum să" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valoare nominală de la 1 la 10, inclusiv, sau 0 dacă nu este setată." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Reprezintă feedback de la un utilizator." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Notificări" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "URL de descărcare pentru acest produs de comandă, dacă este cazul" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Feedback" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "O listă a produselor comandate în această comandă" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Adresa de facturare" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1384,53 +1376,53 @@ msgstr "" "Adresa de expediere pentru această comandă, lăsați în alb dacă este aceeași " "cu adresa de facturare sau dacă nu se aplică" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Prețul total al acestei comenzi" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Cantitatea totală de produse din comandă" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Sunt toate produsele din comanda digitală" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Tranzacții pentru această comandă" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Ordine" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "URL imagine" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Imagini ale produsului" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Categorie" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Feedback-uri" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Marca" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Grupuri de atribute" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1438,7 +1430,7 @@ msgstr "Grupuri de atribute" msgid "price" msgstr "Preț" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1446,39 +1438,39 @@ msgstr "Preț" msgid "quantity" msgstr "Cantitate" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Numărul de reacții" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Produse disponibile numai pentru comenzi personale" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Preț redus" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Produse" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Coduri promoționale" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Produse scoase la vânzare" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Promoții" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Furnizor" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1486,100 +1478,100 @@ msgstr "Furnizor" msgid "product" msgstr "Produs" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Produse dorite" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Liste de dorințe" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Produse etichetate" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Etichete de produs" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Categorii etichetate" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Etichete \"Categorii" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Numele proiectului" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Numele companiei" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Adresa companiei" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Numărul de telefon al companiei" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "\"e-mail de la\", uneori trebuie să fie utilizat în locul valorii " "utilizatorului gazdă" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Utilizator gazdă e-mail" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Suma maximă pentru plată" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Suma minimă pentru plată" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Date analitice" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Date publicitare" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Configurație" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Codul limbii" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Numele limbii" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Indicatorul de limbă, dacă există :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Obțineți o listă a limbilor acceptate" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Rezultate căutare produse" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Rezultate căutare produse" @@ -1592,27 +1584,27 @@ msgid "" msgstr "" "Reprezintă un grup de atribute, care poate fi ierarhic. Această clasă este " "utilizată pentru gestionarea și organizarea grupurilor de atribute. Un grup " -"de atribute poate avea un grup părinte, formând o structură ierarhică. Acest " -"lucru poate fi util pentru clasificarea și gestionarea mai eficientă a " +"de atribute poate avea un grup părinte, formând o structură ierarhică. Acest" +" lucru poate fi util pentru clasificarea și gestionarea mai eficientă a " "atributelor în cadrul unui sistem complex." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Părinte al acestui grup" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Grup de atribute părinte" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Numele grupului de atribute" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Grup de atribute" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1631,50 +1623,50 @@ msgstr "" "metadate și constrângeri suplimentare, ceea ce îl face potrivit pentru " "utilizarea în sisteme care interacționează cu furnizori terți." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stochează acreditările și punctele finale necesare pentru comunicarea API a " "furnizorului" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Informații privind autentificarea" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definirea marjei de profit pentru produsele preluate de la acest furnizor" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Procentul de majorare al furnizorului" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Numele acestui vânzător" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Numele furnizorului" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "fișier de răspuns" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "ultimul răspuns de prelucrare al vânzătorului" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Calea fișierului de integrare al furnizorului" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Calea de integrare" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1689,27 +1681,27 @@ msgstr "" "Aceasta acceptă operațiuni exportate prin mixins și oferă personalizarea " "metadatelor în scopuri administrative." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Identificator intern de etichetă pentru eticheta produsului" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Nume etichetă" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Nume ușor de utilizat pentru eticheta produsului" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Nume afișare etichetă" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Etichetă produs" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1717,18 +1709,18 @@ msgid "" msgstr "" "Reprezintă o etichetă de categorie utilizată pentru produse. Această clasă " "modelează o etichetă de categorie care poate fi utilizată pentru asocierea " -"și clasificarea produselor. Aceasta include atribute pentru un identificator " -"intern al etichetei și un nume de afișare ușor de utilizat." +"și clasificarea produselor. Aceasta include atribute pentru un identificator" +" intern al etichetei și un nume de afișare ușor de utilizat." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "etichetă de categorie" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "Etichete de categorie" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1746,111 +1738,113 @@ msgstr "" "include câmpuri pentru metadate și reprezentare vizuală, care servesc drept " "bază pentru caracteristicile legate de categorie. Această clasă este " "utilizată de obicei pentru a defini și gestiona categoriile de produse sau " -"alte grupări similare în cadrul unei aplicații, permițând utilizatorilor sau " -"administratorilor să specifice numele, descrierea și ierarhia categoriilor, " -"precum și să atribuie atribute precum imagini, etichete sau prioritate." +"alte grupări similare în cadrul unei aplicații, permițând utilizatorilor sau" +" administratorilor să specifice numele, descrierea și ierarhia categoriilor," +" precum și să atribuie atribute precum imagini, etichete sau prioritate." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Încărcați o imagine care reprezintă această categorie" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Categorie imagine" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" -msgstr "Definiți un procent de majorare pentru produsele din această categorie" +msgstr "" +"Definiți un procent de majorare pentru produsele din această categorie" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Părinte al acestei categorii pentru a forma o structură ierarhică" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Categoria de părinți" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Numele categoriei" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Furnizați un nume pentru această categorie" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Adăugați o descriere detaliată pentru această categorie" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Descriere categorie" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "etichete care ajută la descrierea sau gruparea acestei categorii" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Prioritate" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"Reprezintă un obiect Brand în sistem. Această clasă gestionează informațiile " -"și atributele legate de o marcă, inclusiv numele acesteia, logo-urile, " +"Reprezintă un obiect Brand în sistem. Această clasă gestionează informațiile" +" și atributele legate de o marcă, inclusiv numele acesteia, logo-urile, " "descrierea, categoriile asociate, un slug unic și ordinea de prioritate. " "Aceasta permite organizarea și reprezentarea datelor legate de marcă în " "cadrul aplicației." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Denumirea acestui brand" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Nume de marcă" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Încărcați un logo care reprezintă acest brand" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Brand imagine mică" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Încărcați un logo mare care reprezintă acest brand" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Imagine de marcă mare" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Adăugați o descriere detaliată a mărcii" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Descrierea mărcii" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Categorii opționale cu care acest brand este asociat" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Categorii" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1863,72 +1857,72 @@ msgstr "" "parte din sistemul de gestionare a stocurilor pentru a permite urmărirea și " "evaluarea produselor disponibile de la diverși furnizori." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Furnizorul care furnizează acest stoc de produse" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Furnizor asociat" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Prețul final pentru client după majorări" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Prețul de vânzare" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Produsul asociat cu această intrare în stoc" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Produs asociat" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Prețul plătit vânzătorului pentru acest produs" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Prețul de achiziție al furnizorului" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Cantitatea disponibilă a produsului în stoc" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Cantitate în stoc" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuit de furnizor pentru identificarea produsului" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "SKU al furnizorului" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Fișier digital asociat cu acest stoc, dacă este cazul" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Fișier digital" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Atribute de sistem" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Intrări pe stoc" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1939,166 +1933,175 @@ msgid "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." msgstr "" -"Reprezintă un produs cu atribute precum categoria, marca, etichetele, starea " -"digitală, numele, descrierea, numărul piesei și slug-ul. Oferă proprietăți " +"Reprezintă un produs cu atribute precum categoria, marca, etichetele, starea" +" digitală, numele, descrierea, numărul piesei și slug-ul. Oferă proprietăți " "utilitare conexe pentru a prelua evaluări, numărul de comentarii, prețul, " "cantitatea și comenzile totale. Concepută pentru a fi utilizată într-un " "sistem care gestionează comerțul electronic sau inventarul. Această clasă " "interacționează cu modele conexe (cum ar fi Category, Brand și ProductTag) " -"și gestionează memoria cache pentru proprietățile accesate frecvent pentru a " -"îmbunătăți performanța. Este utilizată pentru a defini și manipula datele " +"și gestionează memoria cache pentru proprietățile accesate frecvent pentru a" +" îmbunătăți performanța. Este utilizată pentru a defini și manipula datele " "despre produse și informațiile asociate acestora în cadrul unei aplicații." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Categoria din care face parte acest produs" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Opțional, asociați acest produs cu un brand" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Etichete care ajută la descrierea sau gruparea acestui produs" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Indică dacă acest produs este livrat digital" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Produsul este digital" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" +"indică dacă acest produs ar trebui să fie actualizat din sarcina periodică" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "produsul este actualizabil" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Furnizați o denumire clară de identificare a produsului" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Denumirea produsului" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Adăugați o descriere detaliată a produsului" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Descrierea produsului" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Numărul piesei pentru acest produs" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Numărul piesei" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Stock Keeping Unit pentru acest produs" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Reprezintă un atribut în sistem. Această clasă este utilizată pentru " "definirea și gestionarea atributelor, care sunt elemente de date " "personalizabile care pot fi asociate cu alte entități. Atributele au " "asociate categorii, grupuri, tipuri de valori și nume. Modelul acceptă mai " -"multe tipuri de valori, inclusiv șir, număr întreg, float, boolean, array și " -"obiect. Acest lucru permite structurarea dinamică și flexibilă a datelor." +"multe tipuri de valori, inclusiv șir, număr întreg, float, boolean, array și" +" obiect. Acest lucru permite structurarea dinamică și flexibilă a datelor." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Grupul acestui atribut" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Șir de caractere" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Număr întreg" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Float" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Boolean" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Array" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Obiect" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Tipul valorii atributului" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Tipul de valoare" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Denumirea acestui atribut" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Numele atributului" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "este filtrabil" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Atributele și valorile care pot fi utilizate pentru filtrarea acestei " "categorii." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Atribut" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Reprezintă o valoare specifică pentru un atribut care este legat de un " "produs. Leagă \"atributul\" de o \"valoare\" unică, permițând o mai bună " "organizare și reprezentare dinamică a caracteristicilor produsului." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Atributul acestei valori" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Produsul specific asociat cu valoarea acestui atribut" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Valoarea specifică pentru acest atribut" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2109,46 +2112,46 @@ msgstr "" "asemenea, include o funcție de accesibilitate cu text alternativ pentru " "imagini." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Furnizați text alternativ pentru imagine pentru accesibilitate" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Textul alt al imaginii" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Încărcați fișierul de imagine pentru acest produs" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Imaginea produsului" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Determină ordinea în care sunt afișate imaginile" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Prioritatea afișării" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Produsul pe care îl reprezintă această imagine" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Imagini ale produsului" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Reprezintă o campanie promoțională pentru produse cu o reducere. Această " "clasă este utilizată pentru a defini și gestiona campanii promoționale care " @@ -2157,75 +2160,75 @@ msgstr "" "asocierea acesteia la produsele aplicabile. Se integrează cu catalogul de " "produse pentru a determina articolele afectate în cadrul campaniei." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Procentul de reducere pentru produsele selectate" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Procent de reducere" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Furnizați un nume unic pentru această promoție" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Numele promoției" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Descrierea promoției" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Selectați ce produse sunt incluse în această promoție" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Produse incluse" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Promovare" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"Reprezintă lista de dorințe a unui utilizator pentru stocarea și gestionarea " -"produselor dorite. Clasa oferă funcționalitatea de a gestiona o colecție de " -"produse, suportând operațiuni precum adăugarea și eliminarea de produse, " +"Reprezintă lista de dorințe a unui utilizator pentru stocarea și gestionarea" +" produselor dorite. Clasa oferă funcționalitatea de a gestiona o colecție de" +" produse, suportând operațiuni precum adăugarea și eliminarea de produse, " "precum și operațiuni pentru adăugarea și eliminarea mai multor produse " "simultan." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Produse pe care utilizatorul le-a marcat ca fiind dorite" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Utilizatorul care deține această listă de dorințe" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Proprietarul listei de dorințe" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Lista dorințelor" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Reprezintă o înregistrare documentară legată de un produs. Această clasă " "este utilizată pentru a stoca informații despre documentarele legate de " @@ -2235,28 +2238,28 @@ msgstr "" "funcționalitatea mixinilor specifici și oferă caracteristici personalizate " "suplimentare." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Documentar" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Documentare" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Nerezolvat" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Reprezintă o entitate de adresă care include detalii despre locație și " "asocieri cu un utilizator. Oferă funcționalitate pentru stocarea datelor " @@ -2266,61 +2269,62 @@ msgstr "" "geolocalizarea (longitudine și latitudine). Aceasta suportă integrarea cu " "API-urile de geocodare, permițând stocarea răspunsurilor API brute pentru " "procesare sau inspecție ulterioară. De asemenea, clasa permite asocierea " -"unei adrese cu un utilizator, facilitând gestionarea personalizată a datelor." +"unei adrese cu un utilizator, facilitând gestionarea personalizată a " +"datelor." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Linia de adresă pentru client" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Linia de adresă" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Strada" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Districtul" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Oraș" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Regiunea" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Cod poștal" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Țara" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Punct de geolocație (longitudine, latitudine)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Răspuns JSON complet de la geocoder pentru această adresă" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Răspuns JSON stocat de la serviciul de geocodare" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Adresă" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adrese" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2334,77 +2338,77 @@ msgstr "" "PromoCode stochează detalii despre un cod promoțional, inclusiv " "identificatorul său unic, proprietățile de reducere (sumă sau procent), " "perioada de valabilitate, utilizatorul asociat (dacă există) și starea " -"utilizării acestuia. Aceasta include funcționalități de validare și aplicare " -"a codului promoțional la o comandă, asigurându-se în același timp că sunt " +"utilizării acestuia. Aceasta include funcționalități de validare și aplicare" +" a codului promoțional la o comandă, asigurându-se în același timp că sunt " "respectate constrângerile." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Cod unic utilizat de un utilizator pentru a răscumpăra o reducere" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Cod promoțional de identificare" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Valoarea fixă a reducerii aplicate dacă procentul nu este utilizat" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Valoarea fixă a reducerii" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentul de reducere aplicat dacă suma fixă nu este utilizată" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Reducere procentuală" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Data la care expiră codul promoțional" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Timpul final de valabilitate" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Timestamp de la care acest cod promoțional este valabil" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Ora de începere a valabilității" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Momentul în care codul promoțional a fost utilizat, gol dacă nu a fost " "utilizat încă" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Timestamp de utilizare" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Utilizatorul atribuit acestui cod promoțional, dacă este cazul" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Utilizator atribuit" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Cod promoțional" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Coduri promoționale" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2412,167 +2416,167 @@ msgstr "" "Trebuie definit un singur tip de reducere (sumă sau procent), dar nu ambele " "sau niciuna." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Codul promoțional a fost deja utilizat" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tip de reducere invalid pentru codul promoțional {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Reprezintă o comandă plasată de un utilizator. Această clasă modelează o " "comandă în cadrul aplicației, inclusiv diferitele sale atribute, cum ar fi " -"informațiile privind facturarea și expedierea, starea, utilizatorul asociat, " -"notificările și operațiunile conexe. Comenzile pot avea produse asociate, se " -"pot aplica promoții, se pot stabili adrese și se pot actualiza detaliile de " -"expediere sau de facturare. În egală măsură, funcționalitatea sprijină " +"informațiile privind facturarea și expedierea, starea, utilizatorul asociat," +" notificările și operațiunile conexe. Comenzile pot avea produse asociate, " +"se pot aplica promoții, se pot stabili adrese și se pot actualiza detaliile " +"de expediere sau de facturare. În egală măsură, funcționalitatea sprijină " "gestionarea produselor în ciclul de viață al comenzii." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Adresa de facturare utilizată pentru această comandă" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Cod promoțional opțional aplicat la această comandă" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Cod promoțional aplicat" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Adresa de expediere utilizată pentru această comandă" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Adresa de expediere" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Stadiul actual al comenzii în ciclul său de viață" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Stadiul comenzii" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "Structura JSON a notificărilor care urmează să fie afișate utilizatorilor, " "în interfața de administrare este utilizată vizualizarea tabelară" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "Reprezentarea JSON a atributelor comenzii pentru această comandă" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "Utilizatorul care a plasat comanda" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Utilizator" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Momentul în care comanda a fost finalizată" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Cumpărați timp" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Un identificator ușor de citit pentru comandă" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "ID lizibil de către om" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Comandă" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "" "Un utilizator trebuie să aibă un singur ordin în așteptare la un moment dat!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "Nu puteți adăuga produse la o comandă care nu este în așteptare" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Nu puteți adăuga produse inactive la comandă" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "Nu puteți adăuga mai multe produse decât cele disponibile în stoc" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Nu puteți elimina produse dintr-o comandă care nu este o comandă în curs" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nu există cu interogarea <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Codul promoțional nu există" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" "Puteți cumpăra numai produse fizice cu adresa de expediere specificată!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Adresa nu există" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Nu puteți achiziționa în acest moment, vă rugăm să încercați din nou în " "câteva minute." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Valoare forță invalidă" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Nu puteți achiziționa o comandă goală!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "" "Nu puteți elimina produse dintr-o comandă care nu este o comandă în curs" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Un utilizator fără sold nu poate cumpăra cu sold!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Insuficiența fondurilor pentru finalizarea comenzii" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2580,14 +2584,15 @@ msgstr "" "nu puteți cumpăra fără înregistrare, vă rugăm să furnizați următoarele " "informații: nume client, e-mail client, număr de telefon client" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -"Metodă de plată invalidă: {payment_method} de la {available_payment_methods}!" +"Metodă de plată invalidă: {payment_method} de la " +"{available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2602,34 +2607,35 @@ msgstr "" "un rating atribuit de utilizator. Clasa utilizează câmpuri din baza de date " "pentru a modela și gestiona în mod eficient datele de feedback." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "" "Comentarii furnizate de utilizatori cu privire la experiența lor cu produsul" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Comentarii de feedback" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Face referire la produsul specific dintr-o comandă despre care este vorba în " -"acest feedback" +"Face referire la produsul specific dintr-o comandă despre care este vorba în" +" acest feedback" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Produs aferent comenzii" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Rating atribuit de utilizator pentru produs" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Evaluarea produsului" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2643,8 +2649,8 @@ msgid "" msgstr "" "Reprezintă produsele asociate comenzilor și atributele acestora. Modelul " "OrderProduct păstrează informații despre un produs care face parte dintr-o " -"comandă, inclusiv detalii precum prețul de achiziție, cantitatea, atributele " -"produsului și starea acestuia. Acesta gestionează notificările pentru " +"comandă, inclusiv detalii precum prețul de achiziție, cantitatea, atributele" +" produsului și starea acestuia. Acesta gestionează notificările pentru " "utilizator și administratori și se ocupă de operațiuni precum returnarea " "soldului produsului sau adăugarea de feedback. Acest model oferă, de " "asemenea, metode și proprietăți care susțin logica de afaceri, cum ar fi " @@ -2652,131 +2658,131 @@ msgstr "" "produsele digitale. Modelul se integrează cu modelele Order și Product și " "stochează o referință la acestea." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "Prețul plătit de client pentru acest produs la momentul achiziției" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Prețul de achiziție la momentul comenzii" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarii interne pentru administratori cu privire la acest produs comandat" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Observații interne" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Notificări pentru utilizatori" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "Reprezentarea JSON a atributelor acestui element" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Atribute de produs ordonate" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Trimitere la comanda mamă care conține acest produs" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Ordinul părinților" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Produsul specific asociat cu această linie de comandă" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Cantitatea acestui produs specific din comandă" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Cantitatea produsului" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Starea actuală a acestui produs în comandă" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Starea liniei de produse" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Comandaprodusul trebuie să aibă o comandă asociată!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Acțiune greșită specificată pentru feedback: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "" "Nu puteți elimina produse dintr-o comandă care nu este o comandă în curs" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Nume și prenume" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "Adresa URL a integrării" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Acreditări de autentificare" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Puteți avea un singur furnizor CRM implicit" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM-uri" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Legătura CRM a comenzii" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Legături CRM pentru comenzi" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Reprezintă funcționalitatea de descărcare pentru activele digitale asociate " "comenzilor. Clasa DigitalAssetDownload oferă posibilitatea de a gestiona și " "de a accesa descărcările legate de produsele de comandă. Aceasta păstrează " -"informații despre produsul de comandă asociat, numărul de descărcări și dacă " -"activul este vizibil public. Aceasta include o metodă de generare a unei " -"adrese URL pentru descărcarea activului atunci când comanda asociată este în " -"stare finalizată." +"informații despre produsul de comandă asociat, numărul de descărcări și dacă" +" activul este vizibil public. Aceasta include o metodă de generare a unei " +"adrese URL pentru descărcarea activului atunci când comanda asociată este în" +" stare finalizată." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Descărcare" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Descărcări" @@ -2784,8 +2790,8 @@ msgstr "Descărcări" msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" -"trebuie să furnizați un comentariu, un rating și uuid-ul produsului comandat " -"pentru a adăuga feedback." +"trebuie să furnizați un comentariu, un rating și uuid-ul produsului comandat" +" pentru a adăuga feedback." #: engine/core/sitemaps.py:25 msgid "Home" @@ -2977,8 +2983,7 @@ msgstr "Bună ziua %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Vă mulțumim pentru comanda dvs. #%(order.pk)s! Suntem încântați să vă " @@ -3093,12 +3098,11 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" -"Vă mulțumim pentru comanda dvs.! Suntem încântați să vă confirmăm achiziția. " -"Mai jos sunt detaliile comenzii dvs:" +"Vă mulțumim pentru comanda dvs.! Suntem încântați să vă confirmăm achiziția." +" Mai jos sunt detaliile comenzii dvs:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -3125,11 +3129,11 @@ msgstr "" "toate drepturile\n" " rezervate" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Sunt necesare atât datele, cât și timpul de așteptare" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Valoare timeout invalidă, trebuie să fie între 0 și 216000 secunde" @@ -3161,14 +3165,14 @@ msgstr "Nu aveți permisiunea de a efectua această acțiune." msgid "NOMINATIM_URL must be configured." msgstr "Parametrul NOMINATIM_URL trebuie să fie configurat!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Dimensiunile imaginii nu trebuie să depășească w{max_width} x h{max_height} " "pixeli" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3176,124 +3180,115 @@ msgstr "" "Gestionează cererea pentru indexul sitemap și returnează un răspuns XML. Se " "asigură că răspunsul include antetul tip de conținut adecvat pentru XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" "Gestionează răspunsul de vizualizare detaliată pentru o hartă a site-ului. " -"Această funcție procesează cererea, extrage răspunsul detaliat corespunzător " -"al hărții site-ului și stabilește antetul Content-Type pentru XML." +"Această funcție procesează cererea, extrage răspunsul detaliat corespunzător" +" al hărții site-ului și stabilește antetul Content-Type pentru XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returnează o listă a limbilor acceptate și informațiile corespunzătoare." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnează parametrii site-ului web sub forma unui obiect JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"Gestionează operațiunile din cache, cum ar fi citirea și setarea datelor din " -"cache cu o cheie și un timeout specificate." +"Gestionează operațiunile din cache, cum ar fi citirea și setarea datelor din" +" cache cu o cheie și un timeout specificate." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Gestionează trimiterea formularelor `contact us`." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -"Gestionează cererile de procesare și validare a URL-urilor din cererile POST " -"primite." +"Gestionează cererile de procesare și validare a URL-urilor din cererile POST" +" primite." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Gestionează interogările de căutare globală." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Gestionează logica cumpărării ca o afacere fără înregistrare." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestionează descărcarea unui bun digital asociat cu o comandă.\n" -"Această funcție încearcă să servească fișierul activului digital situat în " -"directorul de stocare al proiectului. Dacă fișierul nu este găsit, este " -"generată o eroare HTTP 404 pentru a indica faptul că resursa nu este " -"disponibilă." +"Această funcție încearcă să servească fișierul activului digital situat în directorul de stocare al proiectului. Dacă fișierul nu este găsit, este generată o eroare HTTP 404 pentru a indica faptul că resursa nu este disponibilă." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid este necesar" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "comanda produsul nu există" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Puteți descărca activul digital o singură dată" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "comanda trebuie plătită înainte de descărcarea activului digital" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Produsul de comandă nu are un produs" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon nu a fost găsit" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestionează cererile pentru favicon-ul unui site web.\n" -"Această funcție încearcă să servească fișierul favicon situat în directorul " -"static al proiectului. Dacă fișierul favicon nu este găsit, este generată o " -"eroare HTTP 404 pentru a indica faptul că resursa nu este disponibilă." +"Această funcție încearcă să servească fișierul favicon situat în directorul static al proiectului. Dacă fișierul favicon nu este găsit, este generată o eroare HTTP 404 pentru a indica faptul că resursa nu este disponibilă." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Redirecționează solicitarea către pagina de index a administratorului. " -"Funcția gestionează cererile HTTP primite și le redirecționează către pagina " -"index a interfeței de administrare Django. Aceasta utilizează funcția " +"Funcția gestionează cererile HTTP primite și le redirecționează către pagina" +" index a interfeței de administrare Django. Aceasta utilizează funcția " "`redirect` din Django pentru gestionarea redirecționării HTTP." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Returnează versiunea curentă a eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Venituri și comenzi (ultimul %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Returnează variabilele personalizate pentru tabloul de bord." @@ -3314,10 +3309,11 @@ msgstr "" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Reprezintă un set de vizualizări pentru gestionarea obiectelor " "AttributeGroup. Gestionează operațiunile legate de AttributeGroup, inclusiv " @@ -3334,20 +3330,20 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"Gestionează operațiunile legate de obiectele Attribute în cadrul aplicației. " -"Oferă un set de puncte finale API pentru a interacționa cu datele Attribute. " -"Această clasă gestionează interogarea, filtrarea și serializarea obiectelor " -"Attribute, permițând controlul dinamic asupra datelor returnate, cum ar fi " -"filtrarea după câmpuri specifice sau recuperarea de informații detaliate sau " -"simplificate în funcție de cerere." +"Gestionează operațiunile legate de obiectele Attribute în cadrul aplicației." +" Oferă un set de puncte finale API pentru a interacționa cu datele " +"Attribute. Această clasă gestionează interogarea, filtrarea și serializarea " +"obiectelor Attribute, permițând controlul dinamic asupra datelor returnate, " +"cum ar fi filtrarea după câmpuri specifice sau recuperarea de informații " +"detaliate sau simplificate în funcție de cerere." #: engine/core/viewsets.py:198 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Un set de vizualizări pentru gestionarea obiectelor AttributeValue. Acest " "set de vizualizări oferă funcționalități pentru listarea, extragerea, " @@ -3395,9 +3391,9 @@ msgid "" msgstr "" "Gestionează operațiunile legate de modelul `Product` din sistem. Această " "clasă oferă un set de vizualizări pentru gestionarea produselor, inclusiv " -"filtrarea lor, serializarea și operațiunile asupra instanțelor specifice. Se " -"extinde de la `EvibesViewSet` pentru a utiliza funcționalități comune și se " -"integrează cu cadrul REST Django pentru operațiuni API RESTful. Include " +"filtrarea lor, serializarea și operațiunile asupra instanțelor specifice. Se" +" extinde de la `EvibesViewSet` pentru a utiliza funcționalități comune și se" +" integrează cu cadrul REST Django pentru operațiuni API RESTful. Include " "metode pentru recuperarea detaliilor produsului, aplicarea permisiunilor și " "accesarea feedback-ului aferent unui produs." @@ -3409,8 +3405,8 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Reprezintă un set de vizualizări pentru gestionarea obiectelor Vendor. Acest " -"set de vizualizare permite preluarea, filtrarea și serializarea datelor " +"Reprezintă un set de vizualizări pentru gestionarea obiectelor Vendor. Acest" +" set de vizualizare permite preluarea, filtrarea și serializarea datelor " "furnizorului. Aceasta definește queryset-ul, configurațiile de filtrare și " "clasele de serializare utilizate pentru a gestiona diferite acțiuni. Scopul " "acestei clase este de a oferi acces simplificat la resursele legate de " @@ -3421,14 +3417,14 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Reprezentarea unui set de vizualizări care gestionează obiecte Feedback. " "Această clasă gestionează operațiunile legate de obiectele Feedback, " -"inclusiv listarea, filtrarea și extragerea detaliilor. Scopul acestui set de " -"vizualizări este de a furniza serializatoare diferite pentru acțiuni " +"inclusiv listarea, filtrarea și extragerea detaliilor. Scopul acestui set de" +" vizualizări este de a furniza serializatoare diferite pentru acțiuni " "diferite și de a implementa gestionarea pe bază de permisiuni a obiectelor " "Feedback accesibile. Aceasta extinde clasa de bază `EvibesViewSet` și " "utilizează sistemul de filtrare Django pentru interogarea datelor." @@ -3438,9 +3434,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet pentru gestionarea comenzilor și a operațiunilor conexe. Această " @@ -3457,8 +3453,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Oferă un set de vizualizări pentru gestionarea entităților OrderProduct. " @@ -3470,7 +3466,8 @@ msgstr "" #: engine/core/viewsets.py:974 msgid "Manages operations related to Product images in the application. " -msgstr "Gestionează operațiunile legate de imaginile produselor din aplicație." +msgstr "" +"Gestionează operațiunile legate de imaginile produselor din aplicație." #: engine/core/viewsets.py:988 msgid "" @@ -3493,8 +3490,8 @@ msgstr "" msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3517,8 +3514,8 @@ msgid "" "on the request context." msgstr "" "Această clasă oferă funcționalități de tip viewset pentru gestionarea " -"obiectelor `Address`. Clasa AddressViewSet permite operațiuni CRUD, filtrare " -"și acțiuni personalizate legate de entitățile adresă. Aceasta include " +"obiectelor `Address`. Clasa AddressViewSet permite operațiuni CRUD, filtrare" +" și acțiuni personalizate legate de entitățile adresă. Aceasta include " "comportamente specializate pentru diferite metode HTTP, înlocuiri ale " "serializatorului și gestionarea permisiunilor în funcție de contextul " "cererii." diff --git a/engine/core/locale/ru_RU/LC_MESSAGES/django.mo b/engine/core/locale/ru_RU/LC_MESSAGES/django.mo index 7b10ade361f65d6d58bfc7fb6c933f9dcf9a986e..9aa27db9df58840670d4fe291ff49f5f3925b984 100644 GIT binary patch delta 14916 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 diff --git a/engine/core/locale/ru_RU/LC_MESSAGES/django.po b/engine/core/locale/ru_RU/LC_MESSAGES/django.po index a6b4cc47..42cb3fea 100644 --- a/engine/core/locale/ru_RU/LC_MESSAGES/django.po +++ b/engine/core/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Активен" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Если установлено значение false, этот объект не может быть виден " "пользователям без необходимого разрешения" @@ -74,65 +75,65 @@ msgstr "Метаданные" msgid "timestamps" msgstr "Временные метки" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Активировать выбранный %(verbose_name_plural)s" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Выбранные сущности активированы!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Деактивировать выбранный %(verbose_name_plural)s" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Выбранные сущности были деактивированы!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Значение атрибута" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Значения атрибутов" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Изображение" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Изображения" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Наличие" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Наличия" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Заказанный товар" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Заказанные товары" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Дети" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Конфигурация" @@ -156,7 +157,8 @@ msgstr "Доставлено" msgid "canceled" msgstr "Отменено" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Не удалось" @@ -198,11 +200,11 @@ msgstr "" "содержимого. Язык может быть выбран с помощью Accept-Language и параметра " "запроса." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Ввод/вывод кэша" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -210,36 +212,36 @@ msgstr "" "Применяйте только ключ для чтения разрешенных данных из кэша.\n" "Применяйте ключ, данные и таймаут с аутентификацией для записи данных в кэш." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Получите список поддерживаемых языков" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Получите параметры приложения, которые можно использовать" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Отправьте сообщение в службу поддержки" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Запросите URL-адрес с поддержкой CORS. Допускается только https." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Поиск между продуктами, категориями и брендами" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" "Ручка глобального поиска для запросов по всем открытым таблицам проекта" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Приобрести заказ в качестве предприятия" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -247,7 +249,7 @@ msgstr "" "Приобретите заказ как бизнес, используя предоставленные `продукты` с " "`product_uuid` и `attributes`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "загрузить цифровой актив из приобретенного цифрового заказа" @@ -274,7 +276,8 @@ msgstr "" "элементов" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Переписывание некоторых полей существующей группы атрибутов с сохранением " "нередактируемых полей" @@ -328,7 +331,8 @@ msgstr "" "значений" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Переписывание некоторых полей существующего значения атрибута с сохранением " "нередактируемых значений" @@ -366,9 +370,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "Мета-данные для SEO" @@ -388,11 +392,11 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Поиск подстроки с учетом регистра в human_readable_id, order_products." -"product.name и order_products.product.partnumber" +"Поиск подстроки с учетом регистра в human_readable_id, " +"order_products.product.name и order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -428,9 +432,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Упорядочивайте по одному из следующих признаков: uuid, human_readable_id, " "user_email, user, status, created, modified, buy_time, random. Префикс '-' " @@ -489,7 +493,7 @@ msgstr "получить текущий отложенный ордер поль msgid "retrieves a current pending order of an authenticated user" msgstr "извлекает текущий отложенный заказ аутентифицированного пользователя" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "приобретение заказа без создания учетной записи" @@ -518,8 +522,8 @@ msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -"Добавляет список товаров в заказ, используя предоставленные `product_uuid` и " -"`attributes`." +"Добавляет список товаров в заказ, используя предоставленные `product_uuid` и" +" `attributes`." #: engine/core/docs/drf/viewsets.py:472 msgid "remove product from order" @@ -542,8 +546,8 @@ msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -"Удаляет список товаров из заказа, используя предоставленные `product_uuid` и " -"`attributes`." +"Удаляет список товаров из заказа, используя предоставленные `product_uuid` и" +" `attributes`." #: engine/core/docs/drf/viewsets.py:497 msgid "list all wishlists (simple view)" @@ -633,29 +637,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Фильтр по одной или нескольким парам имя/значение атрибута. \n" "- **Синтаксис**: `attr_name=method-value[;attr2=method2-value2]...`.\n" -"- **Методы** (по умолчанию используется `icontains`, если опущено): " -"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, " -"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, " -"`gt`, `gte`, `in`.\n" -"- **Типизация значений**: JSON сначала пытается принять значение (так что вы " -"можете передавать списки/дискреты), `true`/`false` для булевых, целых чисел, " -"плавающих; в противном случае обрабатывается как строка. \n" -"- **Base64**: префикс `b64-` для безопасного для URL base64-кодирования " -"исходного значения. \n" +"- **Методы** (по умолчанию используется `icontains`, если опущено): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- **Типизация значений**: JSON сначала пытается принять значение (так что вы можете передавать списки/дискреты), `true`/`false` для булевых, целых чисел, плавающих; в противном случае обрабатывается как строка. \n" +"- **Base64**: префикс `b64-` для безопасного для URL base64-кодирования исходного значения. \n" "Примеры: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." @@ -670,14 +663,11 @@ msgstr "(точный) UUID продукта" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Список полей для сортировки, разделенных запятыми. Для сортировки по " -"убыванию используйте префикс `-`. \n" -"**Разрешенные:** uuid, рейтинг, название, slug, created, modified, price, " -"random" +"Список полей для сортировки, разделенных запятыми. Для сортировки по убыванию используйте префикс `-`. \n" +"**Разрешенные:** uuid, рейтинг, название, slug, created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "retrieve a single product (detailed view)" @@ -690,9 +680,6 @@ msgid "Product UUID or slug" msgstr "UUID или Slug продукта" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Создать продукт" @@ -1005,8 +992,8 @@ msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Поисковый запрос не предоставлен." @@ -1015,8 +1002,8 @@ msgstr "Поисковый запрос не предоставлен." msgid "Search" msgstr "Поиск" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1062,8 +1049,8 @@ msgid "Quantity" msgstr "Количество" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Слаг" @@ -1079,7 +1066,7 @@ msgstr "Включите подкатегории" msgid "Include personal ordered" msgstr "Включите продукты, заказанные лично" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "Артикул" @@ -1102,12 +1089,12 @@ msgid "Bought before (inclusive)" msgstr "Куплено ранее (включительно)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "Электронная почта пользователя" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "UUID пользователя" @@ -1131,256 +1118,257 @@ msgstr "Вся категория (есть хотя бы 1 продукт ил msgid "Level" msgstr "Уровень" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "UUID продукта" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Ключ, который нужно найти в тайнике или вложить в него" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Данные для хранения в кэше" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Тайм-аут в секундах для занесения данных в кэш" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Кэшированные данные" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-данные из запрашиваемого URL" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Допускаются только URL-адреса, начинающиеся с http(s)://" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Добавить товар в заказ" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Заказ {order_uuid} не найден!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Удалить продукт из заказа" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Удалить все товары из заказа" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Купить заказ" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Пожалуйста, укажите либо order_uuid, либо order_hr_id - взаимоисключающие " "варианты!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Неправильный тип получен из метода order.buy(): {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Выполните действие над списком товаров в заказе" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Удалить/добавить" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Действие должно быть либо \"добавить\", либо \"удалить\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Выполните действие над списком продуктов в списке желаний" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Пожалуйста, укажите значение `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Список желаний {wishlist_uuid} не найден!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Добавить товар в заказ" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Удалить продукт из заказа" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Удалить продукт из заказа" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Удалить продукт из заказа" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Купить заказ" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Пожалуйста, отправьте атрибуты в виде строки, отформатированной как " "attr1=value1,attr2=value2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Добавить или удалить отзыв для продукта заказа" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Действие должно быть либо `add`, либо `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Заказ товара {order_product_uuid} не найден!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Оригинальная строка адреса, предоставленная пользователем" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} не существует: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Предел должен быть от 1 до 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - работает как шарм" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Атрибуты" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Сгруппированные атрибуты" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Группы атрибутов" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Категории" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Бренды" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Категории" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Процент наценки" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Какие атрибуты и значения можно использовать для фильтрации этой категории." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Минимальные и максимальные цены на товары в этой категории, если они " "доступны." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Теги для этой категории" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Продукты в этой категории" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Поставщики" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Широта (координата Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Долгота (координата X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Как" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Значение рейтинга от 1 до 10, включительно, или 0, если он не установлен." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Представляет собой отзыв пользователя." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Уведомления" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Если применимо, загрузите url для этого продукта заказа" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Обратная связь" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Список товаров, заказанных в этом заказе" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Адрес для выставления счетов" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1388,53 +1376,53 @@ msgstr "" "Адрес доставки для данного заказа, оставьте пустым, если он совпадает с " "адресом выставления счета или не применяется" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Общая стоимость этого заказа" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Общее количество продуктов в заказе" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Все ли товары в заказе представлены в цифровом виде" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Операции для этого заказа" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Заказы" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "URL-адрес изображения" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Изображения товара" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Категория" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Отзывы" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Бренд" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Группы атрибутов" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1442,7 +1430,7 @@ msgstr "Группы атрибутов" msgid "price" msgstr "Цена" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1450,39 +1438,39 @@ msgstr "Цена" msgid "quantity" msgstr "Количество" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Количество отзывов" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Продукты доступны только для личных заказов" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Цена со скидкой" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Товары" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Промокоды" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Продукты в продаже" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Промоакции" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Поставщик" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1490,100 +1478,100 @@ msgstr "Поставщик" msgid "product" msgstr "Товар" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Продукты из списка желаний" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Списки желаний" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Tagged products" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Теги товара" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Категории с метками" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Теги категорий" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Название проекта" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Название компании" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Адрес компании" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Номер телефона компании" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', иногда его нужно использовать вместо значения пользователя " "хоста." -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Пользователь узла электронной почты" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Максимальная сумма для оплаты" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Минимальная сумма для оплаты" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Аналитические данные" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Рекламные данные" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Конфигурация" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Код языка" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Название языка" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Языковой флаг, если он существует :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Получите список поддерживаемых языков" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Результаты поиска товаров" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Результаты поиска товаров" @@ -1600,23 +1588,23 @@ msgstr "" "быть полезно для категоризации и более эффективного управления атрибутами в " "сложной системе." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Родитель этой группы" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Родительская группа атрибутов" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Имя группы атрибутов" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Группа атрибутов" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1635,49 +1623,49 @@ msgstr "" "метаданные и ограничения, что делает ее пригодной для использования в " "системах, взаимодействующих со сторонними поставщиками." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -"Хранит учетные данные и конечные точки, необходимые для взаимодействия с API " -"поставщика." +"Хранит учетные данные и конечные точки, необходимые для взаимодействия с API" +" поставщика." -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Информация об аутентификации" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "Определите наценку для товаров, полученных от этого продавца" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Процент наценки поставщика" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Имя этого продавца" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Название поставщика" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "файл ответа" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "последний ответ поставщика на обработку" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Путь к файлу интеграции поставщика" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Путь интеграции" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1687,32 +1675,32 @@ msgid "" msgstr "" "Представляет тег продукта, используемый для классификации или идентификации " "продуктов. Класс ProductTag предназначен для уникальной идентификации и " -"классификации продуктов с помощью комбинации внутреннего идентификатора тега " -"и удобного для пользователя отображаемого имени. Он поддерживает операции, " +"классификации продуктов с помощью комбинации внутреннего идентификатора тега" +" и удобного для пользователя отображаемого имени. Он поддерживает операции, " "экспортируемые через миксины, и обеспечивает настройку метаданных для " "административных целей." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Внутренний идентификатор тега для тега продукта" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Название тега" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Удобное название для метки продукта" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Отображаемое имя тега" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Метка продукта" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1720,18 +1708,18 @@ msgid "" msgstr "" "Представляет тег категории, используемый для продуктов. Этот класс " "моделирует тег категории, который может быть использован для ассоциации и " -"классификации продуктов. Он включает атрибуты для внутреннего идентификатора " -"тега и удобного для пользователя отображаемого имени." +"классификации продуктов. Он включает атрибуты для внутреннего идентификатора" +" тега и удобного для пользователя отображаемого имени." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "тег категории" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "теги категорий" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1745,114 +1733,115 @@ msgid "" msgstr "" "Представляет собой объект категории для организации и группировки связанных " "элементов в иерархическую структуру. Категории могут иметь иерархические " -"отношения с другими категориями, поддерживая отношения \"родитель-ребенок\". " -"Класс включает поля для метаданных и визуального представления, которые " +"отношения с другими категориями, поддерживая отношения \"родитель-ребенок\"." +" Класс включает поля для метаданных и визуального представления, которые " "служат основой для функций, связанных с категориями. Этот класс обычно " "используется для определения и управления категориями товаров или другими " "подобными группировками в приложении, позволяя пользователям или " "администраторам указывать название, описание и иерархию категорий, а также " "назначать атрибуты, такие как изображения, теги или приоритет." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Загрузите изображение, представляющее эту категорию" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Изображение категории" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Определите процент наценки для товаров в этой категории" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Родитель данной категории для формирования иерархической структуры" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Родительская категория" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Название категории" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Укажите название этой категории" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Добавьте подробное описание для этой категории" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Описание категории" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "теги, которые помогают описать или сгруппировать эту категорию" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Приоритет" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Представляет объект Brand в системе. Этот класс обрабатывает информацию и " "атрибуты, связанные с брендом, включая его название, логотипы, описание, " "связанные категории, уникальную метку и порядок приоритетов. Он позволяет " "организовать и представить данные, связанные с брендом, в приложении." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Название этой марки" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Название бренда" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Загрузите логотип, представляющий этот бренд" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Маленький образ бренда" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Загрузите большой логотип, представляющий этот бренд" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Большой имидж бренда" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Добавьте подробное описание бренда" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Описание бренда" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Дополнительные категории, с которыми ассоциируется этот бренд" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Категории" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1865,72 +1854,72 @@ msgstr "" "активы. Он является частью системы управления запасами, позволяющей " "отслеживать и оценивать продукты, доступные у различных поставщиков." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Поставщик, поставляющий данный товар на склад" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Ассоциированный поставщик" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Окончательная цена для покупателя после наценок" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Цена продажи" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Продукт, связанный с этой складской записью" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Сопутствующий товар" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Цена, уплаченная продавцу за этот продукт" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Цена покупки у поставщика" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Доступное количество продукта на складе" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Количество на складе" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "Присвоенный поставщиком SKU для идентификации продукта" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "Артикул поставщика" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Цифровой файл, связанный с этой акцией, если применимо" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Цифровой файл" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Атрибуты системы" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Наличия" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1945,67 +1934,76 @@ msgstr "" "цифровой статус, название, описание, номер детали и метка. Предоставляет " "связанные с ним полезные свойства для получения оценок, количества отзывов, " "цены, количества и общего числа заказов. Предназначен для использования в " -"системе, которая занимается электронной коммерцией или управлением запасами. " -"Этот класс взаимодействует со связанными моделями (такими как Category, " +"системе, которая занимается электронной коммерцией или управлением запасами." +" Этот класс взаимодействует со связанными моделями (такими как Category, " "Brand и ProductTag) и управляет кэшированием часто используемых свойств для " "повышения производительности. Он используется для определения и " "манипулирования данными о товаре и связанной с ним информацией в приложении." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Категория, к которой относится этот продукт" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "По желанию ассоциируйте этот продукт с брендом" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Теги, которые помогают описать или сгруппировать этот продукт" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Указывает, поставляется ли этот продукт в цифровом виде" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Является ли продукт цифровым" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" +"указывает, следует ли обновлять этот продукт из периодического задания" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "обновляется ли продукт" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Обеспечьте четкое идентификационное название продукта" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Название продукта" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Добавьте подробное описание продукта" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Описание товара" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Парт. номер для данного товара" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Парт. номер" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Единица складского учета для данного продукта" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Представляет атрибут в системе. Этот класс используется для определения и " @@ -2016,91 +2014,91 @@ msgstr "" "плавающую форму, булевую форму, массив и объект. Это позволяет динамично и " "гибко структурировать данные." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Группа этого атрибута" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Строка" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Целое число" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Поплавок" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Булево" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Массив" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Объект" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Тип значения атрибута" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Тип значения" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Имя этого атрибута" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Имя атрибута" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "поддается фильтрации" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Какие атрибуты и значения можно использовать для фильтрации этой категории." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Атрибут" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Представляет собой конкретное значение для атрибута, связанного с продуктом. " -"Он связывает \"атрибут\" с уникальным \"значением\", позволяя лучше " +"Представляет собой конкретное значение для атрибута, связанного с продуктом." +" Он связывает \"атрибут\" с уникальным \"значением\", позволяя лучше " "организовать и динамически представить характеристики продукта." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Атрибут этого значения" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Конкретный продукт, связанный со значением этого атрибута" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Конкретное значение для этого атрибута" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2110,48 +2108,48 @@ msgstr "" "товарам и определения порядка их отображения. Он также включает функцию " "доступности с альтернативным текстом для изображений." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "" "Предоставьте альтернативный текст для изображения, чтобы обеспечить " "доступность" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Альтовый текст изображения" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Загрузите файл изображения для этого продукта" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Изображение продукта" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Определяет порядок отображения изображений" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Приоритет отображения" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Продукт, который представлен на этом изображении" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Изображения товаров" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Представляет рекламную кампанию для товаров со скидкой. Этот класс " "используется для определения и управления рекламными кампаниями, " @@ -2160,39 +2158,39 @@ msgstr "" "акции и привязки ее к соответствующим товарам. Он интегрируется с каталогом " "товаров для определения товаров, на которые распространяется акция." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Процентная скидка на выбранные продукты" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Процент скидки" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Укажите уникальное имя для этой акции" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Название акции" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Описание акции" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Выберите, какие продукты участвуют в этой акции" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Включенные продукты" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Продвижение" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2205,60 +2203,60 @@ msgstr "" "товаров, а также поддерживая операции добавления и удаления нескольких " "товаров одновременно." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Продукты, которые пользователь отметил как желаемые" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Пользователь, владеющий этим списком желаний" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Владелец вишлиста" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Список желаний" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Представляет документальную запись, связанную с продуктом. Этот класс " "используется для хранения информации о документальных записях, связанных с " "конкретными продуктами, включая загруженные файлы и их метаданные. Он " "содержит методы и свойства для обработки типа файла и пути хранения " -"документальных файлов. Он расширяет функциональность определенных миксинов и " -"предоставляет дополнительные пользовательские возможности." +"документальных файлов. Он расширяет функциональность определенных миксинов и" +" предоставляет дополнительные пользовательские возможности." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Документальный фильм" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Документальные фильмы" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Неразрешенные" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Представляет адресную сущность, включающую сведения о местоположении и " "ассоциации с пользователем. Обеспечивает функциональность для хранения " @@ -2270,59 +2268,59 @@ msgstr "" "обработки или проверки. Класс также позволяет ассоциировать адрес с " "пользователем, что облегчает работу с персонализированными данными." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Адресная строка для клиента" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Адресная строка" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Улица" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Округ" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Город" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Регион" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Почтовый индекс" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Страна" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Геолокационная точка(долгота, широта)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Полный JSON-ответ от геокодера для этого адреса" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Сохраненный JSON-ответ от сервиса геокодирования" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Адрес" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Адреса" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2334,244 +2332,245 @@ msgstr "" "Представляет промокод, который можно использовать для получения скидки, " "управляя его сроком действия, типом скидки и применением. Класс PromoCode " "хранит информацию о промокоде, включая его уникальный идентификатор, " -"свойства скидки (размер или процент), срок действия, связанного пользователя " -"(если таковой имеется) и статус его использования. Он включает в себя " +"свойства скидки (размер или процент), срок действия, связанного пользователя" +" (если таковой имеется) и статус его использования. Он включает в себя " "функциональность для проверки и применения промокода к заказу, обеспечивая " "при этом соблюдение ограничений." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Уникальный код, используемый пользователем для получения скидки" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Идентификатор промо-кода" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Фиксированная сумма скидки, применяемая, если процент не используется" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Фиксированная сумма скидки" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Процентная скидка, применяемая, если фиксированная сумма не используется" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Процентная скидка" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Временная метка, когда истекает срок действия промокода" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Время окончания срока действия" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Время, с которого действует этот промокод" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Время начала действия" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Временная метка, когда был использован промокод, пустая, если он еще не " "использовался" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Временная метка использования" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Пользователь, назначенный на этот промокод, если применимо" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Назначенный пользователь" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Промокод" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Промокоды" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Следует определить только один тип скидки (сумма или процент), но не оба или " -"ни один из них." +"Следует определить только один тип скидки (сумма или процент), но не оба или" +" ни один из них." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Промокоды" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Неверный тип скидки для промокода {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" -"Представляет заказ, оформленный пользователем. Этот класс моделирует заказ в " -"приложении, включая его различные атрибуты, такие как информация о " +"Представляет заказ, оформленный пользователем. Этот класс моделирует заказ в" +" приложении, включая его различные атрибуты, такие как информация о " "выставлении счета и доставке, статус, связанный пользователь, уведомления и " "связанные операции. Заказы могут иметь связанные продукты, к ним можно " "применять рекламные акции, устанавливать адреса и обновлять данные о " "доставке или выставлении счета. Кроме того, функциональность поддерживает " "управление продуктами в жизненном цикле заказа." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Адрес для выставления счетов, используемый для данного заказа" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Дополнительный промокод, применяемый к этому заказу" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Примененный промокод" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Адрес доставки, используемый для данного заказа" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Адрес доставки" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Текущий статус заказа в его жизненном цикле" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Статус заказа" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" -"JSON-структура уведомлений для отображения пользователям, в административном " -"интерфейсе используется табличный вид" +"JSON-структура уведомлений для отображения пользователям, в административном" +" интерфейсе используется табличный вид" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "JSON-представление атрибутов заказа для этого заказа" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "Пользователь, разместивший заказ" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Пользователь" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Временная метка, когда заказ был завершен" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Время покупки" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Человекочитаемый идентификатор для заказа" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "человекочитаемый идентификатор" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Заказ" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "Пользователь может одновременно иметь только один отложенный ордер!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "Вы не можете добавить товары в заказ, который не является отложенным." -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Вы не можете добавить неактивные товары в заказ" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "Вы не можете добавить больше товаров, чем есть на складе" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" -msgstr "Вы не можете удалить товары из заказа, который не является отложенным." +msgstr "" +"Вы не можете удалить товары из заказа, который не является отложенным." -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} не существует с запросом <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Промокод не существует" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" "Вы можете купить физические товары только с указанным адресом доставки!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Адрес не существует" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "В данный момент вы не можете совершить покупку, пожалуйста, повторите " "попытку через несколько минут." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Недопустимое значение силы" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Вы не можете приобрести пустой заказ!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "Вы не можете купить заказ без пользователя!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Пользователь без баланса не может покупать с балансом!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Недостаточно средств для выполнения заказа" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2579,14 +2578,14 @@ msgstr "" "Вы не можете купить без регистрации, пожалуйста, предоставьте следующую " "информацию: имя клиента, электронная почта клиента, номер телефона клиента" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Неверный способ оплаты: {payment_method} от {available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2601,32 +2600,33 @@ msgstr "" "пользователем. Класс использует поля базы данных для эффективного " "моделирования и управления данными отзывов." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "Комментарии пользователей об их опыте использования продукта" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Комментарии к отзывам" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "Ссылка на конкретный продукт в заказе, о котором идет речь в этом отзыве" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Сопутствующий товар для заказа" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Присвоенный пользователем рейтинг продукта" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Рейтинг продукции" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2648,128 +2648,129 @@ msgstr "" "для цифровых продуктов. Модель интегрируется с моделями Order и Product и " "хранит ссылки на них." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "Цена, уплаченная клиентом за данный продукт на момент покупки" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Покупная цена на момент заказа" -#: engine/core/models.py:1875 -msgid "internal comments for admins about this ordered product" -msgstr "Внутренние комментарии для администраторов об этом заказанном продукте" - #: engine/core/models.py:1876 +msgid "internal comments for admins about this ordered product" +msgstr "" +"Внутренние комментарии для администраторов об этом заказанном продукте" + +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Внутренние комментарии" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Уведомления пользователей" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "JSON-представление атрибутов этого элемента" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Атрибуты заказанного продукта" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Ссылка на родительский заказ, содержащий данный продукт" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Родительский приказ" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Конкретный продукт, связанный с этой линией заказа" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Количество данного товара в заказе" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Количество продукта" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Текущий статус этого продукта в заказе" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Состояние продуктовой линейки" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "У заказанного продукта должен быть связанный с ним заказ!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Для обратной связи указано неверное действие: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "Вы не можете отозвать заказ, который не был получен" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Имя" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL-адрес интеграции" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Учетные данные для аутентификации" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "У вас может быть только один поставщик CRM по умолчанию" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Ссылка на CRM заказа" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Ссылки на CRM заказов" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Представляет функциональность загрузки цифровых активов, связанных с " "заказами. Класс DigitalAssetDownload предоставляет возможность управления и " "доступа к загрузкам, связанным с продуктами заказа. Он хранит информацию о " -"связанном с заказом продукте, количестве загрузок и о том, является ли актив " -"общедоступным. Он включает метод для генерации URL-адреса для загрузки " +"связанном с заказом продукте, количестве загрузок и о том, является ли актив" +" общедоступным. Он включает метод для генерации URL-адреса для загрузки " "актива, когда связанный заказ находится в состоянии завершения." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Скачать" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Скачать" @@ -2970,12 +2971,11 @@ msgstr "Привет %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"Благодарим вас за заказ #%(order.pk)s! Мы рады сообщить Вам, что приняли Ваш " -"заказ в работу. Ниже приведены детали вашего заказа:" +"Благодарим вас за заказ #%(order.pk)s! Мы рады сообщить Вам, что приняли Ваш" +" заказ в работу. Ниже приведены детали вашего заказа:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -3085,8 +3085,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Спасибо за ваш заказ! Мы рады подтвердить вашу покупку. Ниже приведены " @@ -3117,11 +3116,11 @@ msgstr "" "все права\n" " защищены" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Требуются как данные, так и тайм-аут" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" "Неверное значение тайм-аута, оно должно находиться в диапазоне от 0 до " @@ -3155,13 +3154,14 @@ msgstr "У вас нет разрешения на выполнение этог msgid "NOMINATIM_URL must be configured." msgstr "Параметр NOMINATIM_URL должен быть настроен!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -"Размеры изображения не должны превышать w{max_width} x h{max_height} пикселей" +"Размеры изображения не должны превышать w{max_width} x h{max_height} " +"пикселей" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3170,27 +3170,27 @@ msgstr "" "Он обеспечивает включение в ответ заголовка типа содержимого, " "соответствующего типу XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" "Обрабатывает подробный ответ на просмотр карты сайта. Эта функция " -"обрабатывает запрос, извлекает соответствующий подробный ответ карты сайта и " -"устанавливает заголовок Content-Type для XML." +"обрабатывает запрос, извлекает соответствующий подробный ответ карты сайта и" +" устанавливает заголовок Content-Type для XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Возвращает список поддерживаемых языков и соответствующую информацию о них." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Возвращает параметры сайта в виде объекта JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3198,77 +3198,69 @@ msgstr "" "Выполняет операции с кэшем, такие как чтение и установка данных кэша с " "заданным ключом и таймаутом." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Обрабатывает отправленные формы `contact us`." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" "Обрабатывает запросы на обработку и проверку URL из входящих POST-запросов." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Обрабатывает глобальные поисковые запросы." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Работает с логикой покупки как бизнеса без регистрации." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Обрабатывает загрузку цифрового актива, связанного с заказом.\n" -"Эта функция пытается обслужить файл цифрового актива, расположенный в " -"каталоге хранения проекта. Если файл не найден, выдается ошибка HTTP 404, " -"указывающая на недоступность ресурса." +"Эта функция пытается обслужить файл цифрового актива, расположенный в каталоге хранения проекта. Если файл не найден, выдается ошибка HTTP 404, указывающая на недоступность ресурса." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "требуется order_product_uuid" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "заказанный товар не существует" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Вы можете загрузить цифровой актив только один раз" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "заказ должен быть оплачен до загрузки цифрового актива" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "У заказанного продукта нет продукта" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon не найден" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Обрабатывает запросы на фавикон веб-сайта.\n" -"Эта функция пытается обслужить файл favicon, расположенный в статической " -"директории проекта. Если файл favicon не найден, выдается ошибка HTTP 404, " -"указывающая на недоступность ресурса." +"Эта функция пытается обслужить файл favicon, расположенный в статической директории проекта. Если файл favicon не найден, выдается ошибка HTTP 404, указывающая на недоступность ресурса." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Перенаправляет запрос на индексную страницу админки. Функция обрабатывает " @@ -3276,16 +3268,16 @@ msgstr "" "администратора Django. Для обработки HTTP-перенаправления используется " "функция Django `redirect`." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Возвращает текущую версию eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Доходы и заказы (последние %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Возвращает пользовательские переменные для Dashboard." @@ -3299,16 +3291,17 @@ msgid "" msgstr "" "Определяет набор представлений для управления операциями, связанными с " "Evibes. Класс EvibesViewSet наследует от ModelViewSet и предоставляет " -"функциональность для обработки действий и операций над сущностями Evibes. Он " -"включает в себя поддержку динамических классов сериализаторов в зависимости " -"от текущего действия, настраиваемые разрешения и форматы рендеринга." +"функциональность для обработки действий и операций над сущностями Evibes. Он" +" включает в себя поддержку динамических классов сериализаторов в зависимости" +" от текущего действия, настраиваемые разрешения и форматы рендеринга." #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Представляет собой набор представлений для управления объектами " "AttributeGroup. Обрабатывает операции, связанные с AttributeGroup, включая " @@ -3337,15 +3330,15 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Набор представлений для управления объектами AttributeValue. Этот набор " "представлений предоставляет функциональность для перечисления, извлечения, " "создания, обновления и удаления объектов AttributeValue. Он интегрируется с " "механизмами наборов представлений Django REST Framework и использует " -"соответствующие сериализаторы для различных действий. Возможности фильтрации " -"предоставляются через DjangoFilterBackend." +"соответствующие сериализаторы для различных действий. Возможности фильтрации" +" предоставляются через DjangoFilterBackend." #: engine/core/viewsets.py:217 msgid "" @@ -3356,8 +3349,8 @@ msgid "" "can access specific data." msgstr "" "Управляет представлениями для операций, связанных с категорией. Класс " -"CategoryViewSet отвечает за обработку операций, связанных с моделью Category " -"в системе. Он поддерживает получение, фильтрацию и сериализацию данных " +"CategoryViewSet отвечает за обработку операций, связанных с моделью Category" +" в системе. Он поддерживает получение, фильтрацию и сериализацию данных " "категории. Набор представлений также обеспечивает соблюдение прав доступа, " "чтобы только авторизованные пользователи могли получить доступ к " "определенным данным." @@ -3400,10 +3393,10 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Представляет собой набор представлений для управления объектами Vendor. Этот " -"набор представлений позволяет получать, фильтровать и сериализовать данные о " -"поставщиках. Он определяет наборы запросов, конфигурации фильтров и классы " -"сериализаторов, используемые для выполнения различных действий. Цель этого " +"Представляет собой набор представлений для управления объектами Vendor. Этот" +" набор представлений позволяет получать, фильтровать и сериализовать данные " +"о поставщиках. Он определяет наборы запросов, конфигурации фильтров и классы" +" сериализаторов, используемые для выполнения различных действий. Цель этого " "класса - обеспечить упрощенный доступ к ресурсам, связанным с Vendor, через " "фреймворк Django REST." @@ -3412,8 +3405,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Представление набора представлений, обрабатывающих объекты Feedback. Этот " @@ -3429,35 +3422,36 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet для управления заказами и связанными с ними операциями. Этот класс " "предоставляет функциональность для получения, изменения и управления " -"объектами заказов. Он включает в себя различные конечные точки для обработки " -"операций с заказами, таких как добавление или удаление продуктов, выполнение " -"покупок для зарегистрированных и незарегистрированных пользователей, а также " -"получение информации о текущих заказах аутентифицированного пользователя. " -"ViewSet использует несколько сериализаторов в зависимости от конкретного " -"выполняемого действия и соответствующим образом устанавливает разрешения при " -"взаимодействии с данными заказа." +"объектами заказов. Он включает в себя различные конечные точки для обработки" +" операций с заказами, таких как добавление или удаление продуктов, " +"выполнение покупок для зарегистрированных и незарегистрированных " +"пользователей, а также получение информации о текущих заказах " +"аутентифицированного пользователя. ViewSet использует несколько " +"сериализаторов в зависимости от конкретного выполняемого действия и " +"соответствующим образом устанавливает разрешения при взаимодействии с " +"данными заказа." #: engine/core/viewsets.py:914 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Предоставляет набор представлений для управления сущностями OrderProduct. " "Этот набор представлений позволяет выполнять CRUD-операции и " "пользовательские действия, специфичные для модели OrderProduct. Он включает " -"фильтрацию, проверку прав доступа и переключение сериализатора в зависимости " -"от запрашиваемого действия. Кроме того, он предоставляет подробное действие " -"для обработки отзывов об экземплярах OrderProduct" +"фильтрацию, проверку прав доступа и переключение сериализатора в зависимости" +" от запрашиваемого действия. Кроме того, он предоставляет подробное действие" +" для обработки отзывов об экземплярах OrderProduct" #: engine/core/viewsets.py:974 msgid "Manages operations related to Product images in the application. " @@ -3485,8 +3479,8 @@ msgstr "Выполняет операции, связанные с данным msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3527,8 +3521,8 @@ msgid "" "using the specified filter backend and dynamically uses different " "serializers based on the action being performed." msgstr "" -"Обрабатывает операции, связанные с тегами продуктов в приложении. Этот класс " -"предоставляет функциональность для получения, фильтрации и сериализации " +"Обрабатывает операции, связанные с тегами продуктов в приложении. Этот класс" +" предоставляет функциональность для получения, фильтрации и сериализации " "объектов Product Tag. Он поддерживает гибкую фильтрацию по определенным " "атрибутам с помощью указанного бэкэнда фильтрации и динамически использует " "различные сериализаторы в зависимости от выполняемого действия." diff --git a/engine/core/locale/sv_SE/LC_MESSAGES/django.mo b/engine/core/locale/sv_SE/LC_MESSAGES/django.mo index 74df0057710af39d275e847e1b0cc709c15d0b47..80bee2e2b975477d886d8bd92ad53bc9075ef65b 100644 GIT binary patch delta 14868 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 delta 14681 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "Är aktiv" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Om det är inställt på false kan objektet inte ses av användare utan " "nödvändigt tillstånd" @@ -72,65 +73,65 @@ msgstr "Metadata" msgid "timestamps" msgstr "Tidsstämplar" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktivera vald %(verbose_name_plural)s." -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Valda artiklar har aktiverats!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Avaktivera vald %(verbose_name_plural)s." -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Valda objekt har avaktiverats!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Attributvärde" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Attributets värden" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Bild" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Bilder" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Stock" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Stocks" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Beställ produkt" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Beställ produkter" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Barn och ungdomar" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Konfig" @@ -154,7 +155,8 @@ msgstr "Levereras" msgid "canceled" msgstr "Annullerad" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Misslyckades" @@ -195,48 +197,47 @@ msgstr "" "OpenApi3-schema för detta API. Format kan väljas via innehållsförhandling. " "Språk kan väljas med både Accept-Language och frågeparameter." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Använd endast en nyckel för att läsa tillåtna data från cacheminnet.\n" -"Använd nyckel, data och timeout med autentisering för att skriva data till " -"cacheminnet." +"Använd nyckel, data och timeout med autentisering för att skriva data till cacheminnet." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Hämta en lista över språk som stöds" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Hämta applikationens exponerbara parametrar" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Skicka ett meddelande till supportteamet" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Begär en CORSed URL. Endast https tillåtet." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Sök mellan produkter, kategorier och varumärken" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "Global sökpunkt för att söka i projektets alla tabeller" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Köpa en order som ett företag" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -244,7 +245,7 @@ msgstr "" "Köp en order som ett företag, med hjälp av de tillhandahållna `produkterna` " "med `produkt_uuid` och `attribut`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "ladda ner en digital tillgång från en köpt digital order" @@ -270,7 +271,8 @@ msgstr "" "Skriva om en befintlig attributgrupp och spara icke-redigerbara attribut" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Skriv om vissa fält i en befintlig attributgrupp och spara icke-redigerbara " "fält" @@ -298,7 +300,8 @@ msgstr "Skriva om ett befintligt attribut och spara icke-redigerbara" #: engine/core/docs/drf/viewsets.py:156 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara fält" +"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara " +"fält" #: engine/core/docs/drf/viewsets.py:166 msgid "list all attribute values (simple view)" @@ -321,7 +324,8 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Skriva om ett befintligt attributvärde som sparar icke-redigerbara" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Skriva om vissa fält i ett befintligt attributvärde och spara icke-" "redigerbara fält" @@ -356,9 +360,9 @@ msgstr "Skriva om vissa fält i en befintlig kategori spara icke-redigerbara" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" @@ -378,8 +382,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Substringsökning utan skiftlägeskänslighet över human_readable_id, " "order_products.product.name och order_products.product.partnumber" @@ -403,7 +407,8 @@ msgstr "Filtrera efter exakt mänskligt läsbart order-ID" #: engine/core/docs/drf/viewsets.py:336 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -"Filtrera efter användarens e-post (exakt matchning utan skiftlägeskänslighet)" +"Filtrera efter användarens e-post (exakt matchning utan " +"skiftlägeskänslighet)" #: engine/core/docs/drf/viewsets.py:341 msgid "Filter by user's UUID" @@ -415,9 +420,9 @@ msgstr "Filtrera efter orderstatus (skiftlägeskänslig matchning av delsträng) #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordna efter en av följande: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. Prefix med \"-\" för fallande " @@ -472,7 +477,7 @@ msgstr "hämta aktuell pågående order för en användare" msgid "retrieves a current pending order of an authenticated user" msgstr "hämtar en aktuell väntande order för en autentiserad användare" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "köpa en order utan att skapa ett konto" @@ -513,8 +518,8 @@ msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -"Tar bort en produkt från en order med hjälp av de angivna `product_uuid` och " -"`attributen`." +"Tar bort en produkt från en order med hjälp av de angivna `product_uuid` och" +" `attributen`." #: engine/core/docs/drf/viewsets.py:483 msgid "remove product from order, quantities will not count" @@ -535,7 +540,8 @@ msgstr "Lista alla attribut (enkel vy)" #: engine/core/docs/drf/viewsets.py:498 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -"För användare som inte är anställda returneras endast deras egna önskelistor." +"För användare som inte är anställda returneras endast deras egna " +"önskelistor." #: engine/core/docs/drf/viewsets.py:508 msgid "retrieve a single wishlist (detailed view)" @@ -560,7 +566,8 @@ msgstr "Skriva om ett befintligt attribut och spara icke-redigerbara" #: engine/core/docs/drf/viewsets.py:537 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara fält" +"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara " +"fält" #: engine/core/docs/drf/viewsets.py:544 msgid "retrieve current pending wishlist of a user" @@ -615,26 +622,17 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrera efter ett eller flera attributnamn/värdepar. \n" "- **Syntax**: `attr_namn=metod-värde[;attr2=metod2-värde2]...`\n" -"- **Metoder** (standard är `icontains` om den utelämnas): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- **Värde typning**: JSON prövas först (så att du kan skicka listor/dikter), " -"`true`/`false` för booleaner, heltal, flottörer; annars behandlas som " -"sträng. \n" +"- **Metoder** (standard är `icontains` om den utelämnas): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Värde typning**: JSON prövas först (så att du kan skicka listor/dikter), `true`/`false` för booleaner, heltal, flottörer; annars behandlas som sträng. \n" "- **Base64**: prefix med `b64-` för URL-säker base64-kodning av råvärdet. \n" "Exempel på detta: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" @@ -650,12 +648,10 @@ msgstr "(exakt) UUID för produkt" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Kommaseparerad lista över fält att sortera efter. Prefix med `-` för " -"fallande. \n" +"Kommaseparerad lista över fält att sortera efter. Prefix med `-` för fallande. \n" "**Tillåtna:** uuid, betyg, namn, slug, skapad, modifierad, pris, slumpmässig" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -669,9 +665,6 @@ msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Skapa en produkt" @@ -972,8 +965,8 @@ msgstr "" "Skriva om vissa fält i en befintlig produkttagg och spara icke-redigerbara " "fält" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Ingen sökterm angavs." @@ -982,8 +975,8 @@ msgstr "Ingen sökterm angavs." msgid "Search" msgstr "Sök" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1029,8 +1022,8 @@ msgid "Quantity" msgstr "Kvantitet" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Snigel" @@ -1046,7 +1039,7 @@ msgstr "Inkludera underkategorier" msgid "Include personal ordered" msgstr "Inkludera personligt beställda produkter" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1069,12 +1062,12 @@ msgid "Bought before (inclusive)" msgstr "Köpt tidigare (inklusive)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "Användarens e-post" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "Användarens UUID" @@ -1098,252 +1091,254 @@ msgstr "Hela kategorin (har minst 1 produkt eller inte)" msgid "Level" msgstr "Nivå" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "Produktens UUID" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Nyckel att leta efter i eller sätta in i cachen" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Data som ska lagras i cacheminnet" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout i sekunder för att lägga data i cacheminnet" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Cachad data" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Cameliserad JSON-data från den begärda URL:en" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Endast webbadresser som börjar med http(s):// är tillåtna" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Lägg till en produkt i ordern" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Order {order_uuid} hittades inte!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Ta bort en produkt från ordern" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Ta bort alla produkter från ordern" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Köpa en order" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -"Vänligen ange antingen order_uuid eller order_hr_id - ömsesidigt uteslutande!" +"Vänligen ange antingen order_uuid eller order_hr_id - ömsesidigt " +"uteslutande!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Fel typ kom från order.buy()-metoden: {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Utför en åtgärd på en lista med produkter i ordern" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Ta bort/lägga till" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Åtgärden måste vara antingen \"lägg till\" eller \"ta bort\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Utför en åtgärd på en lista med produkter i önskelistan" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Vänligen ange värdet för `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Önskelista {wishlist_uuid} hittades inte!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Lägg till en produkt i ordern" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Ta bort en produkt från ordern" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Ta bort en produkt från ordern" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Ta bort en produkt från ordern" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Köpa en order" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Skicka attributen som en sträng formaterad som attr1=värde1,attr2=värde2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Lägg till eller ta bort en feedback för orderprodukten" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Åtgärden måste vara antingen `add` eller `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Orderprodukt {order_product_uuid} hittades inte!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Originaladresssträng som tillhandahålls av användaren" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} existerar inte: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Gränsen måste vara mellan 1 och 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fungerar som en smäck" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Attribut" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Grupperade attribut" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Grupper av attribut" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Kategorier" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Brands" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Kategorier" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Procentuell påslagning" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Vilka attribut och värden som kan användas för att filtrera denna kategori." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minsta och högsta pris för produkter i denna kategori, om tillgängligt." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Taggar för denna kategori" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Produkter i denna kategori" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Leverantörer" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Latitud (Y-koordinat)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Longitud (X-koordinat)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Hur gör man" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Ratingvärde från 1 till och med 10, eller 0 om det inte är inställt." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Representerar feedback från en användare." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Meddelanden" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Nedladdningsadress för denna orderprodukt om tillämpligt" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Återkoppling" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "En lista över orderprodukter i den här ordern" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Faktureringsadress" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1351,53 +1346,53 @@ msgstr "" "Leveransadress för denna order, lämna tom om den är samma som " "faktureringsadressen eller om den inte är tillämplig" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Totalpris för denna order" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Totalt antal produkter i ordern" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Är alla produkter i beställningen digitala" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transaktioner för denna order" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Beställningar" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "URL för bild" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Produktens bilder" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Kategori" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Återkoppling" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Varumärke" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Attributgrupper" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1405,7 +1400,7 @@ msgstr "Attributgrupper" msgid "price" msgstr "Pris" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1413,39 +1408,39 @@ msgstr "Pris" msgid "quantity" msgstr "Kvantitet" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Antal återkopplingar" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Produkter endast tillgängliga för personliga beställningar" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Rabatterat pris" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Produkter" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Promokoder" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Produkter på rea" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Kampanjer" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Leverantör" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1453,99 +1448,98 @@ msgstr "Leverantör" msgid "product" msgstr "Produkt" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Önskelistade produkter" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Önskelistor" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Taggade produkter" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Produkttaggar" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Taggade kategorier" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Kategoriernas taggar" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Projektets namn" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Företagets namn" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Företagets adress" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Företagets telefonnummer" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" -msgstr "" -"\"email from\", ibland måste det användas istället för host user-värdet" +msgstr "\"email from\", ibland måste det användas istället för host user-värdet" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "E-post värd användare" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Högsta belopp för betalning" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Lägsta belopp för betalning" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Analysdata" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Annonsdata" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Konfiguration" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Språkkod" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Språkets namn" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Språkflagga, om sådan finns :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Hämta en lista över språk som stöds" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Sökresultat för produkter" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Sökresultat för produkter" @@ -1557,28 +1551,28 @@ msgid "" "categorizing and managing attributes more effectively in acomplex system." msgstr "" "Representerar en grupp av attribut, som kan vara hierarkiska. Denna klass " -"används för att hantera och organisera attributgrupper. En attributgrupp kan " -"ha en överordnad grupp som bildar en hierarkisk struktur. Detta kan vara " +"används för att hantera och organisera attributgrupper. En attributgrupp kan" +" ha en överordnad grupp som bildar en hierarkisk struktur. Detta kan vara " "användbart för att kategorisera och hantera attribut på ett mer effektivt " "sätt i ett komplext system." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Förälder till denna grupp" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Överordnad attributgrupp" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Attributgruppens namn" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Attributgrupp" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1591,56 +1585,56 @@ msgstr "" "Representerar en vendor-enhet som kan lagra information om externa " "leverantörer och deras interaktionskrav. Klassen Vendor används för att " "definiera och hantera information som är relaterad till en extern " -"leverantör. Den lagrar leverantörens namn, autentiseringsuppgifter som krävs " -"för kommunikation och den procentuella markering som tillämpas på produkter " -"som hämtas från leverantören. Modellen innehåller också ytterligare metadata " -"och begränsningar, vilket gör den lämplig att använda i system som " +"leverantör. Den lagrar leverantörens namn, autentiseringsuppgifter som krävs" +" för kommunikation och den procentuella markering som tillämpas på produkter" +" som hämtas från leverantören. Modellen innehåller också ytterligare " +"metadata och begränsningar, vilket gör den lämplig att använda i system som " "interagerar med tredjepartsleverantörer." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Lagrar autentiseringsuppgifter och ändpunkter som krävs för leverantörens " "API-kommunikation" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Autentiseringsinformation" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definiera markeringen för produkter som hämtas från den här leverantören" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Leverantörens påslag i procent" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Namn på denna säljare" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Leverantörens namn" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "svarsfil" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "säljarens senaste bearbetningssvar" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Sökväg till leverantörens integrationsfil" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Integrationsväg" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1652,30 +1646,30 @@ msgstr "" "identifiera produkter. Klassen ProductTag är utformad för att unikt " "identifiera och klassificera produkter genom en kombination av en intern " "taggidentifierare och ett användarvänligt visningsnamn. Den stöder " -"operationer som exporteras via mixins och tillhandahåller metadataanpassning " -"för administrativa ändamål." +"operationer som exporteras via mixins och tillhandahåller metadataanpassning" +" för administrativa ändamål." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Intern taggidentifierare för produkttaggen" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Tagg namn" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Användarvänligt namn för produkttaggen" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Taggens visningsnamn" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Produktmärkning" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1686,15 +1680,15 @@ msgstr "" "klassificera produkter. Den innehåller attribut för en intern " "taggidentifierare och ett användarvänligt visningsnamn." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "kategori tagg" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "Kategoritaggar" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1712,60 +1706,61 @@ msgstr "" "innehåller fält för metadata och visuell representation, som utgör grunden " "för kategorirelaterade funktioner. Den här klassen används vanligtvis för " "att definiera och hantera produktkategorier eller andra liknande " -"grupperingar inom en applikation, så att användare eller administratörer kan " -"ange namn, beskrivning och hierarki för kategorier samt tilldela attribut " +"grupperingar inom en applikation, så att användare eller administratörer kan" +" ange namn, beskrivning och hierarki för kategorier samt tilldela attribut " "som bilder, taggar eller prioritet." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Ladda upp en bild som representerar denna kategori" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Kategori bild" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Definiera en påslagsprocent för produkter i den här kategorin" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Förälder till denna kategori för att bilda en hierarkisk struktur" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Föräldrakategori" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Namn på kategori" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Ange ett namn för denna kategori" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Lägg till en detaljerad beskrivning för denna kategori" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Beskrivning av kategori" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "taggar som hjälper till att beskriva eller gruppera denna kategori" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Prioritet" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Representerar ett Brand-objekt i systemet. Klassen hanterar information och " "attribut som är relaterade till ett varumärke, inklusive dess namn, " @@ -1773,50 +1768,50 @@ msgstr "" "prioritetsordning. Den gör det möjligt att organisera och representera " "varumärkesrelaterade data i applikationen." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Namn på detta varumärke" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Varumärke" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Ladda upp en logotyp som representerar detta varumärke" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Varumärke liten image" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Ladda upp en stor logotyp som representerar detta varumärke" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Varumärke med stor image" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Lägg till en detaljerad beskrivning av varumärket" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Varumärkesbeskrivning" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Valfria kategorier som detta varumärke är förknippat med" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Kategorier" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1829,72 +1824,72 @@ msgstr "" "lagerhanteringssystemet för att möjliggöra spårning och utvärdering av " "produkter som finns tillgängliga från olika leverantörer." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Leverantören som levererar denna produkt lager" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Associerad leverantör" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Slutligt pris till kunden efter påslag" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Försäljningspris" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Produkten som är associerad med denna lagerpost" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Tillhörande produkt" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Det pris som betalats till säljaren för denna produkt" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Leverantörens inköpspris" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Tillgänglig kvantitet av produkten i lager" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Antal i lager" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU som tilldelats av leverantören för identifiering av produkten" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "Leverantörens SKU" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Digital fil associerad med detta lager om tillämpligt" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Digital fil" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Systemattribut" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Lagerposter" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1908,163 +1903,171 @@ msgstr "" "Representerar en produkt med attribut som kategori, varumärke, taggar, " "digital status, namn, beskrivning, artikelnummer och slug. Tillhandahåller " "relaterade verktygsegenskaper för att hämta betyg, feedbackräkning, pris, " -"kvantitet och totala beställningar. Utformad för användning i ett system som " -"hanterar e-handel eller lagerhantering. Klassen interagerar med relaterade " +"kvantitet och totala beställningar. Utformad för användning i ett system som" +" hanterar e-handel eller lagerhantering. Klassen interagerar med relaterade " "modeller (t.ex. Category, Brand och ProductTag) och hanterar cachelagring " "för egenskaper som används ofta för att förbättra prestandan. Den används " "för att definiera och manipulera produktdata och tillhörande information i " "en applikation." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Kategori som denna produkt tillhör" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Möjlighet att associera produkten med ett varumärke" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Taggar som hjälper till att beskriva eller gruppera denna produkt" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Anger om denna produkt levereras digitalt" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Är produkten digital" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "anger om denna produkt ska uppdateras från periodisk uppgift" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "är produkten uppdateringsbar" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Tillhandahålla ett tydligt identifierande namn för produkten" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Produktens namn" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Lägg till en detaljerad beskrivning av produkten" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Produktbeskrivning" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Artikelnummer för denna produkt" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Artikelnummer" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Lagerhållningsenhet för denna produkt" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"Representerar ett attribut i systemet. Denna klass används för att definiera " -"och hantera attribut, som är anpassningsbara bitar av data som kan " +"Representerar ett attribut i systemet. Denna klass används för att definiera" +" och hantera attribut, som är anpassningsbara bitar av data som kan " "associeras med andra enheter. Attribut har associerade kategorier, grupper, " "värdetyper och namn. Modellen stöder flera typer av värden, inklusive " -"sträng, heltal, flottör, boolean, array och objekt. Detta ger möjlighet till " -"dynamisk och flexibel datastrukturering." +"sträng, heltal, flottör, boolean, array och objekt. Detta ger möjlighet till" +" dynamisk och flexibel datastrukturering." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Grupp av detta attribut" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Sträng" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Heltal" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Flottör" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Boolean" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Array" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Objekt" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Typ av attributets värde" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Typ av värde" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Namn på detta attribut" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Attributets namn" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "är filtrerbar" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Vilka attribut och värden som kan användas för att filtrera denna kategori." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribut" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Representerar ett specifikt värde för ett attribut som är kopplat till en " "produkt. Det kopplar \"attributet\" till ett unikt \"värde\", vilket " "möjliggör bättre organisation och dynamisk representation av " "produktegenskaper." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Attribut för detta värde" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Den specifika produkt som är associerad med detta attributs värde" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Det specifika värdet för detta attribut" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2074,46 +2077,46 @@ msgstr "" "produkter och bestämma deras visningsordning. Den innehåller också en " "tillgänglighetsfunktion med alternativ text för bilderna." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Tillhandahåll alternativ text för bilden för tillgänglighet" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Alt-text för bild" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Ladda upp bildfilen för den här produkten" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Produktbild" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Bestämmer i vilken ordning bilderna ska visas" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Prioritet för visning" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Den produkt som denna bild representerar" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Produktbilder" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Representerar en kampanj för produkter med rabatt. Den här klassen används " "för att definiera och hantera kampanjer som erbjuder en procentbaserad " @@ -2122,39 +2125,39 @@ msgstr "" "tillämpliga produkterna. Den integreras med produktkatalogen för att " "fastställa vilka artiklar som påverkas av kampanjen." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Procentuell rabatt för de valda produkterna" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Rabattprocent" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Ange ett unikt namn för denna kampanj" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Kampanjens namn" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Beskrivning av kampanjen" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Välj vilka produkter som ingår i denna kampanj" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Inkluderade produkter" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Marknadsföring" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2162,129 +2165,129 @@ msgid "" "operations for adding and removing multiple products at once." msgstr "" "Representerar en användares önskelista för lagring och hantering av önskade " -"produkter. Klassen tillhandahåller funktionalitet för att hantera en samling " -"produkter, med stöd för operationer som att lägga till och ta bort " +"produkter. Klassen tillhandahåller funktionalitet för att hantera en samling" +" produkter, med stöd för operationer som att lägga till och ta bort " "produkter, samt stöd för operationer för att lägga till och ta bort flera " "produkter samtidigt." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Produkter som användaren har markerat som önskade" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Användare som äger denna önskelista" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Wishlist's ägare" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Önskelista" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Representerar en dokumentärpost som är knuten till en produkt. Denna klass " "används för att lagra information om dokumentärer som är relaterade till " "specifika produkter, inklusive filuppladdningar och deras metadata. Den " "innehåller metoder och egenskaper för att hantera filtyp och lagringssökväg " -"för dokumentärfilerna. Den utökar funktionaliteten från specifika mixins och " -"tillhandahåller ytterligare anpassade funktioner." +"för dokumentärfilerna. Den utökar funktionaliteten från specifika mixins och" +" tillhandahåller ytterligare anpassade funktioner." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Dokumentärfilm" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Dokumentärer" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Olöst" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Representerar en adressentitet som innehåller platsinformation och " "associationer med en användare. Tillhandahåller funktionalitet för lagring " -"av geografiska data och adressdata samt integration med geokodningstjänster. " -"Denna klass är utformad för att lagra detaljerad adressinformation inklusive " -"komponenter som gata, stad, region, land och geolokalisering (longitud och " -"latitud). Den stöder integration med API:er för geokodning, vilket möjliggör " -"lagring av råa API-svar för vidare bearbetning eller inspektion. Klassen gör " -"det också möjligt att associera en adress med en användare, vilket " -"underlättar personlig datahantering." +"av geografiska data och adressdata samt integration med geokodningstjänster." +" Denna klass är utformad för att lagra detaljerad adressinformation " +"inklusive komponenter som gata, stad, region, land och geolokalisering " +"(longitud och latitud). Den stöder integration med API:er för geokodning, " +"vilket möjliggör lagring av råa API-svar för vidare bearbetning eller " +"inspektion. Klassen gör det också möjligt att associera en adress med en " +"användare, vilket underlättar personlig datahantering." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Adressrad till kunden" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Adresslinje" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Gata" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Distrikt" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Stad" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Region" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Postnummer" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Land" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokaliseringspunkt (longitud, latitud)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Fullständigt JSON-svar från geokodaren för denna adress" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Lagrad JSON-svar från geokodningstjänsten" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Adress" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adresser" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2301,94 +2304,94 @@ msgstr "" "funktioner för att validera och tillämpa kampanjkoden på en order och " "samtidigt säkerställa att begränsningarna uppfylls." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Unik kod som används av en användare för att lösa in en rabatt" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Identifierare för kampanjkod" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Fast rabattbelopp tillämpas om procent inte används" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Fast diskonteringsbelopp" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentuell rabatt som tillämpas om fast belopp inte används" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Procentuell rabatt" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Tidsstämpel när kampanjkoden upphör att gälla" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Slutgiltig giltighetstid" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Tidsstämpel från vilken denna promokod är giltig" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Start giltighetstid" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Tidsstämpel när kampanjkoden användes, tom om den inte har använts ännu" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Tidsstämpel för användning" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Användare som tilldelats denna promokod om tillämpligt" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Tilldelad användare" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Kampanjkod" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Kampanjkoder" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Endast en typ av rabatt ska definieras (belopp eller procent), men inte båda " -"eller ingendera." +"Endast en typ av rabatt ska definieras (belopp eller procent), men inte båda" +" eller ingendera." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Promokoden har redan använts" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ogiltig rabattyp för promokod {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2400,137 +2403,137 @@ msgstr "" "faktureringsuppgifter kan uppdateras. På samma sätt stöder funktionaliteten " "hanteringen av produkterna i orderns livscykel." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Den faktureringsadress som används för denna order" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Valfri kampanjkod tillämpas på denna beställning" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Tillämpad kampanjkod" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Den leveransadress som används för denna order" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Leveransadress" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Aktuell status för ordern i dess livscykel" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Orderstatus" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "JSON-struktur för meddelanden som ska visas för användare, i admin UI " "används tabellvyn" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "JSON-representation av orderattribut för denna order" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "Användaren som gjorde beställningen" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Användare" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Tidsstämpel när ordern slutfördes" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Köp tid" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "En mänskligt läsbar identifierare för ordern" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "mänskligt läsbart ID" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Beställning" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "En användare får bara ha en väntande order åt gången!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Du kan inte lägga till produkter i en order som inte är en pågående order" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Du kan inte lägga till inaktiva produkter i ordern" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "Du kan inte lägga till fler produkter än vad som finns i lager" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Du kan inte ta bort produkter från en order som inte är en pågående order" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} finns inte med frågan <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Promokoden finns inte" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "Du kan bara köpa fysiska produkter med angiven leveransadress!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Adressen finns inte" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "Du kan inte köpa just nu, vänligen försök igen om några minuter." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Ogiltigt kraftvärde" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Du kan inte köpa en tom order!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "Du kan inte köpa en order utan en användare!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "En användare utan balans kan inte köpa med balans!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Otillräckliga medel för att slutföra ordern" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2538,14 +2541,14 @@ msgstr "" "du kan inte köpa utan registrering, vänligen ange följande information: " "kundens namn, kundens e-post, kundens telefonnummer" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Ogiltig betalningsmetod: {payment_method} från {available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2556,37 +2559,38 @@ msgstr "" "Hanterar feedback från användare för produkter. Den här klassen är utformad " "för att fånga upp och lagra feedback från användare om specifika produkter " "som de har köpt. Den innehåller attribut för att lagra användarkommentarer, " -"en referens till den relaterade produkten i ordern och ett användartilldelat " -"betyg. Klassen använder databasfält för att effektivt modellera och hantera " -"feedbackdata." +"en referens till den relaterade produkten i ordern och ett användartilldelat" +" betyg. Klassen använder databasfält för att effektivt modellera och hantera" +" feedbackdata." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "Kommentarer från användare om deras erfarenhet av produkten" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Återkoppling av kommentarer" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Refererar till den specifika produkten i en order som denna feedback handlar " -"om" +"Refererar till den specifika produkten i en order som denna feedback handlar" +" om" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Relaterad order produkt" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Användartilldelat betyg för produkten" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Produktbetyg" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2602,135 +2606,135 @@ msgstr "" "OrderProduct-modellen innehåller information om en produkt som ingår i en " "order, inklusive detaljer som inköpspris, kvantitet, produktattribut och " "status. Den hanterar meddelanden till användaren och administratörer och " -"hanterar åtgärder som att returnera produktsaldot eller lägga till feedback. " -"Modellen innehåller också metoder och egenskaper som stöder affärslogik, t." -"ex. beräkning av totalpriset eller generering av en URL för nedladdning av " -"digitala produkter. Modellen integreras med Order- och Product-modellerna " +"hanterar åtgärder som att returnera produktsaldot eller lägga till feedback." +" Modellen innehåller också metoder och egenskaper som stöder affärslogik, " +"t.ex. beräkning av totalpriset eller generering av en URL för nedladdning av" +" digitala produkter. Modellen integreras med Order- och Product-modellerna " "och lagrar en referens till dem." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "Det pris som kunden betalade för denna produkt vid inköpstillfället" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Inköpspris vid ordertillfället" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Interna kommentarer för administratörer om denna beställda produkt" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Interna kommentarer" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Meddelanden till användare" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "JSON-representation av detta objekts attribut" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Sorterade produktattribut" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Referens till den överordnade order som innehåller denna produkt" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Föräldraorder" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Den specifika produkt som är kopplad till denna orderrad" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Antal av denna specifika produkt i ordern" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Produktens kvantitet" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Aktuell status för denna produkt i ordern" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Status för produktlinje" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Orderprodukt måste ha en tillhörande order!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Fel åtgärd angiven för återkoppling: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "du kan inte återkoppla en order som inte mottagits" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Namn" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL för integrationen" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Autentiseringsuppgifter" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Du kan bara ha en CRM-leverantör som standard" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM-system" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Beställningens CRM-länk" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Beställningarnas CRM-länkar" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" -"Representerar nedladdningsfunktionen för digitala tillgångar som är kopplade " -"till order. Klassen DigitalAssetDownload ger möjlighet att hantera och komma " -"åt nedladdningar som är relaterade till orderprodukter. Den upprätthåller " -"information om den associerade orderprodukten, antalet nedladdningar och om " -"tillgången är offentligt synlig. Den innehåller en metod för att generera en " -"URL för nedladdning av tillgången när den associerade ordern har statusen " -"slutförd." +"Representerar nedladdningsfunktionen för digitala tillgångar som är kopplade" +" till order. Klassen DigitalAssetDownload ger möjlighet att hantera och " +"komma åt nedladdningar som är relaterade till orderprodukter. Den " +"upprätthåller information om den associerade orderprodukten, antalet " +"nedladdningar och om tillgången är offentligt synlig. Den innehåller en " +"metod för att generera en URL för nedladdning av tillgången när den " +"associerade ordern har statusen slutförd." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Nedladdningar" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Nedladdningar" @@ -2738,8 +2742,8 @@ msgstr "Nedladdningar" msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" -"du måste ge en kommentar, betyg och beställa produkt uuid för att lägga till " -"feedback." +"du måste ge en kommentar, betyg och beställa produkt uuid för att lägga till" +" feedback." #: engine/core/sitemaps.py:25 msgid "Home" @@ -2931,8 +2935,7 @@ msgstr "Hej %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Tack för din beställning #%(order.pk)s! Vi är glada att kunna informera dig " @@ -3047,8 +3050,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Tack för din beställning! Vi är glada att kunna bekräfta ditt köp. Nedan " @@ -3079,11 +3081,11 @@ msgstr "" "Alla rättigheter\n" " reserverade" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Både data och timeout krävs" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Ogiltigt timeout-värde, det måste vara mellan 0 och 216000 sekunder" @@ -3115,12 +3117,12 @@ msgstr "Du har inte behörighet att utföra den här åtgärden." msgid "NOMINATIM_URL must be configured." msgstr "Parametern NOMINATIM_URL måste konfigureras!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "Bildmåtten får inte överstiga w{max_width} x h{max_height} pixlar!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3128,7 +3130,7 @@ msgstr "" "Hanterar begäran om index för webbplatskartan och returnerar ett XML-svar. " "Den ser till att svaret innehåller rätt innehållstypshuvud för XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3138,16 +3140,16 @@ msgstr "" "bearbetar begäran, hämtar det lämpliga detaljerade svaret för " "webbplatskartan och ställer in Content-Type-huvudet för XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Returnerar en lista över språk som stöds och motsvarande information." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerar webbplatsens parametrar som ett JSON-objekt." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3155,11 +3157,11 @@ msgstr "" "Hanterar cacheoperationer som att läsa och ställa in cachedata med en " "angiven nyckel och timeout." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Hanterar formulärinlämningar för `kontakta oss`." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3167,66 +3169,58 @@ msgstr "" "Hanterar förfrågningar om bearbetning och validering av URL:er från " "inkommande POST-förfrågningar." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Hanterar globala sökfrågor." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Hanterar logiken i att köpa som ett företag utan registrering." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Hanterar nedladdning av en digital tillgång som är kopplad till en order.\n" -"Denna funktion försöker servera den digitala tillgångsfilen som finns i " -"lagringskatalogen för projektet. Om filen inte hittas visas ett HTTP 404-fel " -"som indikerar att resursen inte är tillgänglig." +"Denna funktion försöker servera den digitala tillgångsfilen som finns i lagringskatalogen för projektet. Om filen inte hittas visas ett HTTP 404-fel som indikerar att resursen inte är tillgänglig." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid är obligatoriskt" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "Beställ produkten finns inte" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Du kan bara ladda ner den digitala tillgången en gång" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "beställningen måste betalas innan den digitala tillgången laddas ner" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Beställningens produkt har ingen produkt" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon hittades inte" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Hanterar förfrågningar om favicon på en webbplats.\n" -"Denna funktion försöker servera favicon-filen som finns i den statiska " -"katalogen i projektet. Om favicon-filen inte hittas visas ett HTTP 404-fel " -"som anger att resursen inte är tillgänglig." +"Denna funktion försöker servera favicon-filen som finns i den statiska katalogen i projektet. Om favicon-filen inte hittas visas ett HTTP 404-fel som anger att resursen inte är tillgänglig." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Omdirigerar begäran till indexsidan för admin. Funktionen hanterar " @@ -3234,16 +3228,16 @@ msgstr "" "admin-gränssnitt. Den använder Djangos `redirect`-funktion för att hantera " "HTTP-omdirigeringen." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Returnerar aktuell version av eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Intäkter och order (senast %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Returnerar anpassade variabler för Dashboard." @@ -3256,23 +3250,24 @@ msgid "" "and rendering formats." msgstr "" "Definierar en vy för hantering av Evibes-relaterade operationer. Klassen " -"EvibesViewSet ärver från ModelViewSet och tillhandahåller funktionalitet för " -"att hantera åtgärder och operationer på Evibes-entiteter. Den innehåller " +"EvibesViewSet ärver från ModelViewSet och tillhandahåller funktionalitet för" +" att hantera åtgärder och operationer på Evibes-entiteter. Den innehåller " "stöd för dynamiska serializerklasser baserat på den aktuella åtgärden, " "anpassningsbara behörigheter och renderingsformat." #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Representerar en vy för hantering av AttributeGroup-objekt. Hanterar " -"åtgärder relaterade till AttributeGroup, inklusive filtrering, serialisering " -"och hämtning av data. Denna klass är en del av applikationens API-lager och " -"tillhandahåller ett standardiserat sätt att behandla förfrågningar och svar " -"för AttributeGroup-data." +"åtgärder relaterade till AttributeGroup, inklusive filtrering, serialisering" +" och hämtning av data. Denna klass är en del av applikationens API-lager och" +" tillhandahåller ett standardiserat sätt att behandla förfrågningar och svar" +" för AttributeGroup-data." #: engine/core/viewsets.py:179 msgid "" @@ -3295,8 +3290,8 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Ett viewset för hantering av AttributeValue-objekt. Denna viewset " "tillhandahåller funktionalitet för att lista, hämta, skapa, uppdatera och " @@ -3326,8 +3321,8 @@ msgid "" "endpoints for Brand objects." msgstr "" "Representerar en vy för hantering av varumärkesinstanser. Denna klass " -"tillhandahåller funktionalitet för att fråga, filtrera och serialisera Brand-" -"objekt. Den använder Djangos ViewSet-ramverk för att förenkla " +"tillhandahåller funktionalitet för att fråga, filtrera och serialisera " +"Brand-objekt. Den använder Djangos ViewSet-ramverk för att förenkla " "implementeringen av API-slutpunkter för varumärkesobjekt." #: engine/core/viewsets.py:458 @@ -3341,8 +3336,8 @@ msgid "" "product." msgstr "" "Hanterar operationer relaterade till modellen `Product` i systemet. Denna " -"klass tillhandahåller en vy för att hantera produkter, inklusive filtrering, " -"serialisering och operationer på specifika instanser. Den utökar från " +"klass tillhandahåller en vy för att hantera produkter, inklusive filtrering," +" serialisering och operationer på specifika instanser. Den utökar från " "`EvibesViewSet` för att använda gemensam funktionalitet och integreras med " "Django REST-ramverket för RESTful API-operationer. Innehåller metoder för " "att hämta produktinformation, tillämpa behörigheter och få tillgång till " @@ -3356,8 +3351,8 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Representerar en vy för hantering av Vendor-objekt. Denna vy gör det möjligt " -"att hämta, filtrera och serialisera Vendor-data. Den definierar queryset, " +"Representerar en vy för hantering av Vendor-objekt. Denna vy gör det möjligt" +" att hämta, filtrera och serialisera Vendor-data. Den definierar queryset, " "filterkonfigurationer och serializer-klasser som används för att hantera " "olika åtgärder. Syftet med denna klass är att ge strömlinjeformad åtkomst " "till Vendor-relaterade resurser genom Django REST-ramverket." @@ -3367,12 +3362,12 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" -"Representation av en vyuppsättning som hanterar Feedback-objekt. Denna klass " -"hanterar åtgärder relaterade till Feedback-objekt, inklusive listning, " +"Representation av en vyuppsättning som hanterar Feedback-objekt. Denna klass" +" hanterar åtgärder relaterade till Feedback-objekt, inklusive listning, " "filtrering och hämtning av detaljer. Syftet med denna vyuppsättning är att " "tillhandahålla olika serializers för olika åtgärder och implementera " "behörighetsbaserad hantering av tillgängliga Feedback-objekt. Den utökar " @@ -3384,15 +3379,15 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet för hantering av order och relaterade operationer. Den här klassen " "innehåller funktioner för att hämta, ändra och hantera orderobjekt. Den " -"innehåller olika slutpunkter för hantering av orderoperationer som att lägga " -"till eller ta bort produkter, utföra inköp för registrerade och " +"innehåller olika slutpunkter för hantering av orderoperationer som att lägga" +" till eller ta bort produkter, utföra inköp för registrerade och " "oregistrerade användare och hämta den aktuella autentiserade användarens " "pågående order. ViewSet använder flera serializers baserat på den specifika " "åtgärd som utförs och verkställer behörigheter i enlighet med detta vid " @@ -3402,8 +3397,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Tillhandahåller en vy för hantering av OrderProduct-enheter. Denna " @@ -3437,8 +3432,8 @@ msgstr "Hanterar åtgärder relaterade till lagerdata i systemet." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3481,5 +3476,5 @@ msgstr "" "Hanterar operationer relaterade till Product Tags inom applikationen. " "Klassen tillhandahåller funktionalitet för att hämta, filtrera och " "serialisera Product Tag-objekt. Den stöder flexibel filtrering på specifika " -"attribut med hjälp av det angivna filterbackend och använder dynamiskt olika " -"serializers baserat på den åtgärd som utförs." +"attribut med hjälp av det angivna filterbackend och använder dynamiskt olika" +" serializers baserat på den åtgärd som utförs." diff --git a/engine/core/locale/th_TH/LC_MESSAGES/django.mo b/engine/core/locale/th_TH/LC_MESSAGES/django.mo index 00ee5006fd7d8ecf6d8200865656d66597940523..b8f4227064a07b3fd1b03cc20a3be3e37cd39724 100644 GIT binary patch delta 14878 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 delta 14690 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,8 +27,11 @@ msgstr "กำลังใช้งานอยู่" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" -msgstr "หากตั้งค่าเป็น false, วัตถุนี้ไม่สามารถมองเห็นได้โดยผู้ใช้ที่ไม่มีสิทธิ์ที่ต้องการ" +"if set to false, this object can't be seen by users without needed " +"permission" +msgstr "" +"หากตั้งค่าเป็น false, " +"วัตถุนี้ไม่สามารถมองเห็นได้โดยผู้ใช้ที่ไม่มีสิทธิ์ที่ต้องการ" #: engine/core/abstract.py:26 engine/core/choices.py:18 msgid "created" @@ -70,65 +73,65 @@ msgstr "เมตาดาตา" msgid "timestamps" msgstr "เวลาที่บันทึก" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "เปิดใช้งานที่เลือกไว้ %(verbose_name_plural)s" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "รายการที่เลือกไว้ได้รับการเปิดใช้งานแล้ว!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "ยกเลิกการใช้งานที่เลือกไว้ %(verbose_name_plural)s" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "รายการที่เลือกถูกยกเลิกการใช้งานแล้ว!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "ค่าคุณสมบัติ" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "ค่าของแอตทริบิวต์" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "ภาพ" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "รูปภาพ" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "สต็อก" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "หุ้น" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "สั่งซื้อสินค้า" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "สั่งซื้อสินค้า" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "เด็ก" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "การกำหนดค่า" @@ -152,7 +155,8 @@ msgstr "ส่งมอบแล้ว" msgid "canceled" msgstr "ยกเลิก" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "ล้มเหลว" @@ -193,54 +197,55 @@ msgstr "" "OpenApi3 schema สำหรับ API นี้. รูปแบบสามารถเลือกได้ผ่านการเจรจาเนื้อหา. " "ภาษาสามารถเลือกได้ทั้งผ่าน Accept-Language และพารามิเตอร์ค้นหา." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "แคช I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -"ใช้เฉพาะคีย์เพื่ออ่านข้อมูลที่ได้รับอนุญาตจากแคช ใช้คีย์ ข้อมูล และระยะเวลาหมดอายุ " -"พร้อมการยืนยันตัวตนเพื่อเขียนข้อมูลลงในแคช" +"ใช้เฉพาะคีย์เพื่ออ่านข้อมูลที่ได้รับอนุญาตจากแคช ใช้คีย์ ข้อมูล " +"และระยะเวลาหมดอายุ พร้อมการยืนยันตัวตนเพื่อเขียนข้อมูลลงในแคช" -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "รับรายการภาษาที่รองรับ" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "รับพารามิเตอร์ที่สามารถเปิดเผยได้ของแอปพลิเคชัน" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "ส่งข้อความถึงทีมสนับสนุน" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "ขอ URL ที่รองรับ CORS เท่านั้น อนุญาตเฉพาะ https" -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "ค้นหาสินค้า หมวดหมู่ และแบรนด์" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "จุดสิ้นสุดการค้นหาทั่วโลกเพื่อค้นหาข้ามตารางของโครงการ" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "ซื้อสินค้าเป็นธุรกิจ" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"ซื้อสินค้าในฐานะธุรกิจ โดยใช้ `products` ที่ให้มาพร้อมกับ `product_uuid` และ `attributes`" +"ซื้อสินค้าในฐานะธุรกิจ โดยใช้ `products` ที่ให้มาพร้อมกับ `product_uuid` และ" +" `attributes`" -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "ดาวน์โหลดสินทรัพย์ดิจิทัลจากคำสั่งซื้อดิจิทัลที่ซื้อแล้ว" @@ -262,11 +267,15 @@ msgstr "ลบกลุ่มแอตทริบิวต์" #: engine/core/docs/drf/viewsets.py:99 msgid "rewrite an existing attribute group saving non-editables" -msgstr "เขียนกลุ่มคุณลักษณะที่มีอยู่ใหม่โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนกลุ่มคุณลักษณะที่มีอยู่ใหม่โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของกลุ่มแอตทริบิวต์ที่มีอยู่ใหม่ โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" +msgstr "" +"เขียนฟิลด์บางส่วนของกลุ่มแอตทริบิวต์ที่มีอยู่ใหม่ " +"โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" #: engine/core/docs/drf/viewsets.py:118 msgid "list all attributes (simple view)" @@ -290,7 +299,9 @@ msgstr "เขียนแอตทริบิวต์ที่มีอยู #: engine/core/docs/drf/viewsets.py:156 msgid "rewrite some fields of an existing attribute saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของแอตทริบิวต์ที่มีอยู่ใหม่ โดยบันทึกเฉพาะข้อมูลที่ไม่มีการแก้ไข" +msgstr "" +"เขียนฟิลด์บางส่วนของแอตทริบิวต์ที่มีอยู่ใหม่ " +"โดยบันทึกเฉพาะข้อมูลที่ไม่มีการแก้ไข" #: engine/core/docs/drf/viewsets.py:166 msgid "list all attribute values (simple view)" @@ -313,8 +324,11 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "เขียนค่าแอตทริบิวต์ที่มีอยู่ใหม่โดยเก็บค่าที่ไม่สามารถแก้ไขได้" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของค่าแอตทริบิวต์ที่มีอยู่ใหม่ โดยเก็บค่าที่ไม่สามารถแก้ไขได้ไว้" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" +msgstr "" +"เขียนฟิลด์บางส่วนของค่าแอตทริบิวต์ที่มีอยู่ใหม่ " +"โดยเก็บค่าที่ไม่สามารถแก้ไขได้ไว้" #: engine/core/docs/drf/viewsets.py:219 engine/core/docs/drf/viewsets.py:220 msgid "list all categories (simple view)" @@ -342,13 +356,15 @@ msgstr "เขียนหมวดหมู่ที่มีอยู่ให #: engine/core/docs/drf/viewsets.py:270 engine/core/docs/drf/viewsets.py:272 msgid "rewrite some fields of an existing category saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของหมวดหมู่ที่มีอยู่แล้วใหม่ โดยบันทึกเฉพาะข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนฟิลด์บางส่วนของหมวดหมู่ที่มีอยู่แล้วใหม่ " +"โดยบันทึกเฉพาะข้อมูลที่ไม่สามารถแก้ไขได้" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" @@ -366,11 +382,11 @@ msgstr "สำหรับผู้ใช้ที่ไม่ใช่พนั #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"การค้นหาส่วนย่อยโดยไม่คำนึงถึงตัวพิมพ์เล็กหรือใหญ่ใน human_readable_id, order_products." -"product.name และ order_products.product.partnumber" +"การค้นหาส่วนย่อยโดยไม่คำนึงถึงตัวพิมพ์เล็กหรือใหญ่ใน human_readable_id, " +"order_products.product.name และ order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -390,7 +406,8 @@ msgstr "กรองตามหมายเลขคำสั่งซื้อ #: engine/core/docs/drf/viewsets.py:336 msgid "Filter by user's email (case-insensitive exact match)" -msgstr "กรองตามอีเมลของผู้ใช้ (ตรงตามตัวอักษรโดยไม่คำนึงถึงตัวพิมพ์ใหญ่หรือเล็ก)" +msgstr "" +"กรองตามอีเมลของผู้ใช้ (ตรงตามตัวอักษรโดยไม่คำนึงถึงตัวพิมพ์ใหญ่หรือเล็ก)" #: engine/core/docs/drf/viewsets.py:341 msgid "Filter by user's UUID" @@ -398,17 +415,18 @@ msgstr "กรองตาม UUID ของผู้ใช้" #: engine/core/docs/drf/viewsets.py:347 msgid "Filter by order status (case-insensitive substring match)" -msgstr "กรองตามสถานะคำสั่งซื้อ (การจับคู่สตริงย่อยโดยไม่คำนึงตัวพิมพ์ใหญ่/เล็ก)" +msgstr "" +"กรองตามสถานะคำสั่งซื้อ (การจับคู่สตริงย่อยโดยไม่คำนึงตัวพิมพ์ใหญ่/เล็ก)" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "เรียงลำดับโดยหนึ่งใน: uuid, human_readable_id, user_email, user, status, " -"created, modified, buy_time, random. นำหน้าด้วย '-' สำหรับเรียงลำดับจากมากไปน้อย " -"(เช่น '-buy_time')." +"created, modified, buy_time, random. นำหน้าด้วย '-' " +"สำหรับเรียงลำดับจากมากไปน้อย (เช่น '-buy_time')." #: engine/core/docs/drf/viewsets.py:366 msgid "retrieve a single order (detailed view)" @@ -436,7 +454,9 @@ msgstr "เขียนหมวดหมู่ที่มีอยู่ให #: engine/core/docs/drf/viewsets.py:403 msgid "rewrite some fields of an existing order saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของหมวดหมู่ที่มีอยู่แล้วใหม่ โดยบันทึกเฉพาะข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนฟิลด์บางส่วนของหมวดหมู่ที่มีอยู่แล้วใหม่ " +"โดยบันทึกเฉพาะข้อมูลที่ไม่สามารถแก้ไขได้" #: engine/core/docs/drf/viewsets.py:410 msgid "purchase an order" @@ -449,8 +469,8 @@ msgid "" "transaction is initiated." msgstr "" "สรุปการสั่งซื้อสินค้า หากใช้ `force_balance` " -"การสั่งซื้อจะเสร็จสมบูรณ์โดยใช้ยอดเงินคงเหลือของผู้ใช้ หากใช้ `force_payment` " -"จะเริ่มการทำธุรกรรม" +"การสั่งซื้อจะเสร็จสมบูรณ์โดยใช้ยอดเงินคงเหลือของผู้ใช้ หากใช้ " +"`force_payment` จะเริ่มการทำธุรกรรม" #: engine/core/docs/drf/viewsets.py:427 msgid "retrieve current pending order of a user" @@ -460,7 +480,7 @@ msgstr "ดึงคำสั่งซื้อที่รอดำเนิน msgid "retrieves a current pending order of an authenticated user" msgstr "ดึงคำสั่งซื้อที่รอดำเนินการในปัจจุบันของผู้ใช้ที่ผ่านการยืนยันแล้ว" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "ซื้อสินค้าโดยไม่ต้องสร้างบัญชี" @@ -476,7 +496,8 @@ msgstr "เพิ่มสินค้าในคำสั่งซื้อ" msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." -msgstr "เพิ่มสินค้าไปยังคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" +msgstr "" +"เพิ่มสินค้าไปยังคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" #: engine/core/docs/drf/viewsets.py:461 msgid "add a list of products to order, quantities will not count" @@ -486,7 +507,9 @@ msgstr "เพิ่มรายการสินค้าที่ต้อง msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -msgstr "เพิ่มรายการสินค้าไปยังคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" +msgstr "" +"เพิ่มรายการสินค้าไปยังคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` " +"ที่ให้มา" #: engine/core/docs/drf/viewsets.py:472 msgid "remove product from order" @@ -496,7 +519,8 @@ msgstr "ลบสินค้าออกจากคำสั่งซื้อ msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "ลบผลิตภัณฑ์ออกจากคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" +msgstr "" +"ลบผลิตภัณฑ์ออกจากคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" #: engine/core/docs/drf/viewsets.py:483 msgid "remove product from order, quantities will not count" @@ -506,7 +530,9 @@ msgstr "นำสินค้าออกจากคำสั่งซื้อ msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" -msgstr "ลบรายการสินค้าออกจากคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" +msgstr "" +"ลบรายการสินค้าออกจากคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` " +"ที่ให้มา" #: engine/core/docs/drf/viewsets.py:497 msgid "list all wishlists (simple view)" @@ -514,7 +540,9 @@ msgstr "แสดงรายการคุณลักษณะทั้งห #: engine/core/docs/drf/viewsets.py:498 msgid "for non-staff users, only their own wishlists are returned." -msgstr "สำหรับผู้ใช้ที่ไม่ใช่บุคลากร จะแสดงเฉพาะรายการที่อยู่ในรายการสิ่งที่ต้องการของตนเองเท่านั้น" +msgstr "" +"สำหรับผู้ใช้ที่ไม่ใช่บุคลากร " +"จะแสดงเฉพาะรายการที่อยู่ในรายการสิ่งที่ต้องการของตนเองเท่านั้น" #: engine/core/docs/drf/viewsets.py:508 msgid "retrieve a single wishlist (detailed view)" @@ -538,7 +566,9 @@ msgstr "เขียนแอตทริบิวต์ที่มีอยู #: engine/core/docs/drf/viewsets.py:537 msgid "rewrite some fields of an existing wishlist saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของแอตทริบิวต์ที่มีอยู่ใหม่ โดยบันทึกเฉพาะข้อมูลที่ไม่มีการแก้ไข" +msgstr "" +"เขียนฟิลด์บางส่วนของแอตทริบิวต์ที่มีอยู่ใหม่ " +"โดยบันทึกเฉพาะข้อมูลที่ไม่มีการแก้ไข" #: engine/core/docs/drf/viewsets.py:544 msgid "retrieve current pending wishlist of a user" @@ -546,7 +576,8 @@ msgstr "ดึงรายการสินค้าที่ผู้ใช้ #: engine/core/docs/drf/viewsets.py:545 msgid "retrieves a current pending wishlist of an authenticated user" -msgstr "ดึงรายการความปรารถนาที่รอดำเนินการในปัจจุบันของผู้ใช้ที่ผ่านการยืนยันแล้ว" +msgstr "" +"ดึงรายการความปรารถนาที่รอดำเนินการในปัจจุบันของผู้ใช้ที่ผ่านการยืนยันแล้ว" #: engine/core/docs/drf/viewsets.py:555 msgid "add product to wishlist" @@ -570,7 +601,9 @@ msgstr "เพิ่มสินค้าหลายรายการลงใ #: engine/core/docs/drf/viewsets.py:579 msgid "adds many products to an wishlist using the provided `product_uuids`" -msgstr "เพิ่มสินค้าหลายรายการลงในรายการสินค้าที่ต้องการโดยใช้ `product_uuids` ที่ให้มา" +msgstr "" +"เพิ่มสินค้าหลายรายการลงในรายการสินค้าที่ต้องการโดยใช้ `product_uuids` " +"ที่ให้มา" #: engine/core/docs/drf/viewsets.py:588 msgid "remove many products from wishlist" @@ -579,34 +612,22 @@ msgstr "ลบสินค้าออกจากคำสั่งซื้อ #: engine/core/docs/drf/viewsets.py:590 msgid "" "removes many products from an wishlist using the provided `product_uuids`" -msgstr "ลบผลิตภัณฑ์หลายรายการออกจากรายการที่ต้องการโดยใช้ `product_uuids` ที่ให้มา" +msgstr "" +"ลบผลิตภัณฑ์หลายรายการออกจากรายการที่ต้องการโดยใช้ `product_uuids` ที่ให้มา" #: engine/core/docs/drf/viewsets.py:598 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -"กรองตามชื่อ/ค่าของแอตทริบิวต์หนึ่งรายการหรือมากกว่า • **ไวยากรณ์**: `attr_name=method-" -"value[;attr2=method2-value2]…` •**วิธีการ** (ค่าเริ่มต้นคือ `icontains` " -"หากไม่ได้ระบุ): `iexact`, `exact`, `icontains`, `contains`, `isnull`, " -"`startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, " -"`lt`, `lte`, `gt`, `gte`, `in` •**การกำหนดประเภทข้อมูล**: JSON " -"จะถูกพยายามแปลงก่อน (ดังนั้นคุณสามารถส่งรายการ/ดิคชันนารีได้), `true`/`false` สำหรับบูลีน, " -"จำนวนเต็ม, จำนวนทศนิยม; มิฉะนั้นจะถือว่าเป็นสตริง. • **Base64**: นำหน้าด้วย `b64-` " -"เพื่อเข้ารหัส base64 ที่ปลอดภัยสำหรับ URL ของค่าดิบ. \n" -"ตัวอย่าง: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" +"กรองตามชื่อ/ค่าของแอตทริบิวต์หนึ่งรายการหรือมากกว่า • **ไวยากรณ์**: `attr_name=method-value[;attr2=method2-value2]…` •**วิธีการ** (ค่าเริ่มต้นคือ `icontains` หากไม่ได้ระบุ): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` •**การกำหนดประเภทข้อมูล**: JSON จะถูกพยายามแปลงก่อน (ดังนั้นคุณสามารถส่งรายการ/ดิคชันนารีได้), `true`/`false` สำหรับบูลีน, จำนวนเต็ม, จำนวนทศนิยม; มิฉะนั้นจะถือว่าเป็นสตริง. • **Base64**: นำหน้าด้วย `b64-` เพื่อเข้ารหัส base64 ที่ปลอดภัยสำหรับ URL ของค่าดิบ. \n" +"ตัวอย่าง: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" #: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "list all products (simple view)" @@ -618,13 +639,12 @@ msgstr "(exact) รหัส UUID ของผลิตภัณฑ์" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อเรียงลำดับ โดยให้ขึ้นต้นด้วย `-` " -"สำหรับการเรียงลำดับจากน้อยไปมาก **ที่อนุญาต:** uuid, rating, name, slug, created, " -"modified, price, random" +"รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อเรียงลำดับ โดยให้ขึ้นต้นด้วย `-`" +" สำหรับการเรียงลำดับจากน้อยไปมาก **ที่อนุญาต:** uuid, rating, name, slug, " +"created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "retrieve a single product (detailed view)" @@ -637,9 +657,6 @@ msgid "Product UUID or slug" msgstr "รหัส UUID ของผลิตภัณฑ์ หรือชื่อเรียก" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "สร้างผลิตภัณฑ์" @@ -650,7 +667,8 @@ msgstr "เขียนใหม่ผลิตภัณฑ์ที่มีอ #: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:700 msgid "" "update some fields of an existing product, preserving non-editable fields" -msgstr "อัปเดตบางฟิลด์ของสินค้าที่มีอยู่แล้ว โดยคงฟิลด์ที่ไม่สามารถแก้ไขได้ไว้" +msgstr "" +"อัปเดตบางฟิลด์ของสินค้าที่มีอยู่แล้ว โดยคงฟิลด์ที่ไม่สามารถแก้ไขได้ไว้" #: engine/core/docs/drf/viewsets.py:719 engine/core/docs/drf/viewsets.py:720 msgid "delete a product" @@ -722,7 +740,9 @@ msgstr "เขียนใหม่ข้อเสนอแนะที่มี #: engine/core/docs/drf/viewsets.py:909 msgid "rewrite some fields of an existing feedback saving non-editables" -msgstr "เขียนข้อมูลบางส่วนของฟิลด์ในข้อเสนอแนะที่มีอยู่ใหม่ โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนข้อมูลบางส่วนของฟิลด์ในข้อเสนอแนะที่มีอยู่ใหม่ " +"โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" #: engine/core/docs/drf/viewsets.py:919 msgid "list all order–product relations (simple view)" @@ -730,7 +750,9 @@ msgstr "แสดงความสัมพันธ์ระหว่างค #: engine/core/docs/drf/viewsets.py:929 msgid "retrieve a single order–product relation (detailed view)" -msgstr "ดึงความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์เพียงรายการเดียว (มุมมองรายละเอียด)" +msgstr "" +"ดึงความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์เพียงรายการเดียว " +"(มุมมองรายละเอียด)" #: engine/core/docs/drf/viewsets.py:939 msgid "create a new order–product relation" @@ -750,7 +772,8 @@ msgstr "ลบความสัมพันธ์ระหว่างคำส #: engine/core/docs/drf/viewsets.py:979 msgid "add or remove feedback on an order–product relation" -msgstr "เพิ่มหรือลบความคิดเห็นเกี่ยวกับความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์" +msgstr "" +"เพิ่มหรือลบความคิดเห็นเกี่ยวกับความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์" #: engine/core/docs/drf/viewsets.py:996 msgid "list all brands (simple view)" @@ -778,7 +801,9 @@ msgstr "เขียนใหม่แบรนด์ที่มีอยู่ #: engine/core/docs/drf/viewsets.py:1039 msgid "rewrite some fields of an existing brand saving non-editables" -msgstr "เขียนข้อมูลในบางช่องของแบรนด์ที่มีอยู่ใหม่ โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนข้อมูลในบางช่องของแบรนด์ที่มีอยู่ใหม่ " +"โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" #: engine/core/docs/drf/viewsets.py:1064 msgid "list all vendors (simple view)" @@ -802,7 +827,9 @@ msgstr "เขียนใหม่ผู้ขายที่มีอยู่ #: engine/core/docs/drf/viewsets.py:1102 msgid "rewrite some fields of an existing vendor saving non-editables" -msgstr "เขียนข้อมูลในบางช่องของซัพพลายเออร์ที่มีอยู่แล้วใหม่ โดยเก็บค่าที่ไม่สามารถแก้ไขได้ไว้" +msgstr "" +"เขียนข้อมูลในบางช่องของซัพพลายเออร์ที่มีอยู่แล้วใหม่ " +"โดยเก็บค่าที่ไม่สามารถแก้ไขได้ไว้" #: engine/core/docs/drf/viewsets.py:1112 msgid "list all product images (simple view)" @@ -826,7 +853,9 @@ msgstr "เขียนภาพสินค้าที่มีอยู่ใ #: engine/core/docs/drf/viewsets.py:1154 msgid "rewrite some fields of an existing product image saving non-editables" -msgstr "เขียนข้อมูลบางส่วนของภาพสินค้าที่มีอยู่ใหม่ โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนข้อมูลบางส่วนของภาพสินค้าที่มีอยู่ใหม่ " +"โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" #: engine/core/docs/drf/viewsets.py:1165 msgid "list all promo codes (simple view)" @@ -850,7 +879,9 @@ msgstr "เขียนโค้ดโปรโมชั่นใหม่โด #: engine/core/docs/drf/viewsets.py:1203 msgid "rewrite some fields of an existing promo code saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของรหัสโปรโมชั่นที่มีอยู่ใหม่ โดยคงค่าที่ไม่สามารถแก้ไขได้ไว้" +msgstr "" +"เขียนฟิลด์บางส่วนของรหัสโปรโมชั่นที่มีอยู่ใหม่ " +"โดยคงค่าที่ไม่สามารถแก้ไขได้ไว้" #: engine/core/docs/drf/viewsets.py:1213 msgid "list all promotions (simple view)" @@ -874,7 +905,9 @@ msgstr "เขียนโปรโมชั่นใหม่โดยคงส #: engine/core/docs/drf/viewsets.py:1251 msgid "rewrite some fields of an existing promotion saving non-editables" -msgstr "เขียนข้อมูลบางส่วนของโปรโมชั่นที่มีอยู่ใหม่ โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนข้อมูลบางส่วนของโปรโมชั่นที่มีอยู่ใหม่ " +"โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" #: engine/core/docs/drf/viewsets.py:1261 msgid "list all stocks (simple view)" @@ -898,7 +931,9 @@ msgstr "เขียนบันทึกสต็อกที่มีอยู #: engine/core/docs/drf/viewsets.py:1297 msgid "rewrite some fields of an existing stock record saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของบันทึกสต็อกที่มีอยู่ใหม่ โดยบันทึกข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนฟิลด์บางส่วนของบันทึกสต็อกที่มีอยู่ใหม่ " +"โดยบันทึกข้อมูลที่ไม่สามารถแก้ไขได้" #: engine/core/docs/drf/viewsets.py:1308 msgid "list all product tags (simple view)" @@ -922,10 +957,12 @@ msgstr "เขียนแท็กสินค้าที่มีอยู่ #: engine/core/docs/drf/viewsets.py:1350 msgid "rewrite some fields of an existing product tag saving non-editables" -msgstr "เขียนข้อมูลบางส่วนของแท็กสินค้าที่มีอยู่แล้วใหม่ โดยบันทึกข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนข้อมูลบางส่วนของแท็กสินค้าที่มีอยู่แล้วใหม่ " +"โดยบันทึกข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "ไม่พบคำค้นหา" @@ -934,8 +971,8 @@ msgstr "ไม่พบคำค้นหา" msgid "Search" msgstr "ค้นหา" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "ยูไอไอดี" @@ -981,8 +1018,8 @@ msgid "Quantity" msgstr "ปริมาณ" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "ทาก" @@ -998,7 +1035,7 @@ msgstr "รวมหมวดหมู่ย่อย" msgid "Include personal ordered" msgstr "รวมสินค้าสั่งทำส่วนตัว" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1019,12 +1056,12 @@ msgid "Bought before (inclusive)" msgstr "ซื้อมาก่อน (รวมแล้ว)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "อีเมลผู้ใช้" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "รหัสผู้ใช้ UUID" @@ -1048,248 +1085,251 @@ msgstr "หมวดหมู่ทั้งหมด (มีอย่างน msgid "Level" msgstr "ระดับ" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "รหัส UUID ของผลิตภัณฑ์" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "กุญแจที่ต้องค้นหาหรือติดตั้งไว้ในแคช" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "ข้อมูลที่จะเก็บไว้ในแคช" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "เวลาหมดในวินาทีเพื่อตั้งค่าข้อมูลสำหรับเก็บในแคช" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "ข้อมูลที่เก็บไว้ในแคช" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "ข้อมูล JSON ที่ผ่านการคาราเมลไลซ์จาก URL ที่ร้องขอ" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "อนุญาตเฉพาะ URL ที่ขึ้นต้นด้วย http(s):// เท่านั้น" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "เพิ่มสินค้าในคำสั่งซื้อ" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "ไม่พบคำสั่งซื้อ {order_uuid}!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "ลบสินค้าออกจากคำสั่งซื้อ" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "นำสินค้าทั้งหมดออกจากคำสั่งซื้อ" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "ซื้อคำสั่ง" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" -msgstr "กรุณาให้ order_uuid หรือ order_hr_id - ต้องเลือกอย่างใดอย่างหนึ่งเท่านั้น!" +msgstr "" +"กรุณาให้ order_uuid หรือ order_hr_id - ต้องเลือกอย่างใดอย่างหนึ่งเท่านั้น!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "ประเภทไม่ถูกต้องมาจากเมธอด order.buy(): {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "ดำเนินการกับรายการสินค้าในลำดับ" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "ลบ/เพิ่ม" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "การกระทำต้องเป็น \"เพิ่ม\" หรือ \"ลบ\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "ดำเนินการกับรายการสินค้าในรายการสินค้าที่ต้องการ" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "กรุณาให้ค่า `wishlist_uuid`" -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "รายการที่อยากได้ {wishlist_uuid} ไม่พบ!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "เพิ่มสินค้าในคำสั่งซื้อ" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "ลบสินค้าออกจากคำสั่งซื้อ" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "ลบสินค้าออกจากคำสั่งซื้อ" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "ลบสินค้าออกจากคำสั่งซื้อ" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "ซื้อคำสั่ง" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" -msgstr "กรุณาส่งแอตทริบิวต์ในรูปแบบสตริงที่จัดรูปแบบดังนี้ attr1=value1,attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" +msgstr "" +"กรุณาส่งแอตทริบิวต์ในรูปแบบสตริงที่จัดรูปแบบดังนี้ attr1=value1,attr2=value2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "เพิ่มหรือลบความคิดเห็นสำหรับสินค้าที่สั่งซื้อ" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "การกระทำต้องเป็น `add` หรือ `remove` เท่านั้น!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "ไม่พบคำสั่งซื้อสินค้า {order_product_uuid}!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "สตริงที่อยู่ต้นฉบับที่ผู้ใช้ให้มา" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} ไม่พบ: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "ต้องอยู่ระหว่าง 1 ถึง 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - ทำงานได้อย่างยอดเยี่ยม" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "คุณลักษณะ" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "กลุ่มคุณสมบัติ" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "กลุ่มของลักษณะ" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "หมวดหมู่" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "แบรนด์" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "หมวดหมู่" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "เปอร์เซ็นต์มาร์กอัป" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "คุณลักษณะและคุณค่าใดที่สามารถใช้สำหรับกรองหมวดหมู่นี้ได้" -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "ราคาต่ำสุดและราคาสูงสุดสำหรับสินค้าในหมวดนี้ (หากมี)" -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "แท็กสำหรับหมวดหมู่นี้" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "สินค้าในหมวดหมู่" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "ผู้ขาย" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "ละติจูด (พิกัด Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "ลองจิจูด (พิกัด X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "อย่างไร" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "ให้คะแนนตั้งแต่ 1 ถึง 10 รวมทั้งสองค่า หรือ 0 หากไม่ได้กำหนด" -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "แสดงความคิดเห็นจากผู้ใช้" -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "การแจ้งเตือน" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "ดาวน์โหลด url สำหรับคำสั่งซื้อสินค้านี้ หากมี" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "ข้อเสนอแนะ" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "รายการสินค้าที่สั่งซื้อในคำสั่งซื้อนี้" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "ที่อยู่สำหรับออกใบแจ้งหนี้" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1297,53 +1337,53 @@ msgstr "" "ที่อยู่สำหรับจัดส่งสำหรับคำสั่งซื้อนี้, " "ปล่อยว่างไว้หากเป็นที่อยู่เดียวกับที่อยู่สำหรับเรียกเก็บเงินหรือหากไม่เกี่ยวข้อง" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "ราคาทั้งหมดของคำสั่งซื้อนี้" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "จำนวนรวมของผลิตภัณฑ์ในคำสั่งซื้อ" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "สินค้าทั้งหมดในคำสั่งซื้อนี้เป็นสินค้าดิจิทัลหรือไม่" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "รายการธุรกรรมสำหรับคำสั่งนี้" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "คำสั่ง" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "URL ของรูปภาพ" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "รูปภาพของสินค้า" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "หมวดหมู่" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "ข้อเสนอแนะ" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "แบรนด์" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "กลุ่มคุณลักษณะ" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1351,7 +1391,7 @@ msgstr "กลุ่มคุณลักษณะ" msgid "price" msgstr "ราคา" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1359,39 +1399,39 @@ msgstr "ราคา" msgid "quantity" msgstr "ปริมาณ" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "จำนวนความคิดเห็น" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "สินค้าที่มีจำหน่ายเฉพาะการสั่งซื้อส่วนบุคคลเท่านั้น" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "ราคาลดพิเศษ" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "ผลิตภัณฑ์" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "รหัสส่งเสริมการขาย" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "สินค้าลดราคา" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "โปรโมชั่น" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "ผู้ขาย" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1399,98 +1439,98 @@ msgstr "ผู้ขาย" msgid "product" msgstr "สินค้า" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "สินค้าที่อยู่ในรายการต้องการ" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "รายการสิ่งที่ต้องการ" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "สินค้าที่ติดแท็ก" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "แท็กสินค้า" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "หมวดหมู่ที่ถูกติดแท็ก" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "หมวดหมู่' แท็ก" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "ชื่อโครงการ" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "ชื่อบริษัท" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "ที่อยู่บริษัท" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "หมายเลขโทรศัพท์บริษัท" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "'อีเมลจาก', บางครั้งจำเป็นต้องใช้แทนค่าผู้ใช้โฮสต์" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "ผู้ใช้โฮสต์อีเมล" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "จำนวนเงินสูงสุดสำหรับการชำระเงิน" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "จำนวนเงินขั้นต่ำสำหรับการชำระเงิน" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "ข้อมูลการวิเคราะห์" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "ข้อมูลโฆษณา" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "การกำหนดค่า" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "รหัสภาษา" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "ชื่อภาษา" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "ธงภาษา, หากมีอยู่ :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "รับรายการภาษาที่รองรับ" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "ผลการค้นหาสินค้า" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "ผลการค้นหาสินค้า" @@ -1501,27 +1541,28 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"แทนกลุ่มของแอตทริบิวต์ ซึ่งสามารถมีลำดับชั้นได้ คลาสนี้ใช้เพื่อจัดการและจัดระเบียบกลุ่มแอตทริบิวต์ " +"แทนกลุ่มของแอตทริบิวต์ ซึ่งสามารถมีลำดับชั้นได้ " +"คลาสนี้ใช้เพื่อจัดการและจัดระเบียบกลุ่มแอตทริบิวต์ " "กลุ่มแอตทริบิวต์สามารถมีกลุ่มแม่ได้ ทำให้เกิดโครงสร้างลำดับชั้น " "ซึ่งสามารถมีประโยชน์ในการจัดหมวดหมู่และจัดการแอตทริบิวต์ได้อย่างมีประสิทธิภาพมากขึ้นในระบบที่ซับซ้อน" -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "ผู้ปกครองของกลุ่มนี้" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "กลุ่มแอตทริบิวต์ของพ่อแม่" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "ชื่อกลุ่มคุณสมบัติ" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "กลุ่มคุณลักษณะ" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1531,54 +1572,55 @@ msgid "" "also maintains additional metadata and constraints, making it suitable for " "use in systems that interact with third-party vendors." msgstr "" -"แทนหน่วยงานผู้ขายที่สามารถจัดเก็บข้อมูลเกี่ยวกับผู้ขายภายนอกและข้อกำหนดในการโต้ตอบของพวกเขาได้ " -"คลาสผู้ขายถูกใช้เพื่อกำหนดและจัดการข้อมูลที่เกี่ยวข้องกับผู้ขายภายนอก มันจัดเก็บชื่อผู้ขาย " -"รายละเอียดการตรวจสอบสิทธิ์ที่จำเป็นสำหรับการสื่อสาร " +"แทนหน่วยงานผู้ขายที่สามารถจัดเก็บข้อมูลเกี่ยวกับผู้ขายภายนอกและข้อกำหนดในการโต้ตอบของพวกเขาได้" +" คลาสผู้ขายถูกใช้เพื่อกำหนดและจัดการข้อมูลที่เกี่ยวข้องกับผู้ขายภายนอก " +"มันจัดเก็บชื่อผู้ขาย รายละเอียดการตรวจสอบสิทธิ์ที่จำเป็นสำหรับการสื่อสาร " "และเปอร์เซ็นต์การเพิ่มราคาที่นำไปใช้กับสินค้าที่นำมาจากผู้ขาย " "โมเดลนี้ยังรักษาข้อมูลเมตาเพิ่มเติมและข้อจำกัด " "ทำให้เหมาะสำหรับการใช้งานในระบบที่มีการโต้ตอบกับผู้ขายภายนอก" -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" -msgstr "เก็บรักษาข้อมูลประจำตัวและจุดสิ้นสุดที่จำเป็นสำหรับการสื่อสาร API ของผู้ขาย" +msgstr "" +"เก็บรักษาข้อมูลประจำตัวและจุดสิ้นสุดที่จำเป็นสำหรับการสื่อสาร API ของผู้ขาย" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "ข้อมูลการยืนยันตัวตน" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "กำหนดมาร์กอัปสำหรับสินค้าที่ดึงมาจากผู้ขายรายนี้" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "เปอร์เซ็นต์การบวกกำไรของผู้ขาย" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "ชื่อของผู้ขายนี้" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "ชื่อผู้ขาย" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "ไฟล์การตอบสนอง" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "การตอบกลับการประมวลผลครั้งสุดท้ายของผู้ขาย" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "เส้นทางไฟล์การรวมของผู้ขาย" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "เส้นทางการบูรณาการ" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1587,31 +1629,31 @@ msgid "" "metadata customization for administrative purposes." msgstr "" "แทนแท็กผลิตภัณฑ์ที่ใช้ในการจัดประเภทหรือระบุผลิตภัณฑ์ คลาส ProductTag " -"ถูกออกแบบมาเพื่อระบุและจัดประเภทผลิตภัณฑ์อย่างเป็นเอกลักษณ์ผ่านการรวมกันของตัวระบุแท็กภายในและชื่อแสดงผลที่ใช้งานง่าย " -"รองรับการดำเนินการที่ส่งออกผ่าน mixins " +"ถูกออกแบบมาเพื่อระบุและจัดประเภทผลิตภัณฑ์อย่างเป็นเอกลักษณ์ผ่านการรวมกันของตัวระบุแท็กภายในและชื่อแสดงผลที่ใช้งานง่าย" +" รองรับการดำเนินการที่ส่งออกผ่าน mixins " "และให้การปรับแต่งเมตาดาต้าสำหรับวัตถุประสงค์ในการบริหารจัดการ" -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "ตัวระบุแท็กภายในสำหรับแท็กสินค้า" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "ชื่อวัน" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "ชื่อที่เป็นมิตรกับผู้ใช้สำหรับแท็กสินค้า" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "แสดงชื่อแท็ก" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "แท็กสินค้า" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1621,15 +1663,15 @@ msgstr "" "คลาสนี้จำลองแท็กหมวดหมู่ที่สามารถใช้เพื่อเชื่อมโยงและจัดประเภทผลิตภัณฑ์ได้ " "รวมถึงแอตทริบิวต์สำหรับตัวระบุแท็กภายในและชื่อแสดงผลที่เป็นมิตรกับผู้ใช้" -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "แท็กหมวดหมู่" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "แท็กหมวดหมู่" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1641,190 +1683,192 @@ msgid "" "hierarchy of categories, as well as assign attributes like images, tags, or " "priority." msgstr "" -"แทนถึงเอนทิตีประเภทเพื่อจัดระเบียบและจัดกลุ่มรายการที่เกี่ยวข้องในโครงสร้างลำดับชั้น " -"หมวดหมู่สามารถมีความสัมพันธ์ลำดับชั้นกับหมวดหมู่อื่น ๆ ได้ ซึ่งสนับสนุนความสัมพันธ์แบบพ่อแม่-" -"ลูกคลาสนี้ประกอบด้วยฟิลด์สำหรับข้อมูลเมตาและตัวแทนภาพ " -"ซึ่งทำหน้าที่เป็นพื้นฐานสำหรับคุณสมบัติที่เกี่ยวข้องกับหมวดหมู่ " -"คลาสนี้มักใช้เพื่อกำหนดและจัดการหมวดหมู่สินค้าหรือการจัดกลุ่มที่คล้ายกันภายในแอปพลิเคชัน " -"ช่วยให้ผู้ใช้หรือผู้ดูแลระบบสามารถระบุชื่อ คำอธิบาย และลำดับชั้นของหมวดหมู่ " -"รวมถึงกำหนดคุณลักษณะต่างๆ เช่น รูปภาพ แท็ก หรือความสำคัญ" +"แทนถึงเอนทิตีประเภทเพื่อจัดระเบียบและจัดกลุ่มรายการที่เกี่ยวข้องในโครงสร้างลำดับชั้น" +" หมวดหมู่สามารถมีความสัมพันธ์ลำดับชั้นกับหมวดหมู่อื่น ๆ ได้ " +"ซึ่งสนับสนุนความสัมพันธ์แบบพ่อแม่-ลูกคลาสนี้ประกอบด้วยฟิลด์สำหรับข้อมูลเมตาและตัวแทนภาพ" +" ซึ่งทำหน้าที่เป็นพื้นฐานสำหรับคุณสมบัติที่เกี่ยวข้องกับหมวดหมู่ " +"คลาสนี้มักใช้เพื่อกำหนดและจัดการหมวดหมู่สินค้าหรือการจัดกลุ่มที่คล้ายกันภายในแอปพลิเคชัน" +" ช่วยให้ผู้ใช้หรือผู้ดูแลระบบสามารถระบุชื่อ คำอธิบาย และลำดับชั้นของหมวดหมู่" +" รวมถึงกำหนดคุณลักษณะต่างๆ เช่น รูปภาพ แท็ก หรือความสำคัญ" -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "อัปโหลดรูปภาพที่แสดงถึงหมวดหมู่นี้" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "ภาพหมวดหมู่" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "กำหนดเปอร์เซ็นต์มาร์กอัปสำหรับสินค้าในหมวดหมู่นี้" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "ผู้ปกครองของหมวดหมู่นี้เพื่อสร้างโครงสร้างลำดับชั้น" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "หมวดหมู่หลัก" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "ชื่อหมวดหมู่" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "กรุณาตั้งชื่อสำหรับหมวดหมู่นี้" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "เพิ่มคำอธิบายโดยละเอียดสำหรับหมวดหมู่นี้" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "หมวดหมู่คำอธิบาย" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "แท็กที่ช่วยอธิบายหรือจัดกลุ่มหมวดหมู่นี้" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "ลำดับความสำคัญ" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"แทนวัตถุแบรนด์ในระบบ คลาสนี้จัดการข้อมูลและคุณลักษณะที่เกี่ยวข้องกับแบรนด์ รวมถึงชื่อ โลโก้ " -"คำอธิบาย หมวดหมู่ที่เกี่ยวข้อง สลักเฉพาะ และลำดับความสำคัญ " +"แทนวัตถุแบรนด์ในระบบ คลาสนี้จัดการข้อมูลและคุณลักษณะที่เกี่ยวข้องกับแบรนด์ " +"รวมถึงชื่อ โลโก้ คำอธิบาย หมวดหมู่ที่เกี่ยวข้อง สลักเฉพาะ และลำดับความสำคัญ " "ช่วยให้สามารถจัดระเบียบและแสดงข้อมูลที่เกี่ยวข้องกับแบรนด์ภายในแอปพลิเคชันได้" -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "ชื่อของแบรนด์นี้" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "ชื่อแบรนด์" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "อัปโหลดโลโก้ที่เป็นตัวแทนของแบรนด์นี้" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "แบรนด์รูปภาพขนาดเล็ก" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "อัปโหลดโลโก้ขนาดใหญ่ที่เป็นตัวแทนของแบรนด์นี้" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "แบรนด์ภาพใหญ่" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "เพิ่มคำอธิบายรายละเอียดของแบรนด์" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "คำอธิบายแบรนด์" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "หมวดหมู่เพิ่มเติมที่แบรนด์นี้เกี่ยวข้อง" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "หมวดหมู่" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"แสดงถึงสต็อกของสินค้าที่จัดการในระบบ คลาสนี้ให้รายละเอียดเกี่ยวกับความสัมพันธ์ระหว่างผู้จำหน่าย, " -"สินค้า, และข้อมูลสต็อกของพวกเขา รวมถึงคุณสมบัติที่เกี่ยวข้องกับสินค้าคงคลัง เช่น ราคา, ราคาซื้อ, " -"จำนวน, รหัสสินค้า (SKU), และสินทรัพย์ดิจิทัล " -"เป็นส่วนหนึ่งของระบบการจัดการสินค้าคงคลังเพื่อให้สามารถติดตามและประเมินสินค้าที่มีจากผู้จำหน่ายต่างๆ " -"ได้" +"แสดงถึงสต็อกของสินค้าที่จัดการในระบบ " +"คลาสนี้ให้รายละเอียดเกี่ยวกับความสัมพันธ์ระหว่างผู้จำหน่าย, สินค้า, " +"และข้อมูลสต็อกของพวกเขา รวมถึงคุณสมบัติที่เกี่ยวข้องกับสินค้าคงคลัง เช่น " +"ราคา, ราคาซื้อ, จำนวน, รหัสสินค้า (SKU), และสินทรัพย์ดิจิทัล " +"เป็นส่วนหนึ่งของระบบการจัดการสินค้าคงคลังเพื่อให้สามารถติดตามและประเมินสินค้าที่มีจากผู้จำหน่ายต่างๆ" +" ได้" -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "ผู้จัดจำหน่ายที่จัดหาสินค้าคงคลังนี้" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "ผู้ขายที่เกี่ยวข้อง" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "ราคาสุดท้ายที่ลูกค้าต้องชำระหลังจากการบวกกำไร" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "ราคาขาย" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "สินค้าที่เกี่ยวข้องกับรายการสินค้าคงคลังนี้" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "ผลิตภัณฑ์ที่เกี่ยวข้อง" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "ราคาที่จ่ายให้กับผู้ขายสำหรับสินค้านี้" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "ราคาซื้อจากผู้ขาย" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "จำนวนสินค้าที่มีในสต็อก" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "จำนวนในสต็อก" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "รหัสสินค้าที่ผู้ขายกำหนดเพื่อระบุตัวผลิตภัณฑ์" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "รหัสสินค้าของผู้ขาย" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "ไฟล์ดิจิทัลที่เกี่ยวข้องกับสต็อกนี้ หากมี" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "ไฟล์ดิจิทัล" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "คุณลักษณะของระบบ" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "รายการสินค้าคงคลัง" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1835,373 +1879,390 @@ msgid "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." msgstr "" -"แสดงถึงผลิตภัณฑ์ที่มีคุณลักษณะต่างๆ เช่น หมวดหมู่, แบรนด์, แท็ก, สถานะดิจิทัล, ชื่อ, คำอธิบาย, " -"หมายเลขชิ้นส่วน, และ slug ให้คุณสมบัติประโยชน์ที่เกี่ยวข้องเพื่อดึงคะแนน, จำนวนความคิดเห็น, " -"ราคา, จำนวนสินค้า, และยอดสั่งซื้อทั้งหมด " +"แสดงถึงผลิตภัณฑ์ที่มีคุณลักษณะต่างๆ เช่น หมวดหมู่, แบรนด์, แท็ก, " +"สถานะดิจิทัล, ชื่อ, คำอธิบาย, หมายเลขชิ้นส่วน, และ slug " +"ให้คุณสมบัติประโยชน์ที่เกี่ยวข้องเพื่อดึงคะแนน, จำนวนความคิดเห็น, ราคา, " +"จำนวนสินค้า, และยอดสั่งซื้อทั้งหมด " "ออกแบบมาเพื่อใช้ในระบบที่จัดการอีคอมเมิร์ซหรือการจัดการสินค้าคงคลัง " -"คลาสนี้โต้ตอบกับโมเดลที่เกี่ยวข้อง (เช่น หมวดหมู่, แบรนด์, และแท็กผลิตภัณฑ์) " +"คลาสนี้โต้ตอบกับโมเดลที่เกี่ยวข้อง (เช่น หมวดหมู่, แบรนด์, และแท็กผลิตภัณฑ์)" +" " "และจัดการการแคชสำหรับคุณสมบัติที่เข้าถึงบ่อยเพื่อปรับปรุงประสิทธิภาพใช้เพื่อกำหนดและจัดการข้อมูลผลิตภัณฑ์และข้อมูลที่เกี่ยวข้องภายในแอปพลิเคชัน" -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "หมวดหมู่ที่สินค้านี้จัดอยู่ใน" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "เลือกเชื่อมโยงผลิตภัณฑ์นี้กับแบรนด์" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "แท็กที่ช่วยอธิบายหรือจัดกลุ่มผลิตภัณฑ์นี้" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "บ่งชี้ว่าสินค้านี้จัดส่งในรูปแบบดิจิทัลหรือไม่" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "สินค้าเป็นดิจิทัล" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "บ่งชี้ว่าผลิตภัณฑ์นี้ควรได้รับการอัปเดตจากงานประจำหรือไม่" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "สามารถอัปเดตผลิตภัณฑ์ได้" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "ระบุชื่อที่ชัดเจนสำหรับผลิตภัณฑ์" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "ชื่อสินค้า" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "เพิ่มคำอธิบายรายละเอียดของสินค้า" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "รายละเอียดสินค้า" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "หมายเลขชิ้นส่วนสำหรับสินค้านี้" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "หมายเลขชิ้นส่วน" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "หน่วยเก็บสินค้าสำหรับสินค้านี้" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "แทนคุณสมบัติในระบบ. คลาสนี้ใช้เพื่อกำหนดและจัดการคุณสมบัติ " -"ซึ่งเป็นข้อมูลที่สามารถปรับแต่งได้ซึ่งสามารถเชื่อมโยงกับเอนทิตีอื่น ๆ ได้. คุณสมบัติมีหมวดหมู่, กลุ่ม, " -"ประเภทค่า, และชื่อที่เกี่ยวข้อง. แบบจำลองรองรับหลายประเภทของค่า รวมถึงสตริง, จำนวนเต็ม, " -"จำนวนทศนิยม, บูลีน, อาร์เรย์, และออบเจ็กต์. " +"ซึ่งเป็นข้อมูลที่สามารถปรับแต่งได้ซึ่งสามารถเชื่อมโยงกับเอนทิตีอื่น ๆ ได้. " +"คุณสมบัติมีหมวดหมู่, กลุ่ม, ประเภทค่า, และชื่อที่เกี่ยวข้อง. " +"แบบจำลองรองรับหลายประเภทของค่า รวมถึงสตริง, จำนวนเต็ม, จำนวนทศนิยม, บูลีน, " +"อาร์เรย์, และออบเจ็กต์. " "ซึ่งช่วยให้สามารถจัดโครงสร้างข้อมูลได้ไดนามิกและยืดหยุ่น." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "กลุ่มของแอตทริบิวต์นี้" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "สตริง" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "ความซื่อสัตย์" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "ลอย" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "บูลีน" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "อาร์เรย์" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "วัตถุ" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "ประเภทของค่าของแอตทริบิวต์" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "ประเภทของค่า" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "ชื่อของแอตทริบิวต์นี้" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "ชื่อของแอตทริบิวต์" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "สามารถกรองได้" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "กำหนดว่าแอตทริบิวต์นี้สามารถใช้สำหรับการกรองหรือไม่" -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "คุณสมบัติ" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"แทนค่าเฉพาะสำหรับคุณลักษณะที่เชื่อมโยงกับผลิตภัณฑ์ มันเชื่อมโยง 'คุณลักษณะ' กับ 'ค่า' ที่ไม่ซ้ำกัน " +"แทนค่าเฉพาะสำหรับคุณลักษณะที่เชื่อมโยงกับผลิตภัณฑ์ มันเชื่อมโยง 'คุณลักษณะ' " +"กับ 'ค่า' ที่ไม่ซ้ำกัน " "ทำให้การจัดระเบียบและการแสดงลักษณะของผลิตภัณฑ์เป็นไปอย่างมีประสิทธิภาพและยืดหยุ่นมากขึ้น" -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "คุณลักษณะของค่านี้" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "ผลิตภัณฑ์เฉพาะที่เกี่ยวข้องกับค่าของแอตทริบิวต์นี้" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "ค่าเฉพาะสำหรับคุณสมบัตินี้" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" -"แสดงภาพสินค้าที่เกี่ยวข้องกับสินค้าในระบบ. คลาสนี้ออกแบบมาเพื่อจัดการภาพสำหรับสินค้า " +"แสดงภาพสินค้าที่เกี่ยวข้องกับสินค้าในระบบ. " +"คลาสนี้ออกแบบมาเพื่อจัดการภาพสำหรับสินค้า " "รวมถึงฟังก์ชันสำหรับการอัปโหลดไฟล์ภาพ, การเชื่อมโยงกับสินค้าเฉพาะ, " -"และการกำหนดลำดับการแสดงผล. นอกจากนี้ยังมีคุณสมบัติการเข้าถึงสำหรับผู้ใช้ที่มีความต้องการพิเศษ " +"และการกำหนดลำดับการแสดงผล. " +"นอกจากนี้ยังมีคุณสมบัติการเข้าถึงสำหรับผู้ใช้ที่มีความต้องการพิเศษ " "โดยให้ข้อความทางเลือกสำหรับภาพ." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "ให้ข้อความทางเลือกสำหรับภาพเพื่อการเข้าถึง" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "ข้อความแสดงแทนภาพ" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "อัปโหลดไฟล์รูปภาพสำหรับสินค้านี้" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "รูปภาพสินค้า" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "กำหนดลำดับการแสดงผลของภาพ" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "ลำดับความสำคัญในการแสดงผล" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "สินค้าที่ภาพนี้แทน" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "รูปภาพสินค้า" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "แสดงถึงแคมเปญส่งเสริมการขายสำหรับสินค้าที่มีส่วนลด. " -"คลาสนี้ใช้เพื่อกำหนดและจัดการแคมเปญส่งเสริมการขายที่มอบส่วนลดเป็นเปอร์เซ็นต์สำหรับสินค้า. " -"คลาสนี้ประกอบด้วยคุณสมบัติสำหรับการตั้งค่าอัตราส่วนลด, ให้รายละเอียดเกี่ยวกับโปรโมชั่น, " -"และเชื่อมโยงกับสินค้าที่เกี่ยวข้อง. " +"คลาสนี้ใช้เพื่อกำหนดและจัดการแคมเปญส่งเสริมการขายที่มอบส่วนลดเป็นเปอร์เซ็นต์สำหรับสินค้า." +" คลาสนี้ประกอบด้วยคุณสมบัติสำหรับการตั้งค่าอัตราส่วนลด, " +"ให้รายละเอียดเกี่ยวกับโปรโมชั่น, และเชื่อมโยงกับสินค้าที่เกี่ยวข้อง. " "คลาสนี้ผสานการทำงานกับแคตตาล็อกสินค้าเพื่อกำหนดสินค้าที่ได้รับผลกระทบในแคมเปญ." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "เปอร์เซ็นต์ส่วนลดสำหรับสินค้าที่เลือก" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "เปอร์เซ็นต์ส่วนลด" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "กรุณาตั้งชื่อที่ไม่ซ้ำกันสำหรับการส่งเสริมการขายนี้" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "ชื่อโปรโมชั่น" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "รายละเอียดโปรโมชั่น" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "เลือกผลิตภัณฑ์ที่รวมอยู่ในโปรโมชั่นนี้" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "สินค้าที่รวมอยู่" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "โปรโมชั่น" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"แสดงรายการสินค้าที่ผู้ใช้ต้องการเก็บไว้เพื่อจัดการและค้นหาสินค้าที่ต้องการในอนาคต " -"คลาสนี้ให้บริการฟังก์ชันสำหรับการจัดการคอลเลกชันของสินค้า " -"ซึ่งรวมถึงการเพิ่มและลบสินค้าออกจากคอลเลกชัน ตลอดจนการเพิ่มและลบสินค้าหลายรายการพร้อมกัน" +"แสดงรายการสินค้าที่ผู้ใช้ต้องการเก็บไว้เพื่อจัดการและค้นหาสินค้าที่ต้องการในอนาคต" +" คลาสนี้ให้บริการฟังก์ชันสำหรับการจัดการคอลเลกชันของสินค้า " +"ซึ่งรวมถึงการเพิ่มและลบสินค้าออกจากคอลเลกชัน " +"ตลอดจนการเพิ่มและลบสินค้าหลายรายการพร้อมกัน" -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "สินค้าที่ผู้ใช้ได้ทำเครื่องหมายว่าต้องการ" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "ผู้ใช้ที่เป็นเจ้าของรายการความปรารถนา" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "เจ้าของรายการที่อยากได้" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "รายการสิ่งที่ต้องการ" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "แทนเอกสารบันทึกที่เกี่ยวข้องกับผลิตภัณฑ์. " "คลาสนี้ใช้เพื่อเก็บข้อมูลเกี่ยวกับเอกสารที่เกี่ยวข้องกับผลิตภัณฑ์เฉพาะ " "รวมถึงการอัปโหลดไฟล์และข้อมูลเมตาของไฟล์. " -"คลาสนี้มีเมธอดและคุณสมบัติเพื่อจัดการกับประเภทไฟล์และเส้นทางจัดเก็บสำหรับไฟล์เอกสาร. " -"คลาสนี้ขยายฟังก์ชันการทำงานจากมิกซ์อินเฉพาะ และให้คุณสมบัติเพิ่มเติมตามความต้องการ." +"คลาสนี้มีเมธอดและคุณสมบัติเพื่อจัดการกับประเภทไฟล์และเส้นทางจัดเก็บสำหรับไฟล์เอกสาร." +" คลาสนี้ขยายฟังก์ชันการทำงานจากมิกซ์อินเฉพาะ " +"และให้คุณสมบัติเพิ่มเติมตามความต้องการ." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "สารคดี" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "สารคดี" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "ยังไม่ได้รับการแก้ไข" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "แทนที่หน่วยงานที่อยู่ซึ่งรวมถึงรายละเอียดตำแหน่งและความสัมพันธ์กับผู้ใช้ " "ให้ฟังก์ชันสำหรับการจัดเก็บข้อมูลทางภูมิศาสตร์และที่อยู่ " "รวมถึงการผสานรวมกับบริการการเข้ารหัสทางภูมิศาสตร์ " -"คลาสนี้ถูกออกแบบมาเพื่อจัดเก็บข้อมูลที่อยู่โดยละเอียด รวมถึงองค์ประกอบเช่น ถนน เมือง ภูมิภาค " -"ประเทศ และตำแหน่งทางภูมิศาสตร์ (ลองจิจูดและละติจูด) รองรับการผสานรวมกับ API " -"การเข้ารหัสทางภูมิศาสตร์ ทำให้สามารถจัดเก็บการตอบสนองของ API " -"ดิบเพื่อการประมวลผลหรือตรวจสอบเพิ่มเติมได้คลาสนี้ยังอนุญาตให้เชื่อมโยงที่อยู่กับผู้ใช้ได้ " -"ซึ่งช่วยให้การจัดการข้อมูลส่วนบุคคลเป็นไปอย่างสะดวก" +"คลาสนี้ถูกออกแบบมาเพื่อจัดเก็บข้อมูลที่อยู่โดยละเอียด รวมถึงองค์ประกอบเช่น " +"ถนน เมือง ภูมิภาค ประเทศ และตำแหน่งทางภูมิศาสตร์ (ลองจิจูดและละติจูด) " +"รองรับการผสานรวมกับ API การเข้ารหัสทางภูมิศาสตร์ " +"ทำให้สามารถจัดเก็บการตอบสนองของ API " +"ดิบเพื่อการประมวลผลหรือตรวจสอบเพิ่มเติมได้คลาสนี้ยังอนุญาตให้เชื่อมโยงที่อยู่กับผู้ใช้ได้" +" ซึ่งช่วยให้การจัดการข้อมูลส่วนบุคคลเป็นไปอย่างสะดวก" -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "ที่อยู่สำหรับลูกค้า" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "บรรทัดที่อยู่" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "ถนน" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "เขต" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "เมือง" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "ภูมิภาค" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "รหัสไปรษณีย์" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "ประเทศ" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "จุดพิกัดภูมิศาสตร์ (ลองจิจูด, ละติจูด)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "การตอบกลับ JSON แบบเต็มจากตัวแปลงที่อยู่ทางภูมิศาสตร์สำหรับที่อยู่นี้" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "เก็บคำตอบ JSON จากบริการการแปลงที่อยู่ทางภูมิศาสตร์" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "ที่อยู่" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "ที่อยู่" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2210,78 +2271,79 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"แสดงรหัสโปรโมชั่นที่สามารถใช้เพื่อรับส่วนลด การจัดการความถูกต้อง ประเภทของส่วนลด " -"และการใช้งาน คลาส PromoCode จัดเก็บรายละเอียดเกี่ยวกับรหัสโปรโมชั่น รวมถึงตัวระบุที่ไม่ซ้ำกัน " -"คุณสมบัติของส่วนลด (จำนวนหรือเปอร์เซ็นต์) ระยะเวลาการใช้งาน ผู้ใช้ที่เกี่ยวข้อง (ถ้ามี) " -"และสถานะการใช้งาน " -"รวมถึงฟังก์ชันการทำงานเพื่อตรวจสอบและใช้รหัสโปรโมชั่นกับคำสั่งซื้อในขณะที่ตรวจสอบให้แน่ใจว่าข้อจำกัดต่างๆ " -"ได้รับการปฏิบัติตาม" +"แสดงรหัสโปรโมชั่นที่สามารถใช้เพื่อรับส่วนลด การจัดการความถูกต้อง " +"ประเภทของส่วนลด และการใช้งาน คลาส PromoCode " +"จัดเก็บรายละเอียดเกี่ยวกับรหัสโปรโมชั่น รวมถึงตัวระบุที่ไม่ซ้ำกัน " +"คุณสมบัติของส่วนลด (จำนวนหรือเปอร์เซ็นต์) ระยะเวลาการใช้งาน " +"ผู้ใช้ที่เกี่ยวข้อง (ถ้ามี) และสถานะการใช้งาน " +"รวมถึงฟังก์ชันการทำงานเพื่อตรวจสอบและใช้รหัสโปรโมชั่นกับคำสั่งซื้อในขณะที่ตรวจสอบให้แน่ใจว่าข้อจำกัดต่างๆ" +" ได้รับการปฏิบัติตาม" -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "รหัสเฉพาะที่ผู้ใช้ใช้เพื่อแลกรับส่วนลด" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "รหัสโปรโมชั่น" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "จำนวนส่วนลดคงที่ที่ใช้หากไม่ได้ใช้เปอร์เซ็นต์" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "จำนวนส่วนลดคงที่" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "ส่วนลดเป็นเปอร์เซ็นต์ที่ใช้เมื่อไม่ได้ใช้จำนวนเงินคงที่" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "เปอร์เซ็นต์ส่วนลด" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "เวลาที่โค้ดโปรโมชั่นหมดอายุ" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "เวลาสิ้นสุดความถูกต้อง" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "เวลาที่ตราไว้ซึ่งรหัสโปรโมชั่นนี้ใช้ได้" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "เวลาเริ่มต้นความถูกต้อง" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "เวลาที่ตราประทับเมื่อใช้รหัสโปรโมชั่น, ว่างเปล่าหากยังไม่ได้ใช้" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "เวลาการใช้งาน" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "ผู้ใช้ที่ได้รับมอบหมายให้ใช้รหัสโปรโมชั่นนี้ หากมี" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "ผู้ใช้ที่ได้รับมอบหมาย" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "รหัสโปรโมชั่น" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "รหัสส่งเสริมการขาย" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2289,173 +2351,181 @@ msgstr "" "ควรกำหนดประเภทส่วนลดเพียงประเภทเดียว (จำนวนเงินหรือเปอร์เซ็นต์) เท่านั้น " "ไม่ควรกำหนดทั้งสองประเภทหรือไม่ได้กำหนดเลย" -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "รหัสโปรโมชั่นถูกใช้ไปแล้ว" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "ประเภทส่วนลดไม่ถูกต้องสำหรับรหัสโปรโมชั่น {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" -"แทนคำสั่งซื้อที่ผู้ใช้ได้ทำการสั่งซื้อไว้ คลาสนี้จำลองคำสั่งซื้อภายในแอปพลิเคชัน รวมถึงคุณสมบัติต่าง ๆ " -"เช่น ข้อมูลการเรียกเก็บเงิน ข้อมูลการจัดส่ง สถานะ ผู้ใช้ที่เกี่ยวข้อง การแจ้งเตือน " -"และการดำเนินการที่เกี่ยวข้อง คำสั่งซื้อสามารถมีสินค้าที่เกี่ยวข้องได้ โปรโมชั่นสามารถนำมาใช้ได้ " -"ที่อยู่สามารถตั้งค่าได้ และรายละเอียดการจัดส่งหรือการเรียกเก็บเงินสามารถอัปเดตได้เช่นกัน " -"นอกจากนี้ ฟังก์ชันการทำงานยังรองรับการจัดการสินค้าในวงจรชีวิตของคำสั่งซื้อ" +"แทนคำสั่งซื้อที่ผู้ใช้ได้ทำการสั่งซื้อไว้ " +"คลาสนี้จำลองคำสั่งซื้อภายในแอปพลิเคชัน รวมถึงคุณสมบัติต่าง ๆ เช่น " +"ข้อมูลการเรียกเก็บเงิน ข้อมูลการจัดส่ง สถานะ ผู้ใช้ที่เกี่ยวข้อง " +"การแจ้งเตือน และการดำเนินการที่เกี่ยวข้อง " +"คำสั่งซื้อสามารถมีสินค้าที่เกี่ยวข้องได้ โปรโมชั่นสามารถนำมาใช้ได้ " +"ที่อยู่สามารถตั้งค่าได้ " +"และรายละเอียดการจัดส่งหรือการเรียกเก็บเงินสามารถอัปเดตได้เช่นกัน นอกจากนี้ " +"ฟังก์ชันการทำงานยังรองรับการจัดการสินค้าในวงจรชีวิตของคำสั่งซื้อ" -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "ที่อยู่สำหรับเรียกเก็บเงินที่ใช้สำหรับคำสั่งซื้อนี้" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "รหัสโปรโมชั่นเสริมใช้กับคำสั่งซื้อนี้แล้ว" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "ใช้รหัสโปรโมชั่น" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "ที่อยู่สำหรับจัดส่งที่ใช้สำหรับคำสั่งซื้อนี้" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "ที่อยู่สำหรับจัดส่ง" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "สถานะปัจจุบันของคำสั่งซื้อในวงจรชีวิต" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "สถานะการสั่งซื้อ" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "โครงสร้าง JSON ของการแจ้งเตือนที่จะแสดงให้ผู้ใช้เห็น ใน UI " "ของผู้ดูแลระบบจะใช้การแสดงผลแบบตาราง" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "การแสดงผล JSON ของคุณลักษณะคำสั่งซื้อสำหรับคำสั่งซื้อนี้" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "ผู้ใช้ที่ทำการสั่งซื้อ" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "ผู้ใช้" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "เวลาที่คำสั่งซื้อได้รับการยืนยัน" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "ซื้อเวลา" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "ตัวระบุที่มนุษย์อ่านได้สำหรับคำสั่ง" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "รหัสที่สามารถอ่านได้โดยมนุษย์" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "คำสั่ง" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" -msgstr "ผู้ใช้ต้องมีคำสั่งซื้อที่รอดำเนินการเพียงหนึ่งรายการเท่านั้นในแต่ละครั้ง!" +msgstr "" +"ผู้ใช้ต้องมีคำสั่งซื้อที่รอดำเนินการเพียงหนึ่งรายการเท่านั้นในแต่ละครั้ง!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" -msgstr "คุณไม่สามารถเพิ่มสินค้าในคำสั่งซื้อที่ไม่ใช่คำสั่งซื้อที่รอดำเนินการได้" +msgstr "" +"คุณไม่สามารถเพิ่มสินค้าในคำสั่งซื้อที่ไม่ใช่คำสั่งซื้อที่รอดำเนินการได้" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "คุณไม่สามารถเพิ่มสินค้าที่ไม่ใช้งานในคำสั่งซื้อได้" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "คุณไม่สามารถเพิ่มสินค้าได้มากกว่าที่มีในสต็อก" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" -msgstr "คุณไม่สามารถลบสินค้าออกจากคำสั่งซื้อที่ไม่ใช่คำสั่งซื้อที่อยู่ในสถานะรอดำเนินการได้" +msgstr "" +"คุณไม่สามารถลบสินค้าออกจากคำสั่งซื้อที่ไม่ใช่คำสั่งซื้อที่อยู่ในสถานะรอดำเนินการได้" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} ไม่มีอยู่จริงกับคำค้นหา <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "รหัสโปรโมชั่นไม่มีอยู่" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" -msgstr "คุณสามารถซื้อได้เฉพาะสินค้าทางกายภาพที่มีที่อยู่สำหรับจัดส่งระบุไว้เท่านั้น!" +msgstr "" +"คุณสามารถซื้อได้เฉพาะสินค้าทางกายภาพที่มีที่อยู่สำหรับจัดส่งระบุไว้เท่านั้น!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "ไม่มีที่อยู่" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "ขณะนี้คุณไม่สามารถซื้อได้ กรุณาลองใหม่อีกครั้งในอีกไม่กี่นาที" -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "ค่าแรงบังคับไม่ถูกต้อง" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "คุณไม่สามารถซื้อคำสั่งซื้อที่ว่างเปล่าได้!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "คุณไม่สามารถซื้อคำสั่งซื้อได้หากไม่มีผู้ใช้!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "ผู้ใช้ที่ไม่มียอดคงเหลือไม่สามารถซื้อด้วยยอดคงเหลือได้!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "เงินไม่เพียงพอในการทำรายการให้เสร็จสมบูรณ์" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -"คุณไม่สามารถซื้อได้หากไม่มีการลงทะเบียน กรุณาให้ข้อมูลต่อไปนี้: ชื่อลูกค้า, อีเมลลูกค้า, " -"หมายเลขโทรศัพท์ลูกค้า" +"คุณไม่สามารถซื้อได้หากไม่มีการลงทะเบียน กรุณาให้ข้อมูลต่อไปนี้: ชื่อลูกค้า, " +"อีเมลลูกค้า, หมายเลขโทรศัพท์ลูกค้า" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" -msgstr "วิธีการชำระเงินไม่ถูกต้อง: {payment_method} จาก {available_payment_methods}!" +msgstr "" +"วิธีการชำระเงินไม่ถูกต้อง: {payment_method} จาก {available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2464,36 +2534,37 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "จัดการข้อเสนอแนะของผู้ใช้สำหรับผลิตภัณฑ์ " -"คลาสนี้ถูกออกแบบมาเพื่อรวบรวมและจัดเก็บข้อมูลข้อเสนอแนะของผู้ใช้สำหรับผลิตภัณฑ์เฉพาะที่พวกเขาได้ซื้อ " -"ประกอบด้วยแอตทริบิวต์สำหรับจัดเก็บความคิดเห็นของผู้ใช้ การอ้างอิงถึงผลิตภัณฑ์ที่เกี่ยวข้องในคำสั่งซื้อ " -"และคะแนนที่ผู้ใช้กำหนด " +"คลาสนี้ถูกออกแบบมาเพื่อรวบรวมและจัดเก็บข้อมูลข้อเสนอแนะของผู้ใช้สำหรับผลิตภัณฑ์เฉพาะที่พวกเขาได้ซื้อ" +" ประกอบด้วยแอตทริบิวต์สำหรับจัดเก็บความคิดเห็นของผู้ใช้ " +"การอ้างอิงถึงผลิตภัณฑ์ที่เกี่ยวข้องในคำสั่งซื้อ และคะแนนที่ผู้ใช้กำหนด " "คลาสนี้ใช้ฟิลด์ในฐานข้อมูลเพื่อสร้างแบบจำลองและจัดการข้อมูลข้อเสนอแนะอย่างมีประสิทธิภาพ" -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "ความคิดเห็นที่ผู้ใช้ให้ไว้เกี่ยวกับประสบการณ์ของพวกเขาต่อผลิตภัณฑ์" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "ความคิดเห็นจากผู้ตอบแบบสอบถาม" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "อ้างอิงถึงผลิตภัณฑ์เฉพาะในคำสั่งซื้อที่ความคิดเห็นนี้เกี่ยวข้อง" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "สินค้าที่เกี่ยวข้อง" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "คะแนนที่ผู้ใช้กำหนดให้กับผลิตภัณฑ์" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "การให้คะแนนสินค้า" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2505,143 +2576,146 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"แสดงผลิตภัณฑ์ที่เกี่ยวข้องกับคำสั่งซื้อและคุณลักษณะของผลิตภัณฑ์โมเดล OrderProduct " -"ดูแลข้อมูลเกี่ยวกับสินค้าที่เป็นส่วนหนึ่งของคำสั่งซื้อ รวมถึงรายละเอียดเช่น ราคาซื้อ จำนวน " -"คุณสมบัติของสินค้า และสถานะ โมเดลนี้จัดการการแจ้งเตือนสำหรับผู้ใช้และผู้ดูแลระบบ " +"แสดงผลิตภัณฑ์ที่เกี่ยวข้องกับคำสั่งซื้อและคุณลักษณะของผลิตภัณฑ์โมเดล " +"OrderProduct ดูแลข้อมูลเกี่ยวกับสินค้าที่เป็นส่วนหนึ่งของคำสั่งซื้อ " +"รวมถึงรายละเอียดเช่น ราคาซื้อ จำนวน คุณสมบัติของสินค้า และสถานะ " +"โมเดลนี้จัดการการแจ้งเตือนสำหรับผู้ใช้และผู้ดูแลระบบ " "และจัดการการดำเนินการเช่น การคืนสินค้าคงเหลือหรือการเพิ่มความคิดเห็น " -"โมเดลนี้ยังมีวิธีการและคุณสมบัติที่สนับสนุนตรรกะทางธุรกิจ เช่น การคำนวณราคารวมหรือการสร้าง URL " -"สำหรับดาวน์โหลดสินค้าดิจิทัล โมเดลนี้ผสานรวมกับโมเดล Order และ Product " +"โมเดลนี้ยังมีวิธีการและคุณสมบัติที่สนับสนุนตรรกะทางธุรกิจ เช่น " +"การคำนวณราคารวมหรือการสร้าง URL สำหรับดาวน์โหลดสินค้าดิจิทัล " +"โมเดลนี้ผสานรวมกับโมเดล Order และ Product " "และเก็บการอ้างอิงถึงโมเดลเหล่านี้ไว้" -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "ราคาที่ลูกค้าชำระสำหรับสินค้านี้ ณ เวลาที่ซื้อ" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "ราคาซื้อ ณ เวลาที่สั่งซื้อ" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "ความคิดเห็นภายในสำหรับผู้ดูแลระบบเกี่ยวกับสินค้าที่สั่งซื้อ" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "ความคิดเห็นภายใน" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "การแจ้งเตือนผู้ใช้" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "การแสดงผล JSON ของคุณลักษณะของรายการนี้" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "จัดเรียงคุณลักษณะของสินค้า" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "การอ้างอิงถึงคำสั่งซื้อหลักที่มีสินค้านี้อยู่" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "ลำดับของผู้ปกครอง" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "สินค้าเฉพาะที่เกี่ยวข้องกับรายการคำสั่งซื้อนี้" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "ปริมาณของสินค้าชนิดนี้ในคำสั่งซื้อ" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "จำนวนสินค้า" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "สถานะปัจจุบันของสินค้านี้ในคำสั่งซื้อ" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "สถานะสายผลิตภัณฑ์" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Orderproduct ต้องมีการสั่งซื้อที่เกี่ยวข้อง!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "ระบุการกระทำที่ไม่ถูกต้องสำหรับข้อเสนอแนะ: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "คุณไม่สามารถให้ข้อเสนอแนะเกี่ยวกับคำสั่งซื้อที่ไม่ได้รับ" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "ชื่อ" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL ของการผสานรวม" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "ข้อมูลประจำตัวสำหรับการยืนยันตัวตน" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "คุณสามารถมีผู้ให้บริการ CRM เริ่มต้นได้เพียงรายเดียวเท่านั้น" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "ระบบบริหารความสัมพันธ์ลูกค้า" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "ระบบบริหารความสัมพันธ์ลูกค้า" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "ลิงก์ CRM ของคำสั่ง" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "ลิงก์ CRM ของคำสั่งซื้อ" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" -"แสดงถึงฟังก์ชันการดาวน์โหลดสำหรับสินทรัพย์ดิจิทัลที่เกี่ยวข้องกับคำสั่งซื้อ คลาส " -"DigitalAssetDownload " -"ให้ความสามารถในการจัดการและเข้าถึงการดาวน์โหลดที่เกี่ยวข้องกับผลิตภัณฑ์ในคำสั่งซื้อ " -"มันเก็บข้อมูลเกี่ยวกับผลิตภัณฑ์ในคำสั่งซื้อที่เกี่ยวข้อง จำนวนการดาวน์โหลด " +"แสดงถึงฟังก์ชันการดาวน์โหลดสำหรับสินทรัพย์ดิจิทัลที่เกี่ยวข้องกับคำสั่งซื้อ " +"คลาส DigitalAssetDownload " +"ให้ความสามารถในการจัดการและเข้าถึงการดาวน์โหลดที่เกี่ยวข้องกับผลิตภัณฑ์ในคำสั่งซื้อ" +" มันเก็บข้อมูลเกี่ยวกับผลิตภัณฑ์ในคำสั่งซื้อที่เกี่ยวข้อง จำนวนการดาวน์โหลด " "และว่าสินทรัพย์นั้นสามารถมองเห็นได้สาธารณะหรือไม่ รวมถึงวิธีการสร้าง URL " "สำหรับการดาวน์โหลดสินทรัพย์เมื่อคำสั่งซื้อที่เกี่ยวข้องอยู่ในสถานะเสร็จสมบูรณ์" -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "ดาวน์โหลด" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "ดาวน์โหลด" #: engine/core/serializers/utility.py:91 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." -msgstr "คุณต้องแสดงความคิดเห็น, ให้คะแนน, และระบุ uuid ของสินค้าเพื่อเพิ่มคำแนะนำ" +msgstr "" +"คุณต้องแสดงความคิดเห็น, ให้คะแนน, และระบุ uuid ของสินค้าเพื่อเพิ่มคำแนะนำ" #: engine/core/sitemaps.py:25 msgid "Home" @@ -2833,12 +2907,12 @@ msgstr "สวัสดีครับ/ค่ะ %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "ขอบคุณสำหรับคำสั่งซื้อของคุณ #%(order.pk)s! " -"เราขอแจ้งให้คุณทราบว่าเราได้ดำเนินการตามคำสั่งซื้อของคุณแล้ว รายละเอียดของคำสั่งซื้อของคุณมีดังนี้:" +"เราขอแจ้งให้คุณทราบว่าเราได้ดำเนินการตามคำสั่งซื้อของคุณแล้ว " +"รายละเอียดของคำสั่งซื้อของคุณมีดังนี้:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2861,7 +2935,9 @@ msgstr "ราคาทั้งหมด" msgid "" "if you have any questions, feel free to contact our support at\n" " %(config.EMAIL_HOST_USER)s." -msgstr "หากคุณมีคำถามใด ๆ โปรดติดต่อทีมสนับสนุนของเราได้ที่ %(config.EMAIL_HOST_USER)s" +msgstr "" +"หากคุณมีคำถามใด ๆ โปรดติดต่อทีมสนับสนุนของเราได้ที่ " +"%(config.EMAIL_HOST_USER)s" #: engine/core/templates/digital_order_created_email.html:133 #, python-format @@ -2940,12 +3016,11 @@ msgstr "ขอบคุณที่เข้าพักกับเรา! เ #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" -"ขอบคุณสำหรับการสั่งซื้อของคุณ! เราขอแจ้งยืนยันการสั่งซื้อของคุณเรียบร้อยแล้ว " -"รายละเอียดการสั่งซื้อของคุณมีดังนี้:" +"ขอบคุณสำหรับการสั่งซื้อของคุณ! เราขอแจ้งยืนยันการสั่งซื้อของคุณเรียบร้อยแล้ว" +" รายละเอียดการสั่งซื้อของคุณมีดังนี้:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -2970,11 +3045,11 @@ msgid "" " reserved" msgstr "สงวนลิขสิทธิ์" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "จำเป็นต้องมีทั้งข้อมูลและเวลาหมดอายุ" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "ค่าหมดเวลาไม่ถูกต้อง ต้องอยู่ระหว่าง 0 ถึง 216000 วินาที" @@ -3006,12 +3081,12 @@ msgstr "คุณไม่มีสิทธิ์ดำเนินการน msgid "NOMINATIM_URL must be configured." msgstr "ต้องกำหนดค่าพารามิเตอร์ NOMINATIM_URL!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "ขนาดของภาพไม่ควรเกิน w{max_width} x h{max_height} พิกเซล!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3019,116 +3094,115 @@ msgstr "" "จัดการคำขอสำหรับดัชนีแผนผังเว็บไซต์และส่งคืนการตอบสนองในรูปแบบ XML " "โดยตรวจสอบให้แน่ใจว่าการตอบสนองมีหัวข้อประเภทเนื้อหาที่เหมาะสมสำหรับ XML" -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -"จัดการการตอบสนองมุมมองรายละเอียดสำหรับแผนผังเว็บไซต์ ฟังก์ชันนี้ประมวลผลคำขอ " -"ดึงการตอบสนองรายละเอียดแผนผังเว็บไซต์ที่เหมาะสม และตั้งค่าส่วนหัว Content-Type สำหรับ XML" +"จัดการการตอบสนองมุมมองรายละเอียดสำหรับแผนผังเว็บไซต์ ฟังก์ชันนี้ประมวลผลคำขอ" +" ดึงการตอบสนองรายละเอียดแผนผังเว็บไซต์ที่เหมาะสม และตั้งค่าส่วนหัว Content-" +"Type สำหรับ XML" -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "ส่งคืนรายการของภาษาที่รองรับและข้อมูลที่เกี่ยวข้อง" -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "ส่งคืนพารามิเตอร์ของเว็บไซต์ในรูปแบบอ็อบเจ็กต์ JSON" -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"จัดการการดำเนินการแคช เช่น การอ่านและการตั้งค่าข้อมูลแคชด้วยคีย์ที่กำหนดและเวลาหมดอายุ" +"จัดการการดำเนินการแคช เช่น " +"การอ่านและการตั้งค่าข้อมูลแคชด้วยคีย์ที่กำหนดและเวลาหมดอายุ" -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "จัดการการส่งแบบฟอร์ม 'ติดต่อเรา'" -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -"จัดการคำขอสำหรับการประมวลผลและตรวจสอบความถูกต้องของ URL จากคำขอ POST ที่เข้ามา" +"จัดการคำขอสำหรับการประมวลผลและตรวจสอบความถูกต้องของ URL จากคำขอ POST " +"ที่เข้ามา" -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "จัดการคำค้นหาทั่วโลก" -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "จัดการตรรกะของการซื้อในฐานะธุรกิจโดยไม่ต้องจดทะเบียน" -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "จัดการการดาวน์โหลดสินทรัพย์ดิจิทัลที่เกี่ยวข้องกับคำสั่งซื้อ " -"ฟังก์ชันนี้พยายามให้บริการไฟล์สินทรัพย์ดิจิทัลที่อยู่ในไดเรกทอรีจัดเก็บของโครงการ หากไม่พบไฟล์ " -"จะเกิดข้อผิดพลาด HTTP 404 เพื่อระบุว่าทรัพยากรไม่พร้อมใช้งาน" +"ฟังก์ชันนี้พยายามให้บริการไฟล์สินทรัพย์ดิจิทัลที่อยู่ในไดเรกทอรีจัดเก็บของโครงการ" +" หากไม่พบไฟล์ จะเกิดข้อผิดพลาด HTTP 404 เพื่อระบุว่าทรัพยากรไม่พร้อมใช้งาน" -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid เป็นข้อมูลที่จำเป็น" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "คำสั่งซื้อสินค้าไม่มีอยู่" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "คุณสามารถดาวน์โหลดสินทรัพย์ดิจิทัลได้เพียงครั้งเดียวเท่านั้น" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "คำสั่งซื้อจะต้องชำระเงินก่อนดาวน์โหลดสินทรัพย์ดิจิทัล" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "สินค้าตามคำสั่งซื้อไม่มีสินค้า" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "ไม่พบไอคอนเว็บไซต์" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" -"จัดการคำขอสำหรับไอคอนเว็บไซต์ (favicon) ฟังก์ชันนี้พยายามให้บริการไฟล์ favicon " -"ที่อยู่ในไดเรกทอรีแบบคงที่ของโปรเจกต์ หากไม่พบไฟล์ favicon จะเกิดข้อผิดพลาด HTTP 404 " -"เพื่อแสดงว่าทรัพยากรไม่พร้อมใช้งาน" +"จัดการคำขอสำหรับไอคอนเว็บไซต์ (favicon) ฟังก์ชันนี้พยายามให้บริการไฟล์ " +"favicon ที่อยู่ในไดเรกทอรีแบบคงที่ของโปรเจกต์ หากไม่พบไฟล์ favicon " +"จะเกิดข้อผิดพลาด HTTP 404 เพื่อแสดงว่าทรัพยากรไม่พร้อมใช้งาน" -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "เปลี่ยนเส้นทางคำขอไปยังหน้าดัชนีของผู้ดูแลระบบ ฟังก์ชันนี้จัดการคำขอ HTTP " -"ที่เข้ามาและเปลี่ยนเส้นทางไปยังหน้าดัชนีของอินเทอร์เฟซผู้ดูแลระบบ Django โดยใช้ฟังก์ชัน " -"`redirect` ของ Django สำหรับการเปลี่ยนเส้นทาง HTTP" +"ที่เข้ามาและเปลี่ยนเส้นทางไปยังหน้าดัชนีของอินเทอร์เฟซผู้ดูแลระบบ Django " +"โดยใช้ฟังก์ชัน `redirect` ของ Django สำหรับการเปลี่ยนเส้นทาง HTTP" -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "ส่งคืนเวอร์ชันปัจจุบันของ eVibes" -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "รายได้และคำสั่งซื้อ (ล่าสุด %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "ส่งคืนตัวแปรที่กำหนดเองสำหรับแดชบอร์ด" @@ -3140,23 +3214,25 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"กำหนดชุดมุมมองสำหรับการจัดการการดำเนินการที่เกี่ยวข้องกับ Evibes คลาส EvibesViewSet " -"สืบทอดมาจาก ModelViewSet " -"และให้ฟังก์ชันการทำงานสำหรับการจัดการการกระทำและการดำเนินการบนเอนทิตีของ Evibes " -"รวมถึงการรองรับคลาสตัวแปลงแบบไดนามิกตามการกระทำปัจจุบัน การอนุญาตที่ปรับแต่งได้ " -"และรูปแบบการแสดงผล" +"กำหนดชุดมุมมองสำหรับการจัดการการดำเนินการที่เกี่ยวข้องกับ Evibes คลาส " +"EvibesViewSet สืบทอดมาจาก ModelViewSet " +"และให้ฟังก์ชันการทำงานสำหรับการจัดการการกระทำและการดำเนินการบนเอนทิตีของ " +"Evibes รวมถึงการรองรับคลาสตัวแปลงแบบไดนามิกตามการกระทำปัจจุบัน " +"การอนุญาตที่ปรับแต่งได้ และรูปแบบการแสดงผล" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" -"แสดงชุดมุมมองสำหรับการจัดการวัตถุ AttributeGroup ดำเนินการที่เกี่ยวข้องกับ AttributeGroup " -"รวมถึงการกรอง การแปลงข้อมูลเป็นรูปแบบที่ส่งผ่านได้ และการดึงข้อมูล คลาสนี้เป็นส่วนหนึ่งของชั้น " -"API ของแอปพลิเคชันและให้วิธีการมาตรฐานในการประมวลผลคำขอและการตอบสนองสำหรับข้อมูล " -"AttributeGroup" +"แสดงชุดมุมมองสำหรับการจัดการวัตถุ AttributeGroup ดำเนินการที่เกี่ยวข้องกับ " +"AttributeGroup รวมถึงการกรอง การแปลงข้อมูลเป็นรูปแบบที่ส่งผ่านได้ " +"และการดึงข้อมูล คลาสนี้เป็นส่วนหนึ่งของชั้น API " +"ของแอปพลิเคชันและให้วิธีการมาตรฐานในการประมวลผลคำขอและการตอบสนองสำหรับข้อมูล" +" AttributeGroup" #: engine/core/viewsets.py:179 msgid "" @@ -3167,24 +3243,26 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"จัดการการดำเนินการที่เกี่ยวข้องกับวัตถุ Attribute ภายในแอปพลิเคชัน ให้ชุดของจุดสิ้นสุด API " -"สำหรับการโต้ตอบกับข้อมูล Attribute คลาสนี้จัดการการค้นหา การกรอง และการแปลงวัตถุ " -"Attribute เป็นรูปแบบที่อ่านได้ ช่วยให้สามารถควบคุมข้อมูลที่ส่งคืนได้อย่างยืดหยุ่น เช่น " -"การกรองตามฟิลด์เฉพาะ หรือการดึงข้อมูลแบบละเอียดหรือแบบย่อ ขึ้นอยู่กับความต้องการของคำขอ" +"จัดการการดำเนินการที่เกี่ยวข้องกับวัตถุ Attribute ภายในแอปพลิเคชัน " +"ให้ชุดของจุดสิ้นสุด API สำหรับการโต้ตอบกับข้อมูล Attribute " +"คลาสนี้จัดการการค้นหา การกรอง และการแปลงวัตถุ Attribute เป็นรูปแบบที่อ่านได้" +" ช่วยให้สามารถควบคุมข้อมูลที่ส่งคืนได้อย่างยืดหยุ่น เช่น " +"การกรองตามฟิลด์เฉพาะ หรือการดึงข้อมูลแบบละเอียดหรือแบบย่อ " +"ขึ้นอยู่กับความต้องการของคำขอ" #: engine/core/viewsets.py:198 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "ชุดมุมมองสำหรับการจัดการวัตถุ AttributeValue " -"ชุดมุมมองนี้ให้ฟังก์ชันการทำงานสำหรับการแสดงรายการ การดึงข้อมูล การสร้าง การอัปเดต " -"และการลบวัตถุ AttributeValue มันผสานรวมกับกลไกชุดมุมมองของ Django REST Framework " -"และใช้ตัวแปลงข้อมูลที่เหมาะสมสำหรับแต่ละการกระทำ ความสามารถในการกรองข้อมูลมีให้ผ่าน " -"DjangoFilterBackend" +"ชุดมุมมองนี้ให้ฟังก์ชันการทำงานสำหรับการแสดงรายการ การดึงข้อมูล การสร้าง " +"การอัปเดต และการลบวัตถุ AttributeValue มันผสานรวมกับกลไกชุดมุมมองของ Django " +"REST Framework และใช้ตัวแปลงข้อมูลที่เหมาะสมสำหรับแต่ละการกระทำ " +"ความสามารถในการกรองข้อมูลมีให้ผ่าน DjangoFilterBackend" #: engine/core/viewsets.py:217 msgid "" @@ -3195,8 +3273,9 @@ msgid "" "can access specific data." msgstr "" "จัดการมุมมองสำหรับการดำเนินการที่เกี่ยวข้องกับหมวดหมู่ คลาส CategoryViewSet " -"รับผิดชอบในการจัดการการดำเนินการที่เกี่ยวข้องกับโมเดลหมวดหมู่ในระบบ มันรองรับการดึงข้อมูล " -"การกรอง และการแปลงข้อมูลหมวดหมู่เป็นรูปแบบที่ส่งต่อได้ " +"รับผิดชอบในการจัดการการดำเนินการที่เกี่ยวข้องกับโมเดลหมวดหมู่ในระบบ " +"มันรองรับการดึงข้อมูล การกรอง และการแปลงข้อมูลหมวดหมู่เป็นรูปแบบที่ส่งต่อได้" +" " "ชุดมุมมองนี้ยังบังคับใช้สิทธิ์การเข้าถึงเพื่อให้แน่ใจว่าเฉพาะผู้ใช้ที่ได้รับอนุญาตเท่านั้นที่สามารถเข้าถึงข้อมูลเฉพาะได้" #: engine/core/viewsets.py:346 @@ -3206,9 +3285,11 @@ msgid "" "uses Django's ViewSet framework to simplify the implementation of API " "endpoints for Brand objects." msgstr "" -"แทนชุดมุมมองสำหรับการจัดการอินสแตนซ์ของแบรนด์ คลาสนี้ให้ฟังก์ชันการทำงานสำหรับการค้นหา " -"การกรอง และการแปลงออบเจ็กต์แบรนด์เป็นรูปแบบที่ส่งผ่านได้ โดยใช้เฟรมเวิร์ก ViewSet ของ " -"Django เพื่อทำให้การพัฒนาระบบจุดสิ้นสุด API สำหรับออบเจ็กต์แบรนด์เป็นเรื่องง่ายขึ้น" +"แทนชุดมุมมองสำหรับการจัดการอินสแตนซ์ของแบรนด์ " +"คลาสนี้ให้ฟังก์ชันการทำงานสำหรับการค้นหา การกรอง " +"และการแปลงออบเจ็กต์แบรนด์เป็นรูปแบบที่ส่งผ่านได้ โดยใช้เฟรมเวิร์ก ViewSet " +"ของ Django เพื่อทำให้การพัฒนาระบบจุดสิ้นสุด API " +"สำหรับออบเจ็กต์แบรนด์เป็นเรื่องง่ายขึ้น" #: engine/core/viewsets.py:458 msgid "" @@ -3223,8 +3304,8 @@ msgstr "" "จัดการการดำเนินงานที่เกี่ยวข้องกับโมเดล `Product` ในระบบ " "คลาสนี้ให้ชุดมุมมองสำหรับการจัดการผลิตภัณฑ์ รวมถึงการกรอง การแปลงเป็นลำดับ " "และปฏิบัติการบนอินสแตนซ์เฉพาะ มันขยายจาก `EvibesViewSet` " -"เพื่อใช้ฟังก์ชันทั่วไปและผสานรวมกับเฟรมเวิร์ก Django REST สำหรับการดำเนินการ API แบบ " -"RESTful รวมถึงวิธีการสำหรับการดึงรายละเอียดผลิตภัณฑ์ การใช้สิทธิ์ " +"เพื่อใช้ฟังก์ชันทั่วไปและผสานรวมกับเฟรมเวิร์ก Django REST สำหรับการดำเนินการ" +" API แบบ RESTful รวมถึงวิธีการสำหรับการดึงรายละเอียดผลิตภัณฑ์ การใช้สิทธิ์ " "และการเข้าถึงข้อเสนอแนะที่เกี่ยวข้องของผลิตภัณฑ์" #: engine/core/viewsets.py:605 @@ -3235,9 +3316,9 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"แสดงชุดมุมมองสำหรับการจัดการวัตถุ Vendor ชุดมุมมองนี้อนุญาตให้ดึงข้อมูล กรอง และแปลงข้อมูล " -"Vendor เป็นรูปแบบที่อ่านได้ ชุดมุมมองนี้กำหนด queryset การกำหนดค่าตัวกรอง และคลาส " -"serializer ที่ใช้จัดการการดำเนินการต่างๆ " +"แสดงชุดมุมมองสำหรับการจัดการวัตถุ Vendor ชุดมุมมองนี้อนุญาตให้ดึงข้อมูล กรอง" +" และแปลงข้อมูล Vendor เป็นรูปแบบที่อ่านได้ ชุดมุมมองนี้กำหนด queryset " +"การกำหนดค่าตัวกรอง และคลาส serializer ที่ใช้จัดการการดำเนินการต่างๆ " "วัตถุประสงค์ของคลาสนี้คือการให้การเข้าถึงทรัพยากรที่เกี่ยวข้องกับ Vendor " "อย่างมีประสิทธิภาพผ่านกรอบงาน Django REST" @@ -3246,29 +3327,32 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" -"การแสดงชุดมุมมองที่จัดการวัตถุข้อเสนอแนะ คลาสนี้จัดการการดำเนินการที่เกี่ยวข้องกับวัตถุข้อเสนอแนะ " -"รวมถึงการแสดงรายการ การกรอง และการดึงรายละเอียด " -"วัตถุประสงค์ของชุดมุมมองนี้คือการจัดเตรียมตัวแปลงอนุกรมที่แตกต่างกันสำหรับการดำเนินการต่างๆ " -"และจัดการวัตถุข้อเสนอแนะที่เข้าถึงได้บนพื้นฐานของสิทธิ์ มันขยายคลาสพื้นฐาน `EvibesViewSet` " -"และใช้ระบบกรองของ Django สำหรับการสืบค้นข้อมูล" +"การแสดงชุดมุมมองที่จัดการวัตถุข้อเสนอแนะ " +"คลาสนี้จัดการการดำเนินการที่เกี่ยวข้องกับวัตถุข้อเสนอแนะ รวมถึงการแสดงรายการ" +" การกรอง และการดึงรายละเอียด " +"วัตถุประสงค์ของชุดมุมมองนี้คือการจัดเตรียมตัวแปลงอนุกรมที่แตกต่างกันสำหรับการดำเนินการต่างๆ" +" และจัดการวัตถุข้อเสนอแนะที่เข้าถึงได้บนพื้นฐานของสิทธิ์ มันขยายคลาสพื้นฐาน " +"`EvibesViewSet` และใช้ระบบกรองของ Django สำหรับการสืบค้นข้อมูล" #: engine/core/viewsets.py:652 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"ViewSet สำหรับการจัดการคำสั่งซื้อและกิจกรรมที่เกี่ยวข้อง คลาสนี้ให้ฟังก์ชันการทำงานในการดึงข้อมูล " -"แก้ไข และจัดการอ็อบเจ็กต์คำสั่งซื้อ รวมถึงจุดสิ้นสุดต่างๆ สำหรับการจัดการคำสั่งซื้อ เช่น " -"การเพิ่มหรือลบผลิตภัณฑ์ การดำเนินการซื้อสำหรับผู้ใช้ที่ลงทะเบียนและไม่ได้ลงทะเบียน " +"ViewSet สำหรับการจัดการคำสั่งซื้อและกิจกรรมที่เกี่ยวข้อง " +"คลาสนี้ให้ฟังก์ชันการทำงานในการดึงข้อมูล แก้ไข และจัดการอ็อบเจ็กต์คำสั่งซื้อ" +" รวมถึงจุดสิ้นสุดต่างๆ สำหรับการจัดการคำสั่งซื้อ เช่น " +"การเพิ่มหรือลบผลิตภัณฑ์ " +"การดำเนินการซื้อสำหรับผู้ใช้ที่ลงทะเบียนและไม่ได้ลงทะเบียน " "และการดึงคำสั่งซื้อที่รอดำเนินการของผู้ใช้ที่เข้าสู่ระบบปัจจุบัน ViewSet " "ใช้ตัวแปลงข้อมูลหลายแบบตามการกระทำที่เฉพาะเจาะจงและบังคับใช้สิทธิ์การเข้าถึงอย่างเหมาะสมขณะโต้ตอบกับข้อมูลคำสั่งซื้อ" @@ -3276,15 +3360,16 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" -"ให้ชุดมุมมองสำหรับการจัดการเอนทิตี OrderProduct ชุดมุมมองนี้ช่วยให้สามารถดำเนินการ CRUD " -"และดำเนินการเฉพาะที่เกี่ยวกับโมเดล OrderProduct รวมถึงการกรอง การตรวจสอบสิทธิ์ " +"ให้ชุดมุมมองสำหรับการจัดการเอนทิตี OrderProduct " +"ชุดมุมมองนี้ช่วยให้สามารถดำเนินการ CRUD และดำเนินการเฉพาะที่เกี่ยวกับโมเดล " +"OrderProduct รวมถึงการกรอง การตรวจสอบสิทธิ์ " "และการสลับตัวแปลงตามการดำเนินการที่ร้องขอ " -"นอกจากนี้ยังมีรายละเอียดการดำเนินการสำหรับการจัดการข้อเสนอแนะเกี่ยวกับอินสแตนซ์ของ " -"OrderProduct" +"นอกจากนี้ยังมีรายละเอียดการดำเนินการสำหรับการจัดการข้อเสนอแนะเกี่ยวกับอินสแตนซ์ของ" +" OrderProduct" #: engine/core/viewsets.py:974 msgid "Manages operations related to Product images in the application. " @@ -3294,7 +3379,8 @@ msgstr "จัดการการดำเนินงานที่เกี msgid "" "Manages the retrieval and handling of PromoCode instances through various " "API actions." -msgstr "จัดการการดึงและการจัดการของตัวอย่าง PromoCode ผ่านการกระทำของ API ต่าง ๆ" +msgstr "" +"จัดการการดึงและการจัดการของตัวอย่าง PromoCode ผ่านการกระทำของ API ต่าง ๆ" #: engine/core/viewsets.py:1019 msgid "Represents a view set for managing promotions. " @@ -3308,18 +3394,19 @@ msgstr "จัดการการดำเนินงานที่เกี msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" -"ViewSet สำหรับการจัดการการดำเนินการในรายการที่ต้องการ (Wishlist) WishlistViewSet " -"ให้จุดเชื่อมต่อสำหรับการโต้ตอบกับรายการที่ต้องการของผู้ใช้ ซึ่งช่วยให้สามารถดึงข้อมูล แก้ไข " -"และปรับแต่งผลิตภัณฑ์ในรายการที่ต้องการได้ ViewSet นี้อำนวยความสะดวกในการทำงาน เช่น " -"การเพิ่ม การลบ และการดำเนินการแบบกลุ่มสำหรับผลิตภัณฑ์ในรายการที่ต้องการ " -"มีการตรวจสอบสิทธิ์เพื่อรับรองว่าผู้ใช้สามารถจัดการรายการที่ต้องการของตนเองเท่านั้น " -"เว้นแต่จะได้รับสิทธิ์อนุญาตอย่างชัดเจน" +"ViewSet สำหรับการจัดการการดำเนินการในรายการที่ต้องการ (Wishlist) " +"WishlistViewSet ให้จุดเชื่อมต่อสำหรับการโต้ตอบกับรายการที่ต้องการของผู้ใช้ " +"ซึ่งช่วยให้สามารถดึงข้อมูล แก้ไข และปรับแต่งผลิตภัณฑ์ในรายการที่ต้องการได้ " +"ViewSet นี้อำนวยความสะดวกในการทำงาน เช่น การเพิ่ม การลบ " +"และการดำเนินการแบบกลุ่มสำหรับผลิตภัณฑ์ในรายการที่ต้องการ " +"มีการตรวจสอบสิทธิ์เพื่อรับรองว่าผู้ใช้สามารถจัดการรายการที่ต้องการของตนเองเท่านั้น" +" เว้นแต่จะได้รับสิทธิ์อนุญาตอย่างชัดเจน" #: engine/core/viewsets.py:1183 msgid "" @@ -3331,8 +3418,9 @@ msgid "" msgstr "" "คลาสนี้ให้ฟังก์ชันการทำงานของ viewset สำหรับจัดการออบเจ็กต์ `Address` คลาส " "AddressViewSet ช่วยให้สามารถดำเนินการ CRUD การกรอง " -"และการดำเนินการที่กำหนดเองที่เกี่ยวข้องกับเอนทิตีที่อยู่ รวมถึงพฤติกรรมเฉพาะสำหรับวิธีการ HTTP " -"ที่แตกต่างกัน การแทนที่ตัวแปลงข้อมูล และการจัดการสิทธิ์ตามบริบทของคำขอ" +"และการดำเนินการที่กำหนดเองที่เกี่ยวข้องกับเอนทิตีที่อยู่ " +"รวมถึงพฤติกรรมเฉพาะสำหรับวิธีการ HTTP ที่แตกต่างกัน การแทนที่ตัวแปลงข้อมูล " +"และการจัดการสิทธิ์ตามบริบทของคำขอ" #: engine/core/viewsets.py:1254 #, python-brace-format diff --git a/engine/core/locale/tr_TR/LC_MESSAGES/django.mo b/engine/core/locale/tr_TR/LC_MESSAGES/django.mo index 946c8d512f53f68055d2dc2c535816ec6342d4a7..d17dc07fd2fb9a15f22275f9fa634401a670bca9 100644 GIT binary patch delta 14859 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 Hqw@a&OY6Bi delta 14681 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 diff --git a/engine/core/locale/tr_TR/LC_MESSAGES/django.po b/engine/core/locale/tr_TR/LC_MESSAGES/django.po index ecb7e01e..19ecc291 100644 --- a/engine/core/locale/tr_TR/LC_MESSAGES/django.po +++ b/engine/core/locale/tr_TR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Aktif mi" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "false olarak ayarlanırsa, bu nesne gerekli izne sahip olmayan kullanıcılar " "tarafından görülemez" @@ -74,65 +75,65 @@ msgstr "Metadata" msgid "timestamps" msgstr "Zaman Damgaları" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Seçili %(verbose_name_plural)s'ı etkinleştirin" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Seçilen öğeler etkinleştirildi!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Seçili %(verbose_name_plural)s'ı devre dışı bırak" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Seçilen öğeler devre dışı bırakıldı!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Öznitelik Değeri" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Öznitelik Değerleri" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Resim" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Görüntüler" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Stok" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Stoklar" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Ürün Siparişi" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Sipariş Ürünleri" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Çocuklar" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Konfigürasyon" @@ -156,7 +157,8 @@ msgstr "Teslim edildi" msgid "canceled" msgstr "İptal edildi" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Başarısız" @@ -197,49 +199,48 @@ msgstr "" "Bu API için OpenApi3 şeması. Format, içerik anlaşması yoluyla seçilebilir. " "Dil, hem Accept-Language hem de sorgu parametresi ile seçilebilir." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Önbellek I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -"Önbellekten izin verilen verileri okumak için yalnızca bir anahtar " -"uygulayın.\n" -"Önbelleğe veri yazmak için kimlik doğrulama ile anahtar, veri ve zaman aşımı " -"uygulayın." +"Önbellekten izin verilen verileri okumak için yalnızca bir anahtar uygulayın.\n" +"Önbelleğe veri yazmak için kimlik doğrulama ile anahtar, veri ve zaman aşımı uygulayın." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Desteklenen dillerin bir listesini alın" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Uygulamanın açığa çıkarılabilir parametrelerini alın" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Destek ekibine bir mesaj gönderin" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "CORS'lu bir URL isteyin. Yalnızca https'ye izin verilir." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Ürünler, kategoriler ve markalar arasında arama" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" -msgstr "Proje tabloları arasında sorgulama yapmak için global arama uç noktası" +msgstr "" +"Proje tabloları arasında sorgulama yapmak için global arama uç noktası" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "İşletme olarak bir sipariş satın alın" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -247,7 +248,7 @@ msgstr "" "Sağlanan `products` ile `product_uuid` ve `attributes` öğelerini kullanarak " "bir siparişi işletme olarak satın alın." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "satın alınan dijital siparişten bir dijital varlık indirme" @@ -273,10 +274,11 @@ msgstr "" "Düzenlenemeyenleri kaydederek mevcut bir öznitelik grubunu yeniden yazma" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" -"Mevcut bir öznitelik grubunun bazı alanlarını düzenlenemez olarak kaydederek " -"yeniden yazın" +"Mevcut bir öznitelik grubunun bazı alanlarını düzenlenemez olarak kaydederek" +" yeniden yazın" #: engine/core/docs/drf/viewsets.py:118 msgid "list all attributes (simple view)" @@ -326,10 +328,11 @@ msgstr "" "Düzenlenemeyenleri kaydederek mevcut bir öznitelik değerini yeniden yazma" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" -"Mevcut bir öznitelik değerinin bazı alanlarını düzenlenemeyenleri kaydederek " -"yeniden yazın" +"Mevcut bir öznitelik değerinin bazı alanlarını düzenlenemeyenleri kaydederek" +" yeniden yazın" #: engine/core/docs/drf/viewsets.py:219 engine/core/docs/drf/viewsets.py:220 msgid "list all categories (simple view)" @@ -363,9 +366,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO Meta anlık görüntüsü" @@ -384,11 +387,12 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"human_readable_id, order_products.product.name ve order_products.product." -"partnumber arasında büyük/küçük harfe duyarlı olmayan alt dize araması" +"human_readable_id, order_products.product.name ve " +"order_products.product.partnumber arasında büyük/küçük harfe duyarlı olmayan" +" alt dize araması" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -420,14 +424,14 @@ msgstr "Kullanıcının UUID'sine göre filtreleme" #: engine/core/docs/drf/viewsets.py:347 msgid "Filter by order status (case-insensitive substring match)" msgstr "" -"Sipariş durumuna göre filtreleme (büyük/küçük harfe duyarlı olmayan alt dize " -"eşleşmesi)" +"Sipariş durumuna göre filtreleme (büyük/küçük harfe duyarlı olmayan alt dize" +" eşleşmesi)" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Şunlardan birine göre sıralayın: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. Azalan için '-' ile önekleyin " @@ -473,8 +477,8 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"Sipariş alımını sonuçlandırır. Eğer `force_balance` kullanılırsa, satın alma " -"işlemi kullanıcının bakiyesi kullanılarak tamamlanır; Eğer `force_payment` " +"Sipariş alımını sonuçlandırır. Eğer `force_balance` kullanılırsa, satın alma" +" işlemi kullanıcının bakiyesi kullanılarak tamamlanır; Eğer `force_payment` " "kullanılırsa, bir işlem başlatılır." #: engine/core/docs/drf/viewsets.py:427 @@ -485,7 +489,7 @@ msgstr "Bir kullanıcının mevcut bekleyen siparişini al" msgid "retrieves a current pending order of an authenticated user" msgstr "kimliği doğrulanmış bir kullanıcının mevcut bekleyen siparişini alır" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "hesap oluşturmadan sipariş satın alma" @@ -549,7 +553,8 @@ msgstr "Tüm öznitelikleri listele (basit görünüm)" #: engine/core/docs/drf/viewsets.py:498 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -"Personel olmayan kullanıcılar için yalnızca kendi istek listeleri döndürülür." +"Personel olmayan kullanıcılar için yalnızca kendi istek listeleri " +"döndürülür." #: engine/core/docs/drf/viewsets.py:508 msgid "retrieve a single wishlist (detailed view)" @@ -630,28 +635,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Bir veya daha fazla öznitelik adı/değer çiftine göre filtreleyin. \n" "- Sözdizimi**: `attr_name=method-value[;attr2=method2-value2]...`\n" -"- **Metotlar** (atlanırsa varsayılan olarak `icontains` olur): `iexact`, " -"`exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, " -"`endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- Değer tipleme**: JSON ilk olarak denenir (böylece listeleri/dicts'leri " -"geçirebilirsiniz), booleanlar, tamsayılar, floatlar için `true`/`false`; " -"aksi takdirde string olarak ele alınır. \n" -"- **Base64**: ham değeri URL güvenli base64 kodlamak için `b64-` ile " -"önekleyin. \n" +"- **Metotlar** (atlanırsa varsayılan olarak `icontains` olur): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- Değer tipleme**: JSON ilk olarak denenir (böylece listeleri/dicts'leri geçirebilirsiniz), booleanlar, tamsayılar, floatlar için `true`/`false`; aksi takdirde string olarak ele alınır. \n" +"- **Base64**: ham değeri URL güvenli base64 kodlamak için `b64-` ile önekleyin. \n" "Örnekler: \n" "color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" @@ -666,14 +661,11 @@ msgstr "(tam) Ürün UUID'si" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Sıralanacak alanların virgülle ayrılmış listesi. Azalan için `-` ile ön " -"ek. \n" -"**İzin verilenler:** uuid, derecelendirme, ad, slug, oluşturuldu, " -"değiştirildi, fiyat, rastgele" +"Sıralanacak alanların virgülle ayrılmış listesi. Azalan için `-` ile ön ek. \n" +"**İzin verilenler:** uuid, derecelendirme, ad, slug, oluşturuldu, değiştirildi, fiyat, rastgele" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "retrieve a single product (detailed view)" @@ -686,9 +678,6 @@ msgid "Product UUID or slug" msgstr "Ürün UUID'si veya Slug" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Bir ürün oluşturun" @@ -993,8 +982,8 @@ msgstr "" "Mevcut bir kategorinin bazı alanlarını düzenlenemez olarak kaydederek " "yeniden yazın" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Arama terimi belirtilmemiştir." @@ -1003,8 +992,8 @@ msgstr "Arama terimi belirtilmemiştir." msgid "Search" msgstr "Arama" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1050,8 +1039,8 @@ msgid "Quantity" msgstr "Miktar" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Sümüklüböcek" @@ -1067,7 +1056,7 @@ msgstr "Alt kategorileri dahil edin" msgid "Include personal ordered" msgstr "Kişisel sipariş edilen ürünleri dahil edin" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1089,12 +1078,12 @@ msgid "Bought before (inclusive)" msgstr "Daha önce satın alındı (dahil)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "Kullanıcı e-postası" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "Kullanıcı UUID'si" @@ -1118,253 +1107,254 @@ msgstr "Tüm kategori (en az 1 ürün var veya yok)" msgid "Level" msgstr "Seviye" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "Ürün UUID'si" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Önbellekte aranacak veya önbelleğe yerleştirilecek anahtar" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Önbellekte depolanacak veriler" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Verileri önbelleğe almak için saniye cinsinden zaman aşımı" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Önbelleğe alınmış veriler" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "İstenen URL'den kameleştirilmiş JSON verileri" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Yalnızca http(s):// ile başlayan URL'lere izin verilir" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Siparişe ürün ekleme" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Sipariş {order_uuid} bulunamadı!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Siparişten bir ürünü kaldırma" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Siparişten tüm ürünleri kaldırın" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Bir sipariş satın alın" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -"Lütfen order_uuid veya order_hr_id bilgilerinden birini sağlayın - birbirini " -"dışlayan bilgiler!" +"Lütfen order_uuid veya order_hr_id bilgilerinden birini sağlayın - birbirini" +" dışlayan bilgiler!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy() metodundan yanlış tip geldi: {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Siparişteki ürünlerin listesi üzerinde bir eylem gerçekleştirin" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Kaldır/Ekle" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Eylem ya \"ekle\" ya da \"kaldır\" olmalıdır!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "İstek listesindeki bir ürün listesi üzerinde eylem gerçekleştirme" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Lütfen `wishlist_uuid` değerini girin." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "İstek listesi {wishlist_uuid} bulunamadı!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Siparişe ürün ekleme" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Siparişten bir ürünü kaldırma" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Siparişten bir ürünü kaldırma" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Siparişten bir ürünü kaldırma" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Bir sipariş satın alın" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Lütfen öznitelikleri attr1=value1,attr2=value2 şeklinde biçimlendirilmiş " "dize olarak gönderin" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Orderproduct için bir geri bildirim ekleme veya silme" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Eylem ya `ekle` ya da `kaldır` olmalıdır!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Orderproduct {order_product_uuid} bulunamadı!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Kullanıcı tarafından sağlanan orijinal adres dizesi" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} mevcut değil: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Limit 1 ile 10 arasında olmalıdır" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - bir cazibe gibi çalışır" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Nitelikler" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Gruplandırılmış nitelikler" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Nitelik grupları" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Kategoriler" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Markalar" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Kategoriler" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "İşaretleme Yüzdesi" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Bu kategoriyi filtrelemek için hangi nitelikler ve değerler kullanılabilir." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "Varsa, bu kategorideki ürünler için minimum ve maksimum fiyatlar." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Bu kategori için etiketler" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Bu kategorideki ürünler" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Satıcılar" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Enlem (Y koordinatı)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Boylam (X koordinatı)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Nasıl yapılır" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "1'den 10'a kadar (dahil) derecelendirme değeri veya ayarlanmamışsa 0." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Bir kullanıcıdan gelen geri bildirimi temsil eder." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Bildirimler" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Varsa, bu sipariş ürünü için URL'yi indirin" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Geri bildirim" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Bu siparişteki sipariş ürünlerinin bir listesi" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Fatura adresi" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1372,53 +1362,53 @@ msgstr "" "Bu sipariş için sevkiyat adresi, fatura adresi ile aynıysa veya geçerli " "değilse boş bırakın" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Bu siparişin toplam fiyatı" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Siparişteki toplam ürün miktarı" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Siparişteki tüm ürünler dijital mi" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Bu sipariş için işlemler" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Siparişler" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "Resim URL'si" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Ürün görselleri" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Kategori" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Geri Bildirimler" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Marka" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Öznitelik grupları" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1426,7 +1416,7 @@ msgstr "Öznitelik grupları" msgid "price" msgstr "Fiyat" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1434,39 +1424,39 @@ msgstr "Fiyat" msgid "quantity" msgstr "Miktar" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Geri bildirim sayısı" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Ürünler sadece kişisel siparişler için mevcuttur" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "İndirimli fiyat" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Ürünler" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Promosyon Kodları" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Satıştaki ürünler" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Promosyonlar" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Satıcı" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1474,98 +1464,98 @@ msgstr "Satıcı" msgid "product" msgstr "Ürün" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "İstek listesindeki ürünler" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Dilek Listeleri" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Etiketlenmiş ürünler" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Ürün etiketleri" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Etiketlenmiş kategoriler" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Kategoriler' etiketleri" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Proje adı" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Şirket Adı" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Şirket Adresi" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Şirket Telefon Numarası" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from', bazen ana kullanıcı değeri yerine kullanılmalıdır" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "E-posta ana kullanıcısı" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Ödeme için maksimum tutar" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Ödeme için minimum tutar" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Analitik veriler" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Reklam verileri" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Konfigürasyon" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Dil kodu" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Dil adı" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Dil bayrağı, eğer varsa :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Desteklenen dillerin bir listesini alın" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Ürünler arama sonuçları" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Ürünler arama sonuçları" @@ -1578,27 +1568,27 @@ msgid "" msgstr "" "Hiyerarşik olabilen bir öznitelik grubunu temsil eder. Bu sınıf, öznitelik " "gruplarını yönetmek ve düzenlemek için kullanılır. Bir öznitelik grubu, " -"hiyerarşik bir yapı oluşturan bir üst gruba sahip olabilir. Bu, karmaşık bir " -"sistemde öznitelikleri daha etkili bir şekilde kategorize etmek ve yönetmek " -"için yararlı olabilir." +"hiyerarşik bir yapı oluşturan bir üst gruba sahip olabilir. Bu, karmaşık bir" +" sistemde öznitelikleri daha etkili bir şekilde kategorize etmek ve yönetmek" +" için yararlı olabilir." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Bu grubun ebeveyni" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Üst öznitelik grubu" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Öznitelik grubunun adı" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Öznitelik grubu" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1610,55 +1600,55 @@ msgid "" msgstr "" "Harici satıcılar ve bunların etkileşim gereksinimleri hakkında bilgi " "depolayabilen bir satıcı varlığını temsil eder. Satıcı sınıfı, harici bir " -"satıcıyla ilgili bilgileri tanımlamak ve yönetmek için kullanılır. Satıcının " -"adını, iletişim için gereken kimlik doğrulama ayrıntılarını ve satıcıdan " +"satıcıyla ilgili bilgileri tanımlamak ve yönetmek için kullanılır. Satıcının" +" adını, iletişim için gereken kimlik doğrulama ayrıntılarını ve satıcıdan " "alınan ürünlere uygulanan yüzde işaretlemesini saklar. Bu model ayrıca ek " "meta verileri ve kısıtlamaları da muhafaza ederek üçüncü taraf satıcılarla " "etkileşime giren sistemlerde kullanıma uygun hale getirir." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Satıcının API iletişimi için gerekli kimlik bilgilerini ve uç noktaları " "depolar" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Kimlik doğrulama bilgisi" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "Bu satıcıdan alınan ürünler için işaretlemeyi tanımlayın" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Satıcı kar payı yüzdesi" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Bu satıcının adı" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Satıcı adı" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "yanıt dosyası" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "satıcının son işlem yanıtı" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Satıcının entegrasyon dosya yolu" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Entegrasyon yolu" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1667,33 +1657,33 @@ msgid "" "metadata customization for administrative purposes." msgstr "" "Ürünleri sınıflandırmak veya tanımlamak için kullanılan bir ürün etiketini " -"temsil eder. ProductTag sınıfı, dahili bir etiket tanımlayıcısı ve kullanıcı " -"dostu bir ekran adı kombinasyonu aracılığıyla ürünleri benzersiz bir şekilde " -"tanımlamak ve sınıflandırmak için tasarlanmıştır. Mixin'ler aracılığıyla " -"dışa aktarılan işlemleri destekler ve yönetimsel amaçlar için meta veri " -"özelleştirmesi sağlar." +"temsil eder. ProductTag sınıfı, dahili bir etiket tanımlayıcısı ve kullanıcı" +" dostu bir ekran adı kombinasyonu aracılığıyla ürünleri benzersiz bir " +"şekilde tanımlamak ve sınıflandırmak için tasarlanmıştır. Mixin'ler " +"aracılığıyla dışa aktarılan işlemleri destekler ve yönetimsel amaçlar için " +"meta veri özelleştirmesi sağlar." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Ürün etiketi için dahili etiket tanımlayıcısı" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Etiket adı" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Ürün etiketi için kullanıcı dostu ad" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Etiket görünen adı" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Ürün etiketi" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1704,15 +1694,15 @@ msgstr "" "kategori etiketini modeller. Dahili bir etiket tanımlayıcısı ve kullanıcı " "dostu bir ekran adı için öznitelikler içerir." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "kategori etiketi" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "kategori etiketleri" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1726,64 +1716,65 @@ msgid "" msgstr "" "İlgili öğeleri hiyerarşik bir yapıda düzenlemek ve gruplamak için bir " "kategori varlığını temsil eder. Kategoriler, ebeveyn-çocuk ilişkilerini " -"destekleyen diğer kategorilerle hiyerarşik ilişkilere sahip olabilir. Sınıf, " -"kategoriyle ilgili özellikler için bir temel görevi gören meta veri ve " +"destekleyen diğer kategorilerle hiyerarşik ilişkilere sahip olabilir. Sınıf," +" kategoriyle ilgili özellikler için bir temel görevi gören meta veri ve " "görsel temsil alanları içerir. Bu sınıf genellikle bir uygulama içinde ürün " "kategorilerini veya diğer benzer gruplamaları tanımlamak ve yönetmek için " "kullanılır ve kullanıcıların veya yöneticilerin kategorilerin adını, " "açıklamasını ve hiyerarşisini belirlemesinin yanı sıra resimler, etiketler " "veya öncelik gibi öznitelikler atamasına olanak tanır." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Bu kategoriyi temsil eden bir resim yükleyin" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Kategori görüntüsü" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Bu kategorideki ürünler için bir fiyatlandırma yüzdesi tanımlayın" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Hiyerarşik bir yapı oluşturmak için bu kategorinin üst öğesi" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Ana kategori" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Kategori adı" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Bu kategori için bir ad girin" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Bu kategori için ayrıntılı bir açıklama ekleyin" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Kategori açıklaması" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "bu kategoriyi tanımlamaya veya gruplandırmaya yardımcı olan etiketler" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Öncelik" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Sistemdeki bir Marka nesnesini temsil eder. Bu sınıf, adı, logoları, " "açıklaması, ilişkili kategorileri, benzersiz bir slug ve öncelik sırası " @@ -1791,50 +1782,50 @@ msgstr "" "Uygulama içinde markayla ilgili verilerin düzenlenmesini ve temsil " "edilmesini sağlar." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Bu markanın adı" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Marka adı" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Bu markayı temsil eden bir logo yükleyin" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Marka küçük imajı" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Bu markayı temsil eden büyük bir logo yükleyin" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Marka büyük imaj" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Markanın ayrıntılı bir açıklamasını ekleyin" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Marka açıklaması" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Bu markanın ilişkili olduğu isteğe bağlı kategoriler" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Kategoriler" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1843,76 +1834,76 @@ msgstr "" "Sistemde yönetilen bir ürünün stokunu temsil eder. Bu sınıf, satıcılar, " "ürünler ve bunların stok bilgileri arasındaki ilişkinin yanı sıra fiyat, " "satın alma fiyatı, miktar, SKU ve dijital varlıklar gibi envanterle ilgili " -"özellikler hakkında ayrıntılar sağlar. Çeşitli satıcılardan temin edilebilen " -"ürünlerin izlenmesine ve değerlendirilmesine olanak sağlamak için envanter " +"özellikler hakkında ayrıntılar sağlar. Çeşitli satıcılardan temin edilebilen" +" ürünlerin izlenmesine ve değerlendirilmesine olanak sağlamak için envanter " "yönetim sisteminin bir parçasıdır." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Bu ürün stokunu tedarik eden satıcı" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "İlişkili satıcı" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Fiyat artışlarından sonra müşteriye verilen nihai fiyat" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Satış fiyatı" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Bu stok girişi ile ilişkili ürün" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "İlişkili ürün" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Bu ürün için satıcıya ödenen fiyat" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Satıcı satın alma fiyatı" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Stoktaki mevcut ürün miktarı" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Stoktaki miktar" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "Ürünü tanımlamak için satıcı tarafından atanan SKU" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "Satıcının SKU'su" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Varsa bu stokla ilişkili dijital dosya" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Dijital dosya" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Sistem nitelikleri" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Stok girişleri" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1933,61 +1924,70 @@ msgstr "" "yönetir. Bir uygulama içinde ürün verilerini ve ilişkili bilgileri " "tanımlamak ve işlemek için kullanılır." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Bu ürünün ait olduğu kategori" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "İsteğe bağlı olarak bu ürünü bir marka ile ilişkilendirin" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Bu ürünü tanımlamaya veya gruplandırmaya yardımcı olan etiketler" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Bu ürünün dijital olarak teslim edilip edilmediğini belirtir" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Ürün dijital mi" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" +"bu ürünün periyodik görevden güncellenmesi gerekip gerekmediğini belirtir" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "ürün güncellenebilir mi" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Ürün için net bir tanımlayıcı isim sağlayın" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Ürün adı" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Ürünün ayrıntılı bir açıklamasını ekleyin" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Ürün Açıklaması" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Bu ürün için parça numarası" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Parça numarası" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Bu ürün için Stok Tutma Birimi" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Sistemdeki bir özniteliği temsil eder. Bu sınıf, diğer varlıklarla " @@ -1997,140 +1997,140 @@ msgstr "" "tamsayı, float, boolean, dizi ve nesne dahil olmak üzere birden fazla değer " "türünü destekler. Bu, dinamik ve esnek veri yapılandırmasına olanak tanır." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Bu niteliğin grubu" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "String" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Tamsayı" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Yüzer" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Boolean" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Dizi" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Nesne" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Özniteliğin değerinin türü" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Değer türü" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Bu niteliğin adı" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Özniteliğin adı" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "filtrelenebilir" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Bu kategoriyi filtrelemek için hangi nitelikler ve değerler kullanılabilir." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Öznitelik" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Bir ürünle bağlantılı bir nitelik için belirli bir değeri temsil eder. " "'Niteliği' benzersiz bir 'değere' bağlayarak ürün özelliklerinin daha iyi " "düzenlenmesine ve dinamik olarak temsil edilmesine olanak tanır." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Bu değerin niteliği" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Bu özniteliğin değeriyle ilişkili belirli ürün" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Bu öznitelik için özel değer" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Sistemdeki bir ürünle ilişkilendirilmiş bir ürün resmini temsil eder. Bu " -"sınıf, görüntü dosyalarını yükleme, bunları belirli ürünlerle ilişkilendirme " -"ve görüntüleme sıralarını belirleme işlevleri dahil olmak üzere ürün " +"sınıf, görüntü dosyalarını yükleme, bunları belirli ürünlerle ilişkilendirme" +" ve görüntüleme sıralarını belirleme işlevleri dahil olmak üzere ürün " "görüntülerini yönetmek için tasarlanmıştır. Ayrıca görüntüler için " "alternatif metin içeren bir erişilebilirlik özelliği de içerir." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Erişilebilirlik için görüntü için alternatif metin sağlayın" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Resim alt metni" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Bu ürün için resim dosyasını yükleyin" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Ürün görseli" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Görüntülerin görüntülenme sırasını belirler" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Ekran önceliği" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Bu görselin temsil ettiği ürün" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Ürün görselleri" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "İndirimli ürünler için bir promosyon kampanyasını temsil eder. Bu sınıf, " "ürünler için yüzdeye dayalı bir indirim sunan promosyon kampanyalarını " @@ -2139,167 +2139,167 @@ msgstr "" "öznitelikler içerir. Kampanyadaki etkilenen ürünleri belirlemek için ürün " "kataloğu ile entegre olur." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Seçilen ürünler için yüzde indirim" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "İndirim yüzdesi" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Bu promosyon için benzersiz bir ad girin" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Promosyon adı" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Promosyon açıklaması" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Bu promosyona hangi ürünlerin dahil olduğunu seçin" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Dahil olan ürünler" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Promosyon" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"İstenen ürünleri depolamak ve yönetmek için bir kullanıcının istek listesini " -"temsil eder. Sınıf, bir ürün koleksiyonunu yönetmek için işlevsellik sağlar, " -"ürün ekleme ve kaldırma gibi işlemlerin yanı sıra aynı anda birden fazla " -"ürün ekleme ve kaldırma işlemlerini destekler." +"İstenen ürünleri depolamak ve yönetmek için bir kullanıcının istek listesini" +" temsil eder. Sınıf, bir ürün koleksiyonunu yönetmek için işlevsellik " +"sağlar, ürün ekleme ve kaldırma gibi işlemlerin yanı sıra aynı anda birden " +"fazla ürün ekleme ve kaldırma işlemlerini destekler." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Kullanıcının aranıyor olarak işaretlediği ürünler" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Bu istek listesine sahip olan kullanıcı" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Dilek Listesi Sahibi" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "İstek Listesi" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Bir ürüne bağlı bir belgesel kaydını temsil eder. Bu sınıf, dosya " "yüklemeleri ve meta verileri dahil olmak üzere belirli ürünlerle ilgili " "belgeseller hakkında bilgi depolamak için kullanılır. Belgesel dosyalarının " -"dosya türünü ve depolama yolunu işlemek için yöntemler ve özellikler içerir. " -"Belirli mixin'lerin işlevselliğini genişletir ve ek özel özellikler sağlar." +"dosya türünü ve depolama yolunu işlemek için yöntemler ve özellikler içerir." +" Belirli mixin'lerin işlevselliğini genişletir ve ek özel özellikler sağlar." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Belgesel" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Belgeseller" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Çözümlenmemiş" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Konum ayrıntılarını ve bir kullanıcıyla ilişkileri içeren bir adres " -"varlığını temsil eder. Coğrafi ve adres verilerinin depolanmasının yanı sıra " -"coğrafi kodlama hizmetleriyle entegrasyon için işlevsellik sağlar. Bu sınıf, " -"sokak, şehir, bölge, ülke ve coğrafi konum (enlem ve boylam) gibi " +"varlığını temsil eder. Coğrafi ve adres verilerinin depolanmasının yanı sıra" +" coğrafi kodlama hizmetleriyle entegrasyon için işlevsellik sağlar. Bu " +"sınıf, sokak, şehir, bölge, ülke ve coğrafi konum (enlem ve boylam) gibi " "bileşenleri içeren ayrıntılı adres bilgilerini depolamak için " "tasarlanmıştır. Coğrafi kodlama API'leri ile entegrasyonu destekler ve daha " "fazla işleme veya inceleme için ham API yanıtlarının depolanmasını sağlar. " "Sınıf ayrıca bir adresin bir kullanıcıyla ilişkilendirilmesine olanak " "tanıyarak kişiselleştirilmiş veri işlemeyi kolaylaştırır." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Müşteri için adres satırı" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Adres hattı" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Sokak" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Bölge" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Şehir" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Bölge" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Posta kodu" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Ülke" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Coğrafi Konum Noktası(Boylam, Enlem)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Bu adres için geocoder'dan alınan tam JSON yanıtı" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Coğrafi kodlama hizmetinden depolanan JSON yanıtı" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Adres" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adresler" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2316,73 +2316,74 @@ msgstr "" "karşılandığından emin olurken promosyon kodunu doğrulamak ve siparişe " "uygulamak için işlevsellik içerir." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "" -"Bir kullanıcı tarafından indirimden yararlanmak için kullanılan benzersiz kod" +"Bir kullanıcı tarafından indirimden yararlanmak için kullanılan benzersiz " +"kod" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Promosyon kodu tanımlayıcı" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Yüzde kullanılmazsa uygulanan sabit indirim tutarı" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Sabit iskonto tutarı" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Sabit tutar kullanılmazsa uygulanan yüzde indirimi" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Yüzde indirim" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Promosyon kodunun sona erdiği zaman damgası" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Geçerlilik süresi sonu" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Bu promosyon kodunun geçerli olduğu zaman damgası" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Geçerlilik süresini başlat" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Promosyon kodunun kullanıldığı zaman damgası, henüz kullanılmadıysa boş" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Kullanım zaman damgası" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Varsa bu promosyon koduna atanan kullanıcı" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Atanmış kullanıcı" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Promosyon kodu" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Promosyon kodları" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2390,162 +2391,163 @@ msgstr "" "Sadece bir indirim türü (tutar veya yüzde) tanımlanmalı, ikisi birden veya " "hiçbiri tanımlanmamalıdır." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Promosyon kodu zaten kullanılmış" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Promosyon kodu {self.uuid} için geçersiz indirim türü!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Bir kullanıcı tarafından verilen bir siparişi temsil eder. Bu sınıf, fatura " "ve kargo bilgileri, durum, ilişkili kullanıcı, bildirimler ve ilgili " "işlemler gibi çeşitli öznitelikleri dahil olmak üzere uygulama içinde bir " -"siparişi modeller. Siparişler ilişkili ürünlere sahip olabilir, promosyonlar " -"uygulanabilir, adresler ayarlanabilir ve kargo veya fatura ayrıntıları " +"siparişi modeller. Siparişler ilişkili ürünlere sahip olabilir, promosyonlar" +" uygulanabilir, adresler ayarlanabilir ve kargo veya fatura ayrıntıları " "güncellenebilir. Aynı şekilde işlevsellik, sipariş yaşam döngüsündeki " "ürünlerin yönetilmesini de destekler." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Bu sipariş için kullanılan fatura adresi" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Bu siparişe isteğe bağlı promosyon kodu uygulanır" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Uygulanan promosyon kodu" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Bu sipariş için kullanılan gönderim adresi" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Nakliye adresi" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Siparişin yaşam döngüsündeki mevcut durumu" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Sipariş durumu" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "Kullanıcılara gösterilecek bildirimlerin JSON yapısı, yönetici kullanıcı " "arayüzünde tablo görünümü kullanılır" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "Bu sipariş için sipariş özniteliklerinin JSON gösterimi" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "Siparişi veren kullanıcı" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Kullanıcı" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Siparişin sonlandırıldığı zaman damgası" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Zaman satın alın" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Sipariş için insan tarafından okunabilir bir tanımlayıcı" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "insan tarafından okunabilir kimlik" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Sipariş" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "Bir kullanıcı aynı anda yalnızca bir bekleyen emre sahip olmalıdır!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "Beklemede olmayan bir siparişe ürün ekleyemezsiniz" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Aktif olmayan ürünleri siparişe ekleyemezsiniz" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "Stokta mevcut olandan daha fazla ürün ekleyemezsiniz" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "Beklemede olmayan bir siparişten ürün kaldıramazsınız" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} <{query}> sorgusu ile mevcut değil!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Promosyon kodu mevcut değil" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" "Fiziksel ürünleri yalnızca gönderim adresi belirtilerek satın alabilirsiniz!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Adres mevcut değil" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" -msgstr "Şu anda satın alamazsınız, lütfen birkaç dakika içinde tekrar deneyin." +msgstr "" +"Şu anda satın alamazsınız, lütfen birkaç dakika içinde tekrar deneyin." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Geçersiz kuvvet değeri" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Boş bir sipariş satın alamazsınız!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "Kullanıcı olmadan sipariş alamazsınız!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Bakiyesi olmayan bir kullanıcı bakiye ile satın alamaz!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Siparişi tamamlamak için yeterli fon yok" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2553,14 +2555,14 @@ msgstr "" "kayıt olmadan satın alamazsınız, lütfen aşağıdaki bilgileri sağlayın: " "müşteri adı, müşteri e-postası, müşteri telefon numarası" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Geçersiz ödeme yöntemi: {available_payment_methods}'den {payment_method}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2572,36 +2574,38 @@ msgstr "" "aldıkları belirli ürünler için kullanıcı geri bildirimlerini yakalamak ve " "saklamak üzere tasarlanmıştır. Kullanıcı yorumlarını saklamak için " "öznitelikler, siparişteki ilgili ürüne bir referans ve kullanıcı tarafından " -"atanan bir derecelendirme içerir. Sınıf, geri bildirim verilerini etkili bir " -"şekilde modellemek ve yönetmek için veritabanı alanlarını kullanır." +"atanan bir derecelendirme içerir. Sınıf, geri bildirim verilerini etkili bir" +" şekilde modellemek ve yönetmek için veritabanı alanlarını kullanır." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "" "Ürünle ilgili deneyimleri hakkında kullanıcı tarafından sağlanan yorumlar" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Geri bildirim yorumları" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Bu geri bildirimin ilgili olduğu siparişteki belirli bir ürüne atıfta bulunur" +"Bu geri bildirimin ilgili olduğu siparişteki belirli bir ürüne atıfta " +"bulunur" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "İlgili sipariş ürünü" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Ürün için kullanıcı tarafından atanan derecelendirme" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Ürün değerlendirmesi" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2623,128 +2627,128 @@ msgstr "" "destekleyen yöntemler ve özellikler sağlar. Model, Sipariş ve Ürün " "modelleriyle entegre olur ve bunlara referans depolar." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "Satın alma sırasında müşteri tarafından bu ürün için ödenen fiyat" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Sipariş anındaki satın alma fiyatı" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Sipariş edilen bu ürün hakkında yöneticiler için dahili yorumlar" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Dahili yorumlar" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Kullanıcı bildirimleri" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "Bu öğenin özniteliklerinin JSON gösterimi" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Sıralı ürün özellikleri" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Bu ürünü içeren ana siparişe referans" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Ana sipariş" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Bu sipariş satırıyla ilişkili belirli ürün" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Siparişteki bu belirli ürünün miktarı" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Ürün miktarı" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Bu ürünün siparişteki mevcut durumu" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Ürün hattı durumu" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Orderproduct ilişkili bir siparişe sahip olmalıdır!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Geri bildirim için yanlış eylem belirtildi: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "alınmamış bir siparişe geri bildirim yapamazsınız" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "İsim" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "Entegrasyonun URL'si" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Kimlik doğrulama bilgileri" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Yalnızca bir varsayılan CRM sağlayıcınız olabilir" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM'ler" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Siparişin CRM bağlantısı" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Siparişlerin CRM bağlantıları" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Siparişlerle ilişkili dijital varlıklar için indirme işlevselliğini temsil " "eder. DigitalAssetDownload sınıfı, sipariş ürünleriyle ilgili indirmeleri " "yönetme ve bunlara erişme olanağı sağlar. İlişkili sipariş ürünü, indirme " -"sayısı ve varlığın herkese açık olup olmadığı hakkında bilgi tutar. İlişkili " -"sipariş tamamlandı durumundayken varlığın indirilmesi için bir URL " +"sayısı ve varlığın herkese açık olup olmadığı hakkında bilgi tutar. İlişkili" +" sipariş tamamlandı durumundayken varlığın indirilmesi için bir URL " "oluşturmaya yönelik bir yöntem içerir." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "İndir" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "İndirmeler" @@ -2752,8 +2756,8 @@ msgstr "İndirmeler" msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" -"geri̇ bi̇ldi̇ri̇m eklemek i̇çi̇n bi̇r yorum, puan ve si̇pari̇ş ürün uuid'si̇ " -"sağlamalisiniz." +"geri̇ bi̇ldi̇ri̇m eklemek i̇çi̇n bi̇r yorum, puan ve si̇pari̇ş ürün uuid'si̇" +" sağlamalisiniz." #: engine/core/sitemaps.py:25 msgid "Home" @@ -2945,8 +2949,7 @@ msgstr "Merhaba %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Siparişiniz için teşekkür ederiz #%(order.pk)s! Siparişinizi işleme " @@ -3005,8 +3008,8 @@ msgid "" "we have successfully processed your order №%(order_uuid)s! below are the\n" " details of your order:" msgstr "" -"Siparişinizi başarıyla işleme aldık №%(order_uuid)s! Siparişinizin detayları " -"aşağıdadır:" +"Siparişinizi başarıyla işleme aldık №%(order_uuid)s! Siparişinizin detayları" +" aşağıdadır:" #: engine/core/templates/digital_order_delivered_email.html:128 msgid "" @@ -3061,8 +3064,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Siparişiniz için teşekkür ederiz! Satın alma işleminizi onaylamaktan " @@ -3093,11 +3095,11 @@ msgstr "" "Tüm hakları\n" " ayrılmış" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Hem veri hem de zaman aşımı gereklidir" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Geçersiz zaman aşımı değeri, 0 ile 216000 saniye arasında olmalıdır" @@ -3129,12 +3131,12 @@ msgstr "Bu eylemi gerçekleştirmek için izniniz yok." msgid "NOMINATIM_URL must be configured." msgstr "NOMINATIM_URL parametresi yapılandırılmalıdır!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "Resim boyutları w{max_width} x h{max_height} pikseli geçmemelidir!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3142,40 +3144,40 @@ msgstr "" "Site haritası dizini için isteği işler ve bir XML yanıtı döndürür. Yanıtın " "XML için uygun içerik türü başlığını içermesini sağlar." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -"Bir site haritası için ayrıntılı görünüm yanıtını işler. Bu fonksiyon isteği " -"işler, uygun site haritası ayrıntı yanıtını getirir ve XML için Content-Type " -"başlığını ayarlar." +"Bir site haritası için ayrıntılı görünüm yanıtını işler. Bu fonksiyon isteği" +" işler, uygun site haritası ayrıntı yanıtını getirir ve XML için Content-" +"Type başlığını ayarlar." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Desteklenen dillerin bir listesini ve bunlara karşılık gelen bilgileri " "döndürür." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Web sitesinin parametrelerini bir JSON nesnesi olarak döndürür." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"Belirli bir anahtar ve zaman aşımı ile önbellek verilerini okuma ve ayarlama " -"gibi önbellek işlemlerini gerçekleştirir." +"Belirli bir anahtar ve zaman aşımı ile önbellek verilerini okuma ve ayarlama" +" gibi önbellek işlemlerini gerçekleştirir." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Bize ulaşın` form gönderimlerini işler." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3183,66 +3185,58 @@ msgstr "" "Gelen POST isteklerinden gelen URL'leri işleme ve doğrulama isteklerini " "işler." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Küresel arama sorgularını işler." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Kayıt olmadan bir işletme olarak satın alma mantığını ele alır." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Bir siparişle ilişkili bir dijital varlığın indirilmesini yönetir.\n" -"Bu fonksiyon, projenin depolama dizininde bulunan dijital varlık dosyasını " -"sunmaya çalışır. Dosya bulunamazsa, kaynağın kullanılamadığını belirtmek " -"için bir HTTP 404 hatası verilir." +"Bu fonksiyon, projenin depolama dizininde bulunan dijital varlık dosyasını sunmaya çalışır. Dosya bulunamazsa, kaynağın kullanılamadığını belirtmek için bir HTTP 404 hatası verilir." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid gereklidir" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "sipariş ürünü mevcut değil" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Dijital varlığı yalnızca bir kez indirebilirsiniz" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "dijital varlık indirilmeden önce siparişin ödenmesi gerekir" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Sipariş ürününün bir ürünü yok" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon bulunamadı" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Bir web sitesinin favicon'u için istekleri işler.\n" -"Bu fonksiyon, projenin statik dizininde bulunan favicon dosyasını sunmaya " -"çalışır. Favicon dosyası bulunamazsa, kaynağın kullanılamadığını belirtmek " -"için bir HTTP 404 hatası verilir." +"Bu fonksiyon, projenin statik dizininde bulunan favicon dosyasını sunmaya çalışır. Favicon dosyası bulunamazsa, kaynağın kullanılamadığını belirtmek için bir HTTP 404 hatası verilir." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "İsteği yönetici dizin sayfasına yönlendirir. Bu fonksiyon gelen HTTP " @@ -3250,16 +3244,16 @@ msgstr "" "yönlendirir. HTTP yönlendirmesini işlemek için Django'nun `redirect` " "fonksiyonunu kullanır." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "eVibes'in geçerli sürümünü döndürür." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Gelir ve Siparişler (son %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Gösterge Tablosu için özel değişkenleri döndürür." @@ -3274,15 +3268,16 @@ msgstr "" "Evibes ile ilgili işlemleri yönetmek için bir görünüm kümesi tanımlar. " "EvibesViewSet sınıfı ModelViewSet'ten miras alınır ve Evibes varlıkları " "üzerindeki eylemleri ve işlemleri yönetmek için işlevsellik sağlar. Geçerli " -"eyleme dayalı dinamik serileştirici sınıfları, özelleştirilebilir izinler ve " -"işleme biçimleri için destek içerir." +"eyleme dayalı dinamik serileştirici sınıfları, özelleştirilebilir izinler ve" +" işleme biçimleri için destek içerir." #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "AttributeGroup nesnelerini yönetmek için bir görünüm kümesini temsil eder. " "Filtreleme, serileştirme ve veri alma dahil olmak üzere AttributeGroup ile " @@ -3311,8 +3306,8 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "AttributeValue nesnelerini yönetmek için bir görünüm kümesi. Bu görünüm " "kümesi, AttributeValue nesnelerini listelemek, almak, oluşturmak, " @@ -3359,10 +3354,10 @@ msgid "" "product." msgstr "" "Sistemdeki `Product` modeliyle ilgili işlemleri yönetir. Bu sınıf, " -"filtreleme, serileştirme ve belirli örnekler üzerindeki işlemler dahil olmak " -"üzere ürünleri yönetmek için bir görünüm kümesi sağlar. Ortak işlevselliği " -"kullanmak için `EvibesViewSet`ten genişletilir ve RESTful API işlemleri için " -"Django REST çerçevesi ile entegre olur. Ürün ayrıntılarını almak, izinleri " +"filtreleme, serileştirme ve belirli örnekler üzerindeki işlemler dahil olmak" +" üzere ürünleri yönetmek için bir görünüm kümesi sağlar. Ortak işlevselliği " +"kullanmak için `EvibesViewSet`ten genişletilir ve RESTful API işlemleri için" +" Django REST çerçevesi ile entegre olur. Ürün ayrıntılarını almak, izinleri " "uygulamak ve bir ürünün ilgili geri bildirimlerine erişmek için yöntemler " "içerir." @@ -3386,15 +3381,15 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Geri Bildirim nesnelerini işleyen bir görünüm kümesinin temsili. Bu sınıf, " "listeleme, filtreleme ve ayrıntıları alma dahil olmak üzere Geri Bildirim " "nesneleriyle ilgili işlemleri yönetir. Bu görünüm kümesinin amacı, farklı " -"eylemler için farklı serileştiriciler sağlamak ve erişilebilir Geri Bildirim " -"nesnelerinin izin tabanlı kullanımını uygulamaktır. Temel `EvibesViewSet`i " +"eylemler için farklı serileştiriciler sağlamak ve erişilebilir Geri Bildirim" +" nesnelerinin izin tabanlı kullanımını uygulamaktır. Temel `EvibesViewSet`i " "genişletir ve verileri sorgulamak için Django'nun filtreleme sistemini " "kullanır." @@ -3403,17 +3398,17 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "Siparişleri ve ilgili işlemleri yönetmek için ViewSet. Bu sınıf, sipariş " "nesnelerini almak, değiştirmek ve yönetmek için işlevsellik sağlar. Ürün " "ekleme veya kaldırma, kayıtlı ve kayıtsız kullanıcılar için satın alma " -"işlemleri gerçekleştirme ve mevcut kimliği doğrulanmış kullanıcının bekleyen " -"siparişlerini alma gibi sipariş işlemlerini gerçekleştirmek için çeşitli uç " -"noktalar içerir. ViewSet, gerçekleştirilen belirli eyleme bağlı olarak " +"işlemleri gerçekleştirme ve mevcut kimliği doğrulanmış kullanıcının bekleyen" +" siparişlerini alma gibi sipariş işlemlerini gerçekleştirmek için çeşitli uç" +" noktalar içerir. ViewSet, gerçekleştirilen belirli eyleme bağlı olarak " "birden fazla serileştirici kullanır ve sipariş verileriyle etkileşime " "girerken izinleri buna göre zorlar." @@ -3421,14 +3416,14 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "OrderProduct varlıklarını yönetmek için bir görünüm kümesi sağlar. Bu " "görünüm kümesi, CRUD işlemlerini ve OrderProduct modeline özgü özel " -"eylemleri etkinleştirir. Filtreleme, izin kontrolleri ve istenen eyleme göre " -"serileştirici değiştirme içerir. Ayrıca, OrderProduct örnekleriyle ilgili " +"eylemleri etkinleştirir. Filtreleme, izin kontrolleri ve istenen eyleme göre" +" serileştirici değiştirme içerir. Ayrıca, OrderProduct örnekleriyle ilgili " "geri bildirimleri işlemek için ayrıntılı bir eylem sağlar" #: engine/core/viewsets.py:974 @@ -3455,8 +3450,8 @@ msgstr "Sistemdeki Stok verileri ile ilgili işlemleri yürütür." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3497,7 +3492,7 @@ msgid "" "serializers based on the action being performed." msgstr "" "Uygulama içinde Ürün Etiketleri ile ilgili işlemleri gerçekleştirir. Bu " -"sınıf, Ürün Etiketi nesnelerinin alınması, filtrelenmesi ve serileştirilmesi " -"için işlevsellik sağlar. Belirtilen filtre arka ucunu kullanarak belirli " +"sınıf, Ürün Etiketi nesnelerinin alınması, filtrelenmesi ve serileştirilmesi" +" için işlevsellik sağlar. Belirtilen filtre arka ucunu kullanarak belirli " "nitelikler üzerinde esnek filtrelemeyi destekler ve gerçekleştirilen eyleme " "göre dinamik olarak farklı serileştiriciler kullanır." diff --git a/engine/core/locale/vi_VN/LC_MESSAGES/django.mo b/engine/core/locale/vi_VN/LC_MESSAGES/django.mo index 5491c2c090343193824a94008d825e680a161aaf..4d7ff7e4ff778a27a80696fe25ffc2859262e5a5 100644 GIT binary patch delta 14804 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 YX6tqPz?LB)gDBZDd~fAep7`ef2S*h0V*mgE delta 14681 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 diff --git a/engine/core/locale/vi_VN/LC_MESSAGES/django.po b/engine/core/locale/vi_VN/LC_MESSAGES/django.po index 33c2a554..dbd64ea2 100644 --- a/engine/core/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/core/locale/vi_VN/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Đang hoạt động" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Nếu được đặt thành false, đối tượng này sẽ không hiển thị cho người dùng " "không có quyền truy cập cần thiết." @@ -74,65 +75,65 @@ msgstr "Siêu dữ liệu" msgid "timestamps" msgstr "Dấu thời gian" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Kích hoạt %(verbose_name_plural)s đã chọn" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Các mục đã được chọn đã được kích hoạt!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Vô hiệu hóa các mục đã chọn %(verbose_name_plural)s" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Các mục đã chọn đã bị vô hiệu hóa!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Giá trị thuộc tính" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Giá trị thuộc tính" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Hình ảnh" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Hình ảnh" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Cổ phiếu" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Cổ phiếu" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Đặt hàng sản phẩm" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Đặt hàng sản phẩm" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Trẻ em" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Cấu hình" @@ -156,7 +157,8 @@ msgstr "Đã giao" msgid "canceled" msgstr "Đã hủy" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Thất bại" @@ -198,11 +200,11 @@ msgstr "" "nội dung. Ngôn ngữ có thể được chọn bằng cả tiêu đề Accept-Language và tham " "số truy vấn." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Bộ nhớ đệm I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -210,43 +212,43 @@ msgstr "" "Chỉ sử dụng khóa để đọc dữ liệu được phép từ bộ nhớ đệm. Sử dụng khóa, dữ " "liệu và thời gian chờ kèm theo xác thực để ghi dữ liệu vào bộ nhớ đệm." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Xem danh sách các ngôn ngữ được hỗ trợ" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Lấy các tham số có thể truy cập của ứng dụng" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Gửi tin nhắn cho đội ngũ hỗ trợ" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Yêu cầu URL CORSed. Chỉ cho phép https." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Tìm kiếm giữa các sản phẩm, danh mục và thương hiệu" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "Điểm cuối tìm kiếm toàn cầu để tra cứu qua các bảng của dự án" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Mua hàng với tư cách là doanh nghiệp" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"Mua hàng với tư cách là doanh nghiệp, sử dụng các sản phẩm được cung cấp với " -"`product_uuid` và `attributes`." +"Mua hàng với tư cách là doanh nghiệp, sử dụng các sản phẩm được cung cấp với" +" `product_uuid` và `attributes`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "Tải xuống tài sản kỹ thuật số từ đơn hàng kỹ thuật số đã mua." @@ -273,7 +275,8 @@ msgstr "" "chỉnh sửa." #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Cập nhật một số trường trong nhóm thuộc tính hiện có, giữ nguyên các trường " "không thể chỉnh sửa." @@ -328,10 +331,11 @@ msgstr "" "không thể chỉnh sửa." #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" -"Cập nhật một số trường của giá trị thuộc tính hiện có, giữ nguyên các trường " -"không thể chỉnh sửa." +"Cập nhật một số trường của giá trị thuộc tính hiện có, giữ nguyên các trường" +" không thể chỉnh sửa." #: engine/core/docs/drf/viewsets.py:219 engine/core/docs/drf/viewsets.py:220 msgid "list all categories (simple view)" @@ -362,14 +366,14 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:270 engine/core/docs/drf/viewsets.py:272 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" @@ -389,12 +393,12 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Tìm kiếm chuỗi con không phân biệt chữ hoa chữ thường trên các trường " -"human_readable_id, order_products.product.name và order_products.product." -"partnumber." +"human_readable_id, order_products.product.name và " +"order_products.product.partnumber." #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -430,9 +434,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Sắp xếp theo một trong các trường sau: uuid, human_readable_id, user_email, " "user, status, created, modified, buy_time, random. Thêm tiền tố '-' để sắp " @@ -467,8 +471,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:403 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." #: engine/core/docs/drf/viewsets.py:410 msgid "purchase an order" @@ -492,7 +496,7 @@ msgstr "Lấy đơn hàng đang chờ xử lý hiện tại của người dùng msgid "retrieves a current pending order of an authenticated user" msgstr "Lấy lệnh đặt hàng đang chờ xử lý hiện tại của người dùng đã xác thực." -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "Đặt hàng mà không cần tạo tài khoản" @@ -639,29 +643,15 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -"Lọc theo một hoặc nhiều cặp tên/giá trị thuộc tính. • **Cú pháp**: " -"`attr_name=method-value[;attr2=method2-value2]…` • **Phương thức** (mặc định " -"là `icontains` nếu không được chỉ định): `iexact`, `exact`, `icontains`, " -"`contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, " -"`regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` • **Kiểu giá trị**: JSON " -"được ưu tiên (nên bạn có thể truyền danh sách/đối tượng), `true`/`false` cho " -"boolean, số nguyên, số thực; nếu không sẽ được xử lý như chuỗi. • " -"**Base64**: thêm tiền tố `b64-` để mã hóa Base64 an toàn cho URL giá trị " -"thô. \n" -"Ví dụ: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" +"Lọc theo một hoặc nhiều cặp tên/giá trị thuộc tính. • **Cú pháp**: `attr_name=method-value[;attr2=method2-value2]…` • **Phương thức** (mặc định là `icontains` nếu không được chỉ định): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` • **Kiểu giá trị**: JSON được ưu tiên (nên bạn có thể truyền danh sách/đối tượng), `true`/`false` cho boolean, số nguyên, số thực; nếu không sẽ được xử lý như chuỗi. • **Base64**: thêm tiền tố `b64-` để mã hóa Base64 an toàn cho URL giá trị thô. \n" +"Ví dụ: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" #: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "list all products (simple view)" @@ -673,13 +663,12 @@ msgstr "(chính xác) Mã định danh duy nhất của sản phẩm (UUID)" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Danh sách các trường được phân tách bằng dấu phẩy để sắp xếp. Thêm tiền tố `-" -"` để sắp xếp theo thứ tự giảm dần. **Được phép:** uuid, rating, name, slug, " -"created, modified, price, random" +"Danh sách các trường được phân tách bằng dấu phẩy để sắp xếp. Thêm tiền tố " +"`-` để sắp xếp theo thứ tự giảm dần. **Được phép:** uuid, rating, name, " +"slug, created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "retrieve a single product (detailed view)" @@ -692,9 +681,6 @@ msgid "Product UUID or slug" msgstr "Mã định danh duy nhất (UUID) hoặc Slug của sản phẩm" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Tạo sản phẩm" @@ -707,8 +693,8 @@ msgstr "" msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -"Cập nhật một số trường của sản phẩm hiện có, giữ nguyên các trường không thể " -"chỉnh sửa." +"Cập nhật một số trường của sản phẩm hiện có, giữ nguyên các trường không thể" +" chỉnh sửa." #: engine/core/docs/drf/viewsets.py:719 engine/core/docs/drf/viewsets.py:720 msgid "delete a product" @@ -782,8 +768,8 @@ msgstr "Viết lại phản hồi hiện có để lưu các trường không th #: engine/core/docs/drf/viewsets.py:909 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -"Cập nhật một số trường của một phản hồi hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một phản hồi hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." #: engine/core/docs/drf/viewsets.py:919 msgid "list all order–product relations (simple view)" @@ -847,8 +833,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1039 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." #: engine/core/docs/drf/viewsets.py:1064 msgid "list all vendors (simple view)" @@ -875,8 +861,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1102 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." #: engine/core/docs/drf/viewsets.py:1112 msgid "list all product images (simple view)" @@ -903,8 +889,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1154 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." #: engine/core/docs/drf/viewsets.py:1165 msgid "list all promo codes (simple view)" @@ -931,8 +917,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1203 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." #: engine/core/docs/drf/viewsets.py:1213 msgid "list all promotions (simple view)" @@ -959,8 +945,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1251 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." #: engine/core/docs/drf/viewsets.py:1261 msgid "list all stocks (simple view)" @@ -987,8 +973,8 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1297 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." #: engine/core/docs/drf/viewsets.py:1308 msgid "list all product tags (simple view)" @@ -1015,11 +1001,11 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:1350 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Không có từ khóa tìm kiếm được cung cấp." @@ -1028,8 +1014,8 @@ msgstr "Không có từ khóa tìm kiếm được cung cấp." msgid "Search" msgstr "Tìm kiếm" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1075,8 +1061,8 @@ msgid "Quantity" msgstr "Số lượng" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Sên" @@ -1092,7 +1078,7 @@ msgstr "Bao gồm các danh mục con" msgid "Include personal ordered" msgstr "Gồm các sản phẩm đặt hàng cá nhân" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "Mã sản phẩm" @@ -1113,12 +1099,12 @@ msgid "Bought before (inclusive)" msgstr "Đã mua trước đó (bao gồm)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "Địa chỉ email của người dùng" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "UUID người dùng" @@ -1142,257 +1128,260 @@ msgstr "Toàn bộ danh mục (có ít nhất 1 sản phẩm hoặc không)" msgid "Level" msgstr "Cấp độ" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "Mã định danh duy nhất của sản phẩm (UUID)" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Khóa để tìm kiếm trong hoặc đặt vào bộ nhớ đệm" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Dữ liệu cần lưu trữ trong bộ nhớ cache" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Thời gian chờ (timeout) tính bằng giây để lưu dữ liệu vào bộ nhớ đệm." -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Dữ liệu được lưu trữ trong bộ nhớ đệm" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "" "Dữ liệu JSON đã được chuyển đổi sang định dạng JSON từ URL được yêu cầu." -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Chỉ các URL bắt đầu bằng http(s):// mới được phép." -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Thêm sản phẩm vào đơn hàng" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Lệnh {order_uuid} không tìm thấy!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Xóa sản phẩm khỏi đơn hàng" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Xóa tất cả sản phẩm khỏi đơn hàng." -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Đặt hàng" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Vui lòng cung cấp một trong hai trường order_uuid hoặc order_hr_id - hai " "trường này là tương hỗ!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" -msgstr "Loại sai đã được trả về từ phương thức order.buy(): {type(instance)!s}" +msgstr "" +"Loại sai đã được trả về từ phương thức order.buy(): {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Thực hiện một hành động trên danh sách sản phẩm theo thứ tự." -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Xóa/Thêm" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Hành động phải là \"thêm\" hoặc \"xóa\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "" "Thực hiện một hành động trên danh sách sản phẩm trong danh sách mong muốn." -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Vui lòng cung cấp giá trị `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Danh sách mong muốn {wishlist_uuid} không tìm thấy!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Thêm sản phẩm vào đơn hàng" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Xóa sản phẩm khỏi đơn hàng" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Xóa sản phẩm khỏi đơn hàng" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Xóa sản phẩm khỏi đơn hàng" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Đặt hàng" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Vui lòng gửi các thuộc tính dưới dạng chuỗi được định dạng như sau: " "attr1=value1,attr2=value2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Thêm hoặc xóa phản hồi cho sản phẩm đặt hàng" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Hành động phải là `thêm` hoặc `xóa`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Sản phẩm {order_product_uuid} không tìm thấy!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Dòng địa chỉ gốc do người dùng cung cấp" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} không tồn tại: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Giới hạn phải nằm trong khoảng từ 1 đến 10." -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - hoạt động rất tốt." -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Thuộc tính" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Các thuộc tính được nhóm lại" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Nhóm thuộc tính" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Các danh mục" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Thương hiệu" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Các danh mục" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Tỷ lệ phần trăm đánh dấu" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." -msgstr "Các thuộc tính và giá trị nào có thể được sử dụng để lọc danh mục này." +msgstr "" +"Các thuộc tính và giá trị nào có thể được sử dụng để lọc danh mục này." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Giá tối thiểu và tối đa cho các sản phẩm trong danh mục này, nếu có sẵn." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Thẻ cho danh mục này" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Sản phẩm trong danh mục này" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Nhà cung cấp" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Vĩ độ (tọa độ Y)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Kinh độ (tọa độ X)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Làm thế nào" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Giá trị đánh giá từ 1 đến 10, bao gồm cả 1 và 10, hoặc 0 nếu không được " "thiết lập." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Đại diện cho phản hồi từ người dùng." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Thông báo" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Tải xuống liên kết URL cho sản phẩm của đơn hàng này (nếu có)." -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Phản hồi" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Danh sách các sản phẩm trong đơn hàng này" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Địa chỉ thanh toán" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1400,54 +1389,54 @@ msgstr "" "Địa chỉ giao hàng cho đơn hàng này, để trống nếu trùng với địa chỉ thanh " "toán hoặc nếu không áp dụng." -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Tổng giá trị của đơn hàng này" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Tổng số lượng sản phẩm trong đơn hàng" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "" "Tất cả các sản phẩm trong đơn hàng có phải là sản phẩm kỹ thuật số không?" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Giao dịch cho đơn hàng này" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Đơn hàng" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "URL hình ảnh" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Hình ảnh sản phẩm" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Thể loại" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Phản hồi" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Thương hiệu" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Nhóm thuộc tính" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1455,7 +1444,7 @@ msgstr "Nhóm thuộc tính" msgid "price" msgstr "Giá" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1463,39 +1452,39 @@ msgstr "Giá" msgid "quantity" msgstr "Số lượng" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Số lượng phản hồi" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Sản phẩm chỉ dành cho đơn đặt hàng cá nhân." -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Giá khuyến mãi" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Sản phẩm" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Mã khuyến mãi" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Sản phẩm đang khuyến mãi" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Khuyến mãi" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Nhà cung cấp" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1503,99 +1492,99 @@ msgstr "Nhà cung cấp" msgid "product" msgstr "Sản phẩm" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Sản phẩm đã thêm vào danh sách mong muốn" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Danh sách mong muốn" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Sản phẩm được gắn thẻ" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Thẻ sản phẩm" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Các danh mục được gắn thẻ" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Thẻ của các danh mục" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Tên dự án" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Tên công ty" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Địa chỉ công ty" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Số điện thoại của công ty" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', đôi khi phải sử dụng thay cho giá trị người dùng máy chủ." -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Người dùng máy chủ email" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Số tiền tối đa cho thanh toán" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Số tiền tối thiểu để thanh toán" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Dữ liệu phân tích" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Dữ liệu quảng cáo" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Cấu hình" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Mã ngôn ngữ" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Tên ngôn ngữ" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Cờ ngôn ngữ, nếu có :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Xem danh sách các ngôn ngữ được hỗ trợ" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Kết quả tìm kiếm sản phẩm" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Kết quả tìm kiếm sản phẩm" @@ -1608,27 +1597,27 @@ msgid "" msgstr "" "Đại diện cho một nhóm các thuộc tính, có thể có cấu trúc phân cấp. Lớp này " "được sử dụng để quản lý và tổ chức các nhóm thuộc tính. Một nhóm thuộc tính " -"có thể có nhóm cha, tạo thành cấu trúc phân cấp. Điều này có thể hữu ích cho " -"việc phân loại và quản lý các thuộc tính một cách hiệu quả hơn trong một hệ " -"thống phức tạp." +"có thể có nhóm cha, tạo thành cấu trúc phân cấp. Điều này có thể hữu ích cho" +" việc phân loại và quản lý các thuộc tính một cách hiệu quả hơn trong một hệ" +" thống phức tạp." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Cha mẹ của nhóm này" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Nhóm thuộc tính cha" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Tên nhóm thuộc tính" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Nhóm thuộc tính" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1643,54 +1632,54 @@ msgstr "" "dụng để định nghĩa và quản lý thông tin liên quan đến một nhà cung cấp bên " "ngoài. Nó lưu trữ tên của nhà cung cấp, thông tin xác thực cần thiết cho " "việc giao tiếp và tỷ lệ phần trăm chênh lệch giá áp dụng cho các sản phẩm " -"được lấy từ nhà cung cấp. Mô hình này cũng duy trì các metadata và ràng buộc " -"bổ sung, khiến nó phù hợp để sử dụng trong các hệ thống tương tác với các " +"được lấy từ nhà cung cấp. Mô hình này cũng duy trì các metadata và ràng buộc" +" bổ sung, khiến nó phù hợp để sử dụng trong các hệ thống tương tác với các " "nhà cung cấp bên thứ ba." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Lưu trữ thông tin đăng nhập và các điểm cuối cần thiết cho việc giao tiếp " "API của nhà cung cấp." -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Thông tin xác thực" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "" "Xác định định dạng đánh dấu cho các sản phẩm được lấy từ nhà cung cấp này." -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Tỷ lệ chiết khấu của nhà cung cấp" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Tên của nhà cung cấp này" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Tên nhà cung cấp" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "Tệp phản hồi" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "Phản hồi xử lý cuối cùng của nhà cung cấp" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Đường dẫn tệp tích hợp của nhà cung cấp" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Đường dẫn tích hợp" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1698,52 +1687,52 @@ msgid "" "display name. It supports operations exported through mixins and provides " "metadata customization for administrative purposes." msgstr "" -"Đại diện cho thẻ sản phẩm được sử dụng để phân loại hoặc nhận dạng sản phẩm. " -"Lớp ProductTag được thiết kế để nhận dạng và phân loại sản phẩm một cách duy " -"nhất thông qua sự kết hợp giữa mã định danh thẻ nội bộ và tên hiển thị thân " -"thiện với người dùng. Nó hỗ trợ các thao tác được xuất qua mixins và cung " -"cấp tùy chỉnh metadata cho mục đích quản trị." +"Đại diện cho thẻ sản phẩm được sử dụng để phân loại hoặc nhận dạng sản phẩm." +" Lớp ProductTag được thiết kế để nhận dạng và phân loại sản phẩm một cách " +"duy nhất thông qua sự kết hợp giữa mã định danh thẻ nội bộ và tên hiển thị " +"thân thiện với người dùng. Nó hỗ trợ các thao tác được xuất qua mixins và " +"cung cấp tùy chỉnh metadata cho mục đích quản trị." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Mã định danh thẻ nội bộ cho thẻ sản phẩm" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Tên ngày" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Tên thân thiện với người dùng cho thẻ sản phẩm" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Hiển thị tên thẻ" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Thẻ sản phẩm" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -"Đại diện cho thẻ danh mục được sử dụng cho sản phẩm. Lớp này mô hình hóa một " -"thẻ danh mục có thể được sử dụng để liên kết và phân loại sản phẩm. Nó bao " +"Đại diện cho thẻ danh mục được sử dụng cho sản phẩm. Lớp này mô hình hóa một" +" thẻ danh mục có thể được sử dụng để liên kết và phân loại sản phẩm. Nó bao " "gồm các thuộc tính cho mã định danh thẻ nội bộ và tên hiển thị thân thiện " "với người dùng." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "Thẻ danh mục" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "Thẻ danh mục" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1755,116 +1744,117 @@ msgid "" "hierarchy of categories, as well as assign attributes like images, tags, or " "priority." msgstr "" -"Đại diện cho một thực thể danh mục để tổ chức và nhóm các mục liên quan theo " -"cấu trúc phân cấp. Các danh mục có thể có mối quan hệ phân cấp với các danh " -"mục khác, hỗ trợ mối quan hệ cha-con. Lớp này bao gồm các trường cho " +"Đại diện cho một thực thể danh mục để tổ chức và nhóm các mục liên quan theo" +" cấu trúc phân cấp. Các danh mục có thể có mối quan hệ phân cấp với các danh" +" mục khác, hỗ trợ mối quan hệ cha-con. Lớp này bao gồm các trường cho " "metadata và biểu diễn trực quan, làm nền tảng cho các tính năng liên quan " "đến danh mục. Lớp này thường được sử dụng để định nghĩa và quản lý các danh " -"mục sản phẩm hoặc các nhóm tương tự khác trong ứng dụng, cho phép người dùng " -"hoặc quản trị viên xác định tên, mô tả và cấu trúc phân cấp của các danh " +"mục sản phẩm hoặc các nhóm tương tự khác trong ứng dụng, cho phép người dùng" +" hoặc quản trị viên xác định tên, mô tả và cấu trúc phân cấp của các danh " "mục, cũng như gán các thuộc tính như hình ảnh, thẻ hoặc ưu tiên." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Tải lên một hình ảnh đại diện cho danh mục này." -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Hình ảnh danh mục" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "" "Xác định tỷ lệ phần trăm chiết khấu cho các sản phẩm trong danh mục này." -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Cha của danh mục này để tạo cấu trúc phân cấp." -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Danh mục cha" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Tên danh mục" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Đặt tên cho danh mục này." -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Thêm mô tả chi tiết cho danh mục này." -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Mô tả danh mục" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "Thẻ giúp mô tả hoặc phân loại danh mục này" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Ưu tiên" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"Đại diện cho một đối tượng Thương hiệu trong hệ thống. Lớp này quản lý thông " -"tin và thuộc tính liên quan đến một thương hiệu, bao gồm tên, logo, mô tả, " +"Đại diện cho một đối tượng Thương hiệu trong hệ thống. Lớp này quản lý thông" +" tin và thuộc tính liên quan đến một thương hiệu, bao gồm tên, logo, mô tả, " "các danh mục liên quan, một slug duy nhất và thứ tự ưu tiên. Nó cho phép tổ " "chức và hiển thị dữ liệu liên quan đến thương hiệu trong ứng dụng." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Tên của thương hiệu này" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Tên thương hiệu" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Tải lên logo đại diện cho thương hiệu này." -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Hình ảnh nhỏ của thương hiệu" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Tải lên một logo lớn đại diện cho thương hiệu này." -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Hình ảnh thương hiệu lớn" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Thêm mô tả chi tiết về thương hiệu" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Mô tả thương hiệu" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Các danh mục tùy chọn mà thương hiệu này liên kết với" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Các danh mục" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1877,72 +1867,72 @@ msgstr "" "phần của hệ thống quản lý hàng tồn kho để cho phép theo dõi và đánh giá các " "sản phẩm có sẵn từ các nhà cung cấp khác nhau." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Nhà cung cấp cung cấp hàng tồn kho cho sản phẩm này." -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Nhà cung cấp liên kết" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Giá cuối cùng cho khách hàng sau khi cộng thêm chi phí." -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Giá bán" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Sản phẩm liên quan đến mục hàng tồn kho này" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Sản phẩm liên quan" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Giá thanh toán cho nhà cung cấp cho sản phẩm này" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Giá mua của nhà cung cấp" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Số lượng sản phẩm hiện có trong kho" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Số lượng hàng tồn kho" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "Mã SKU do nhà cung cấp gán để nhận dạng sản phẩm" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "Mã SKU của nhà cung cấp" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Tệp tin kỹ thuật số liên quan đến cổ phiếu này (nếu có)" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Tệp tin kỹ thuật số" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Thuộc tính hệ thống" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Nhập kho" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1954,164 +1944,173 @@ msgid "" "product data and its associated information within an application." msgstr "" "Đại diện cho một sản phẩm có các thuộc tính như danh mục, thương hiệu, thẻ, " -"trạng thái kỹ thuật số, tên, mô tả, số phần và slug. Cung cấp các thuộc tính " -"tiện ích liên quan để truy xuất đánh giá, số lượng phản hồi, giá, số lượng " +"trạng thái kỹ thuật số, tên, mô tả, số phần và slug. Cung cấp các thuộc tính" +" tiện ích liên quan để truy xuất đánh giá, số lượng phản hồi, giá, số lượng " "và tổng số đơn hàng. Được thiết kế để sử dụng trong hệ thống quản lý thương " "mại điện tử hoặc quản lý kho hàng. Lớp này tương tác với các mô hình liên " "quan (như Danh mục, Thương hiệu và Thẻ Sản phẩm) và quản lý bộ nhớ đệm cho " -"các thuộc tính được truy cập thường xuyên để cải thiện hiệu suất. Nó được sử " -"dụng để định nghĩa và thao tác dữ liệu sản phẩm và thông tin liên quan trong " -"ứng dụng." +"các thuộc tính được truy cập thường xuyên để cải thiện hiệu suất. Nó được sử" +" dụng để định nghĩa và thao tác dữ liệu sản phẩm và thông tin liên quan " +"trong ứng dụng." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Danh mục mà sản phẩm này thuộc về" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Tùy chọn: Kết hợp sản phẩm này với một thương hiệu" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Thẻ giúp mô tả hoặc phân loại sản phẩm này" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "" "Cho biết sản phẩm này có được phân phối dưới dạng kỹ thuật số hay không." -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Sản phẩm có phải là sản phẩm số không?" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" +"Cho biết sản phẩm này có được phân phối dưới dạng kỹ thuật số hay không." + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "Sản phẩm có thể được cập nhật không?" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Cung cấp một tên gọi rõ ràng để nhận diện sản phẩm." -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Tên sản phẩm" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Thêm mô tả chi tiết về sản phẩm" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Mô tả sản phẩm" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Số hiệu sản phẩm cho sản phẩm này" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Số hiệu linh kiện" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Đơn vị quản lý hàng tồn kho cho sản phẩm này" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Đại diện cho một thuộc tính trong hệ thống. Lớp này được sử dụng để định " -"nghĩa và quản lý các thuộc tính, là các phần dữ liệu có thể tùy chỉnh có thể " -"được liên kết với các thực thể khác. Các thuộc tính có các danh mục, nhóm, " +"nghĩa và quản lý các thuộc tính, là các phần dữ liệu có thể tùy chỉnh có thể" +" được liên kết với các thực thể khác. Các thuộc tính có các danh mục, nhóm, " "loại giá trị và tên liên quan. Mô hình hỗ trợ nhiều loại giá trị, bao gồm " -"chuỗi, số nguyên, số thực, boolean, mảng và đối tượng. Điều này cho phép cấu " -"trúc dữ liệu động và linh hoạt." +"chuỗi, số nguyên, số thực, boolean, mảng và đối tượng. Điều này cho phép cấu" +" trúc dữ liệu động và linh hoạt." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Nhóm có thuộc tính này" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Dây" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Chính trực" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Nổi" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Boolean" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Mảng" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Đối tượng" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Loại giá trị của thuộc tính" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Kiểu giá trị" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Tên của thuộc tính này" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Tên thuộc tính" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "có thể lọc được" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "Xác định xem thuộc tính này có thể được sử dụng để lọc hay không." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Thuộc tính" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Đại diện cho một giá trị cụ thể của một thuộc tính được liên kết với một sản " -"phẩm. Nó liên kết 'thuộc tính' với một 'giá trị' duy nhất, cho phép tổ chức " -"tốt hơn và thể hiện động các đặc điểm của sản phẩm." +"Đại diện cho một giá trị cụ thể của một thuộc tính được liên kết với một sản" +" phẩm. Nó liên kết 'thuộc tính' với một 'giá trị' duy nhất, cho phép tổ chức" +" tốt hơn và thể hiện động các đặc điểm của sản phẩm." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Thuộc tính của giá trị này" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Sản phẩm cụ thể liên quan đến giá trị của thuộc tính này" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Giá trị cụ thể cho thuộc tính này" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2121,87 +2120,87 @@ msgstr "" "định thứ tự hiển thị của chúng. Nó cũng bao gồm tính năng truy cập với văn " "bản thay thế cho hình ảnh." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Cung cấp văn bản thay thế cho hình ảnh để đảm bảo tính khả dụng." -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Nội dung thay thế cho hình ảnh" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Tải lên tệp hình ảnh cho sản phẩm này." -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Hình ảnh sản phẩm" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Xác định thứ tự hiển thị của các hình ảnh." -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Ưu tiên hiển thị" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Sản phẩm mà hình ảnh này đại diện" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Hình ảnh sản phẩm" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"Đại diện cho một chiến dịch khuyến mãi cho các sản phẩm có giảm giá. Lớp này " -"được sử dụng để định nghĩa và quản lý các chiến dịch khuyến mãi cung cấp " +"Đại diện cho một chiến dịch khuyến mãi cho các sản phẩm có giảm giá. Lớp này" +" được sử dụng để định nghĩa và quản lý các chiến dịch khuyến mãi cung cấp " "giảm giá theo tỷ lệ phần trăm cho các sản phẩm. Lớp này bao gồm các thuộc " "tính để thiết lập tỷ lệ giảm giá, cung cấp chi tiết về chương trình khuyến " "mãi và liên kết nó với các sản phẩm áp dụng. Nó tích hợp với danh mục sản " "phẩm để xác định các mặt hàng bị ảnh hưởng trong chiến dịch." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Giảm giá theo phần trăm cho các sản phẩm đã chọn" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Tỷ lệ giảm giá" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Hãy đặt một tên duy nhất cho chương trình khuyến mãi này." -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Tên chương trình khuyến mãi" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Mô tả chương trình khuyến mãi" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Chọn các sản phẩm được bao gồm trong chương trình khuyến mãi này." -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Các sản phẩm được bao gồm" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Khuyến mãi" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2209,64 +2208,64 @@ msgid "" "operations for adding and removing multiple products at once." msgstr "" "Đại diện cho danh sách mong muốn của người dùng để lưu trữ và quản lý các " -"sản phẩm mong muốn. Lớp này cung cấp các chức năng để quản lý bộ sưu tập sản " -"phẩm, hỗ trợ các thao tác như thêm và xóa sản phẩm, cũng như hỗ trợ các thao " -"tác thêm và xóa nhiều sản phẩm cùng lúc." +"sản phẩm mong muốn. Lớp này cung cấp các chức năng để quản lý bộ sưu tập sản" +" phẩm, hỗ trợ các thao tác như thêm và xóa sản phẩm, cũng như hỗ trợ các " +"thao tác thêm và xóa nhiều sản phẩm cùng lúc." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Các sản phẩm mà người dùng đã đánh dấu là mong muốn" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Người dùng sở hữu danh sách mong muốn này" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Chủ sở hữu Danh sách mong muốn" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Danh sách mong muốn" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Đại diện cho một bản ghi tài liệu liên quan đến một sản phẩm. Lớp này được " "sử dụng để lưu trữ thông tin về các tài liệu liên quan đến các sản phẩm cụ " -"thể, bao gồm việc tải lên tệp và metadata của chúng. Nó chứa các phương thức " -"và thuộc tính để xử lý loại tệp và đường dẫn lưu trữ cho các tệp tài liệu. " -"Nó mở rộng chức năng từ các mixin cụ thể và cung cấp các tính năng tùy chỉnh " -"bổ sung." +"thể, bao gồm việc tải lên tệp và metadata của chúng. Nó chứa các phương thức" +" và thuộc tính để xử lý loại tệp và đường dẫn lưu trữ cho các tệp tài liệu. " +"Nó mở rộng chức năng từ các mixin cụ thể và cung cấp các tính năng tùy chỉnh" +" bổ sung." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Phim tài liệu" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Phim tài liệu" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Chưa được giải quyết" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Đại diện cho một thực thể địa chỉ bao gồm thông tin vị trí và mối quan hệ " "với người dùng. Cung cấp chức năng lưu trữ dữ liệu địa lý và địa chỉ, cũng " @@ -2277,59 +2276,59 @@ msgstr "" "lý hoặc kiểm tra thêm. Lớp này cũng cho phép liên kết địa chỉ với người " "dùng, giúp quản lý dữ liệu cá nhân hóa." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Địa chỉ của khách hàng" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Dòng địa chỉ" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Phố" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Quận" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Thành phố" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Khu vực" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Mã bưu chính" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Quốc gia" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Điểm định vị địa lý (Kinh độ, Vĩ độ)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Phản hồi JSON đầy đủ từ dịch vụ định vị địa lý cho địa chỉ này" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Phản hồi JSON được lưu trữ từ dịch vụ định vị địa lý" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Địa chỉ" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Địa chỉ" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2338,79 +2337,79 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"Đại diện cho một mã khuyến mãi có thể được sử dụng để giảm giá, quản lý thời " -"hạn hiệu lực, loại giảm giá và cách áp dụng. Lớp PromoCode lưu trữ thông tin " -"chi tiết về mã khuyến mãi, bao gồm mã định danh duy nhất, thuộc tính giảm " -"giá (số tiền hoặc phần trăm), thời hạn hiệu lực, người dùng liên kết (nếu " -"có) và trạng thái sử dụng. Nó bao gồm chức năng để xác thực và áp dụng mã " -"khuyến mãi vào đơn hàng đồng thời đảm bảo các điều kiện được đáp ứng." +"Đại diện cho một mã khuyến mãi có thể được sử dụng để giảm giá, quản lý thời" +" hạn hiệu lực, loại giảm giá và cách áp dụng. Lớp PromoCode lưu trữ thông " +"tin chi tiết về mã khuyến mãi, bao gồm mã định danh duy nhất, thuộc tính " +"giảm giá (số tiền hoặc phần trăm), thời hạn hiệu lực, người dùng liên kết " +"(nếu có) và trạng thái sử dụng. Nó bao gồm chức năng để xác thực và áp dụng " +"mã khuyến mãi vào đơn hàng đồng thời đảm bảo các điều kiện được đáp ứng." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Mã duy nhất mà người dùng sử dụng để đổi lấy ưu đãi giảm giá." -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Mã khuyến mãi" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Số tiền giảm giá cố định được áp dụng nếu không sử dụng phần trăm." -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Số tiền giảm giá cố định" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Giảm giá theo phần trăm sẽ được áp dụng nếu không sử dụng số tiền cố định." -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Giảm giá theo phần trăm" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Thời gian hết hạn của mã khuyến mãi" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Thời hạn hiệu lực kết thúc" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Thời gian bắt đầu hiệu lực của mã khuyến mãi này" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Thời gian bắt đầu có hiệu lực" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Thời gian sử dụng mã khuyến mãi, để trống nếu chưa được sử dụng." -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Dấu thời gian sử dụng" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Người dùng được gán mã khuyến mãi này (nếu có)." -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Người dùng được chỉ định" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Mã khuyến mãi" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Mã khuyến mãi" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2418,167 +2417,167 @@ msgstr "" "Chỉ nên định nghĩa một loại giảm giá (theo số tiền hoặc theo phần trăm), " "nhưng không nên định nghĩa cả hai hoặc không định nghĩa cả hai." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Mã khuyến mãi đã được sử dụng." -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Loại giảm giá không hợp lệ cho mã khuyến mãi {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Đại diện cho một đơn hàng được đặt bởi người dùng. Lớp này mô hình hóa một " "đơn hàng trong ứng dụng, bao gồm các thuộc tính khác nhau như thông tin " -"thanh toán và vận chuyển, trạng thái, người dùng liên quan, thông báo và các " -"thao tác liên quan. Đơn hàng có thể có các sản phẩm liên quan, áp dụng " +"thanh toán và vận chuyển, trạng thái, người dùng liên quan, thông báo và các" +" thao tác liên quan. Đơn hàng có thể có các sản phẩm liên quan, áp dụng " "khuyến mãi, thiết lập địa chỉ và cập nhật chi tiết vận chuyển hoặc thanh " "toán. Đồng thời, chức năng hỗ trợ quản lý các sản phẩm trong chu kỳ đời của " "đơn hàng." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Địa chỉ thanh toán được sử dụng cho đơn hàng này" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Mã khuyến mãi tùy chọn đã được áp dụng cho đơn hàng này." -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Đã áp dụng mã khuyến mãi" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Địa chỉ giao hàng được sử dụng cho đơn hàng này" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Địa chỉ giao hàng" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Tình trạng hiện tại của đơn hàng trong chu kỳ đời sống của nó" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Tình trạng đơn hàng" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "Cấu trúc JSON của thông báo hiển thị cho người dùng, trong giao diện quản " "trị (admin UI), chế độ xem bảng (table-view) được sử dụng." -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "Đại diện JSON của các thuộc tính đơn hàng cho đơn hàng này" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "Người dùng đã đặt đơn hàng" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Người dùng" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Thời gian ghi nhận khi đơn hàng được hoàn tất" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Mua thời gian" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Một định danh dễ đọc cho đơn hàng" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "ID dễ đọc cho con người" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Đặt hàng" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "" "Một người dùng chỉ được phép có một lệnh chờ duy nhất tại một thời điểm!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Bạn không thể thêm sản phẩm vào đơn hàng không phải là đơn hàng đang chờ xử " "lý." -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Bạn không thể thêm các sản phẩm không hoạt động vào đơn hàng." -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "Bạn không thể thêm nhiều sản phẩm hơn số lượng hiện có trong kho." -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -"Bạn không thể xóa sản phẩm khỏi một đơn hàng không phải là đơn hàng đang chờ " -"xử lý." +"Bạn không thể xóa sản phẩm khỏi một đơn hàng không phải là đơn hàng đang chờ" +" xử lý." -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} không tồn tại với truy vấn <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Mã khuyến mãi không tồn tại" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" "Bạn chỉ có thể mua các sản phẩm vật lý có địa chỉ giao hàng được chỉ định!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Địa chỉ không tồn tại" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "Bạn không thể mua hàng vào lúc này, vui lòng thử lại sau vài phút." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Giá trị lực không hợp lệ" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Bạn không thể đặt hàng trống!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "Bạn không thể đặt hàng mà không có tài khoản người dùng!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Người dùng không có số dư không thể mua bằng số dư!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Không đủ số tiền để hoàn tất đơn hàng." -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2587,7 +2586,7 @@ msgstr "" "sau: tên khách hàng, địa chỉ email của khách hàng, số điện thoại của khách " "hàng." -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -2595,7 +2594,7 @@ msgstr "" "Phương thức thanh toán không hợp lệ: {payment_method} từ " "{available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2604,39 +2603,40 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "Quản lý phản hồi của người dùng về sản phẩm. Lớp này được thiết kế để thu " -"thập và lưu trữ phản hồi của người dùng về các sản phẩm cụ thể mà họ đã mua. " -"Nó bao gồm các thuộc tính để lưu trữ bình luận của người dùng, tham chiếu " -"đến sản phẩm liên quan trong đơn hàng và đánh giá do người dùng gán. Lớp này " -"sử dụng các trường cơ sở dữ liệu để mô hình hóa và quản lý dữ liệu phản hồi " -"một cách hiệu quả." +"thập và lưu trữ phản hồi của người dùng về các sản phẩm cụ thể mà họ đã mua." +" Nó bao gồm các thuộc tính để lưu trữ bình luận của người dùng, tham chiếu " +"đến sản phẩm liên quan trong đơn hàng và đánh giá do người dùng gán. Lớp này" +" sử dụng các trường cơ sở dữ liệu để mô hình hóa và quản lý dữ liệu phản hồi" +" một cách hiệu quả." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "" "Những bình luận do người dùng cung cấp về trải nghiệm của họ với sản phẩm" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Phản hồi" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "Tham chiếu đến sản phẩm cụ thể trong đơn hàng mà phản hồi này đề cập đến." -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Sản phẩm liên quan đến đơn hàng" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Đánh giá do người dùng gán cho sản phẩm" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Đánh giá sản phẩm" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2658,128 +2658,128 @@ msgstr "" "kỹ thuật số. Mô hình này tích hợp với các mô hình Order và Product và lưu " "trữ tham chiếu đến chúng." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "Giá mà khách hàng phải trả cho sản phẩm này tại thời điểm mua hàng." -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Giá mua tại thời điểm đặt hàng" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Nhận xét nội bộ dành cho quản trị viên về sản phẩm đã đặt hàng này" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Nhận xét nội bộ" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Thông báo cho người dùng" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "Đại diện JSON của các thuộc tính của mục này" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Thuộc tính sản phẩm đã đặt hàng" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Tham chiếu đến đơn hàng chính chứa sản phẩm này." -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Đơn đặt hàng của phụ huynh" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Sản phẩm cụ thể liên quan đến dòng đơn hàng này" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Số lượng sản phẩm cụ thể này trong đơn hàng" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Số lượng sản phẩm" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Tình trạng hiện tại của sản phẩm này trong đơn hàng" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Tình trạng dòng sản phẩm" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Sản phẩm đặt hàng phải có đơn hàng liên quan!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Hành động sai được chỉ định cho phản hồi: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "Bạn không thể phản hồi đơn hàng mà bạn chưa nhận được." -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Tên" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "Đường dẫn URL của tích hợp" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Thông tin xác thực" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Bạn chỉ có thể có một nhà cung cấp CRM mặc định." -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "Hệ thống Quản lý Quan hệ Khách hàng" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "Hệ thống Quản lý Quan hệ Khách hàng (CR" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Liên kết CRM của đơn hàng" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "Liên kết CRM của đơn hàng" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Đại diện cho chức năng tải xuống các tài sản kỹ thuật số liên quan đến đơn " -"hàng. Lớp DigitalAssetDownload cung cấp khả năng quản lý và truy cập các tệp " -"tải xuống liên quan đến sản phẩm trong đơn hàng. Nó lưu trữ thông tin về sản " -"phẩm trong đơn hàng liên quan, số lần tải xuống và liệu tài sản có hiển thị " -"công khai hay không. Nó bao gồm một phương thức để tạo URL tải xuống tài sản " -"khi đơn hàng liên quan ở trạng thái đã hoàn thành." +"hàng. Lớp DigitalAssetDownload cung cấp khả năng quản lý và truy cập các tệp" +" tải xuống liên quan đến sản phẩm trong đơn hàng. Nó lưu trữ thông tin về " +"sản phẩm trong đơn hàng liên quan, số lần tải xuống và liệu tài sản có hiển " +"thị công khai hay không. Nó bao gồm một phương thức để tạo URL tải xuống tài" +" sản khi đơn hàng liên quan ở trạng thái đã hoàn thành." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Tải xuống" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Tải xuống" @@ -2981,8 +2981,7 @@ msgstr "Xin chào %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Cảm ơn quý khách đã đặt hàng #%(order.pk)s! Chúng tôi vui mừng thông báo " @@ -3011,8 +3010,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(config.EMAIL_HOST_USER)s." msgstr "" -"Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với bộ phận hỗ trợ của chúng " -"tôi tại %(config.EMAIL_HOST_USER)s." +"Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với bộ phận hỗ trợ của chúng" +" tôi tại %(config.EMAIL_HOST_USER)s." #: engine/core/templates/digital_order_created_email.html:133 #, python-format @@ -3062,8 +3061,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(contact_email)s." msgstr "" -"Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với bộ phận hỗ trợ của chúng " -"tôi tại %(contact_email)s." +"Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với bộ phận hỗ trợ của chúng" +" tôi tại %(contact_email)s." #: engine/core/templates/digital_order_delivered_email.html:165 #: engine/core/templates/promocode_granted_email.html:108 @@ -3089,14 +3088,13 @@ msgid "" "Thank you for staying with us! We have granted you with a promocode\n" " for " msgstr "" -"Cảm ơn quý khách đã đồng hành cùng chúng tôi! Chúng tôi đã cấp cho quý khách " -"một mã khuyến mãi cho" +"Cảm ơn quý khách đã đồng hành cùng chúng tôi! Chúng tôi đã cấp cho quý khách" +" một mã khuyến mãi cho" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Cảm ơn quý khách đã đặt hàng! Chúng tôi rất vui được xác nhận đơn hàng của " @@ -3125,11 +3123,11 @@ msgid "" " reserved" msgstr "Tất cả các quyền được bảo lưu." -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Cả dữ liệu và thời gian chờ đều là bắt buộc." -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" "Giá trị thời gian chờ không hợp lệ, nó phải nằm trong khoảng từ 0 đến " @@ -3163,13 +3161,13 @@ msgstr "Bạn không có quyền thực hiện hành động này." msgid "NOMINATIM_URL must be configured." msgstr "Tham số NOMINATIM_URL phải được cấu hình!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Kích thước hình ảnh không được vượt quá w{max_width} x h{max_height} pixel!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3177,7 +3175,7 @@ msgstr "" "Xử lý yêu cầu về sơ đồ trang web (sitemap index) và trả về phản hồi XML. Nó " "đảm bảo rằng phản hồi bao gồm tiêu đề loại nội dung XML phù hợp." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3187,17 +3185,17 @@ msgstr "" "lấy phản hồi chi tiết phù hợp của sơ đồ trang web và đặt tiêu đề Content-" "Type cho XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Trả về danh sách các ngôn ngữ được hỗ trợ và thông tin tương ứng của chúng." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Trả về các tham số của trang web dưới dạng đối tượng JSON." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3205,94 +3203,92 @@ msgstr "" "Xử lý các thao tác bộ nhớ đệm như đọc và ghi dữ liệu bộ nhớ đệm với khóa và " "thời gian chờ được chỉ định." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Xử lý các biểu mẫu liên hệ." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "Xử lý các yêu cầu xử lý và xác thực URL từ các yêu cầu POST đến." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Xử lý các truy vấn tìm kiếm toàn cầu." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "" -"Xử lý logic của việc mua hàng như một hoạt động kinh doanh mà không cần đăng " -"ký." +"Xử lý logic của việc mua hàng như một hoạt động kinh doanh mà không cần đăng" +" ký." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Xử lý việc tải xuống tài sản kỹ thuật số liên quan đến một đơn hàng. Chức " -"năng này cố gắng cung cấp tệp tài sản kỹ thuật số được lưu trữ trong thư mục " -"lưu trữ của dự án. Nếu tệp không được tìm thấy, một lỗi HTTP 404 sẽ được trả " -"về để thông báo rằng tài nguyên không khả dụng." +"năng này cố gắng cung cấp tệp tài sản kỹ thuật số được lưu trữ trong thư mục" +" lưu trữ của dự án. Nếu tệp không được tìm thấy, một lỗi HTTP 404 sẽ được " +"trả về để thông báo rằng tài nguyên không khả dụng." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid là trường bắt buộc." -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "Sản phẩm không tồn tại" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Bạn chỉ có thể tải xuống tài sản kỹ thuật số một lần." -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" -msgstr "Đơn hàng phải được thanh toán trước khi tải xuống tài sản kỹ thuật số." +msgstr "" +"Đơn hàng phải được thanh toán trước khi tải xuống tài sản kỹ thuật số." -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Sản phẩm đặt hàng không có sản phẩm." -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "Biểu tượng trang web không tìm thấy" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" -"Xử lý yêu cầu về biểu tượng favicon của một trang web. Chức năng này cố gắng " -"cung cấp tệp favicon nằm trong thư mục tĩnh của dự án. Nếu tệp favicon không " -"được tìm thấy, một lỗi HTTP 404 sẽ được trả về để thông báo rằng tài nguyên " -"không khả dụng." +"Xử lý yêu cầu về biểu tượng favicon của một trang web. Chức năng này cố gắng" +" cung cấp tệp favicon nằm trong thư mục tĩnh của dự án. Nếu tệp favicon " +"không được tìm thấy, một lỗi HTTP 404 sẽ được trả về để thông báo rằng tài " +"nguyên không khả dụng." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -"Chuyển hướng yêu cầu đến trang chỉ mục quản trị. Chức năng này xử lý các yêu " -"cầu HTTP đến và chuyển hướng chúng đến trang chỉ mục giao diện quản trị " -"Django. Nó sử dụng hàm `redirect` của Django để xử lý việc chuyển hướng HTTP." +"Chuyển hướng yêu cầu đến trang chỉ mục quản trị. Chức năng này xử lý các yêu" +" cầu HTTP đến và chuyển hướng chúng đến trang chỉ mục giao diện quản trị " +"Django. Nó sử dụng hàm `redirect` của Django để xử lý việc chuyển hướng " +"HTTP." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Trả về phiên bản hiện tại của eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Doanh thu & Đơn hàng (lần cuối %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Trả về các biến tùy chỉnh cho Bảng điều khiển." @@ -3312,16 +3308,17 @@ msgstr "" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Đại diện cho một tập hợp các đối tượng để quản lý các đối tượng " "AttributeGroup. Xử lý các thao tác liên quan đến AttributeGroup, bao gồm " -"lọc, serialization và truy xuất dữ liệu. Lớp này là một phần của lớp API của " -"ứng dụng và cung cấp một cách chuẩn hóa để xử lý yêu cầu và phản hồi cho dữ " -"liệu AttributeGroup." +"lọc, serialization và truy xuất dữ liệu. Lớp này là một phần của lớp API của" +" ứng dụng và cung cấp một cách chuẩn hóa để xử lý yêu cầu và phản hồi cho dữ" +" liệu AttributeGroup." #: engine/core/viewsets.py:179 msgid "" @@ -3335,17 +3332,17 @@ msgstr "" "Quản lý các thao tác liên quan đến các đối tượng thuộc tính (Attribute) " "trong ứng dụng. Cung cấp một bộ các điểm cuối API để tương tác với dữ liệu " "thuộc tính. Lớp này quản lý việc truy vấn, lọc và serialization của các đối " -"tượng thuộc tính, cho phép kiểm soát động đối với dữ liệu được trả về, chẳng " -"hạn như lọc theo các trường cụ thể hoặc lấy thông tin chi tiết so với thông " -"tin đơn giản tùy thuộc vào yêu cầu." +"tượng thuộc tính, cho phép kiểm soát động đối với dữ liệu được trả về, chẳng" +" hạn như lọc theo các trường cụ thể hoặc lấy thông tin chi tiết so với thông" +" tin đơn giản tùy thuộc vào yêu cầu." #: engine/core/viewsets.py:198 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Bộ xem (viewset) để quản lý các đối tượng AttributeValue. Bộ xem này cung " "cấp các chức năng để liệt kê, truy xuất, tạo, cập nhật và xóa các đối tượng " @@ -3417,8 +3414,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Đại diện cho tập hợp các đối tượng Feedback. Lớp này quản lý các thao tác " @@ -3433,13 +3430,13 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"ViewSet để quản lý đơn hàng và các hoạt động liên quan. Lớp này cung cấp các " -"chức năng để truy xuất, sửa đổi và quản lý các đối tượng đơn hàng. Nó bao " +"ViewSet để quản lý đơn hàng và các hoạt động liên quan. Lớp này cung cấp các" +" chức năng để truy xuất, sửa đổi và quản lý các đối tượng đơn hàng. Nó bao " "gồm các điểm cuối (endpoint) khác nhau để xử lý các hoạt động liên quan đến " "đơn hàng như thêm hoặc xóa sản phẩm, thực hiện giao dịch mua hàng cho cả " "người dùng đã đăng ký và chưa đăng ký, cũng như truy xuất các đơn hàng đang " @@ -3451,8 +3448,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Cung cấp một bộ xem (viewset) để quản lý các thực thể OrderProduct. Bộ xem " @@ -3486,8 +3483,8 @@ msgstr "Quản lý các hoạt động liên quan đến dữ liệu kho trong h msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3495,10 +3492,10 @@ msgstr "" "Bộ công cụ ViewSet để quản lý các thao tác liên quan đến Danh sách mong " "muốn. Bộ công cụ WishlistViewSet cung cấp các điểm cuối để tương tác với " "danh sách mong muốn của người dùng, cho phép truy xuất, chỉnh sửa và tùy " -"chỉnh các sản phẩm trong danh sách mong muốn. Bộ công cụ này hỗ trợ các chức " -"năng như thêm, xóa và thực hiện các thao tác hàng loạt đối với các sản phẩm " -"trong danh sách mong muốn. Các kiểm tra quyền truy cập được tích hợp để đảm " -"bảo rằng người dùng chỉ có thể quản lý danh sách mong muốn của chính mình " +"chỉnh các sản phẩm trong danh sách mong muốn. Bộ công cụ này hỗ trợ các chức" +" năng như thêm, xóa và thực hiện các thao tác hàng loạt đối với các sản phẩm" +" trong danh sách mong muốn. Các kiểm tra quyền truy cập được tích hợp để đảm" +" bảo rằng người dùng chỉ có thể quản lý danh sách mong muốn của chính mình " "trừ khi được cấp quyền rõ ràng." #: engine/core/viewsets.py:1183 @@ -3510,8 +3507,8 @@ msgid "" "on the request context." msgstr "" "Lớp này cung cấp chức năng viewset để quản lý các đối tượng `Address`. Lớp " -"AddressViewSet cho phép thực hiện các thao tác CRUD, lọc dữ liệu và các hành " -"động tùy chỉnh liên quan đến các thực thể địa chỉ. Nó bao gồm các hành vi " +"AddressViewSet cho phép thực hiện các thao tác CRUD, lọc dữ liệu và các hành" +" động tùy chỉnh liên quan đến các thực thể địa chỉ. Nó bao gồm các hành vi " "chuyên biệt cho các phương thức HTTP khác nhau, các tùy chỉnh serializer và " "xử lý quyền truy cập dựa trên bối cảnh yêu cầu." @@ -3528,8 +3525,8 @@ msgid "" "using the specified filter backend and dynamically uses different " "serializers based on the action being performed." msgstr "" -"Xử lý các tác vụ liên quan đến Thẻ Sản phẩm trong ứng dụng. Lớp này cung cấp " -"chức năng để truy xuất, lọc và serialize các đối tượng Thẻ Sản phẩm. Nó hỗ " +"Xử lý các tác vụ liên quan đến Thẻ Sản phẩm trong ứng dụng. Lớp này cung cấp" +" chức năng để truy xuất, lọc và serialize các đối tượng Thẻ Sản phẩm. Nó hỗ " "trợ lọc linh hoạt trên các thuộc tính cụ thể bằng cách sử dụng backend lọc " "được chỉ định và động sử dụng các serializer khác nhau tùy thuộc vào hành " "động đang thực hiện." diff --git a/engine/core/locale/zh_Hans/LC_MESSAGES/django.mo b/engine/core/locale/zh_Hans/LC_MESSAGES/django.mo index a5045f045ddf6182d9fc86889fd754f9523ceedd..7cdb0f3e455035cbac0ca0e67ae80c65d02b1dbb 100644 GIT binary patch delta 14816 zcmYk?2Y64{AII?<5rWuzgv5v~R)`VA9+es`wHspZ*z;Glw~7^e)u>UMQc9^BRV}Km zQl(b)U#dmX;{X2q&e!v}&vW`Z-|sp1o^#JV_a@Y&aX}Z~5Ayw-CFOjNV`B=>%ZCZs zJ#TiP=WQ;btmoZ{_PlKP8+HotycbBb*RiVS1!HGSjlD4~4#HeG7IWi548rZ01^1%P zKZPkh&*yzjWh{yFs0*~H=6RX012Pw{AI`%GmQGvV|u)Y5%?d*W1-rfmmeqMm;ldPi%or03fA?!$}|k9=XuR=13t#5xE=qj&mGcl zbp!5_cxywqBKMFb^u{-G15ZIM{bJ04J24}k!ZdgZwZb`8PbTHStuegV&n6{zcw&Mxs`v3g*K&)FbMR;pjt6cok{|*S*R5>)Cxo zLQA#>wPeSzIR1`$hS^z`5DZ0Ku!LCy3lO(J_NAAI+Rd9RAKTpXmJr9I_Re$6j44~V zI7bVfzyHD{H1iVJj617|+TC+ny3Li0SBXEgc;Z{UG4%TYOJOyZryYB!M{Aaue#hE) z-VpLD+OpX&dwb7oj4>TN?;V`dkrk%@HD4#sOD0jMv*+!?gI(BwTp+P4OGsR!o9F$F z?YetjB>6XcBC!wuBL29S=d~qX-P`jTalz+(SOMY&{oMqw3}9c8pPb06NB+rRHXv>r z>Q>TMX}DYB#>iv#TA*H!WmpWqKyA)@sHKY-;htSIYDuf3`qjZQ*a!8wl zqWT}P_yn@|eBK!<2{fEXy|>XLJui%S#3;9m7o#q)9kn_4U|KwkN9lhW1G&T5V?3`k z`6M2x_RbNEz~8YPW_gbdjdf9vb_f>L`#+XSArk9QC!WGm_z<-c;p1Gs5mqH0gn4i) zhT=){HtPJK_uY3R61AtgqF%R=s1=@z8Sx6HW_<4tDmm~GYBPq6cNfl$y5q{ozVc!* z4wJDa-od(9Y=Zl=_QjIK@1fq3&6oiXTl-mLvApY81UpW&_kRKvy?)bBpWH>51-GJ} z`4QAa&ZB?ks0sgpnK0!fcZb;x%WptE>+Pr|KaN_#?@$BYL5=g+;=rkHlV|o(38tYu zro?KP8f&2jXoz|w@1QQw4>iyzRR1}s{_{}-FGH=sX7doL|2J3!Z=xPex@qna`tngx zhYF}?(hxQC_NamTqb4%Z+UH|#;*I7}Yrldz?+?_3yy@;O3Px?pDAb;bw|F>4>-}F# zr3wvKP2m6e2GyQGRqB68+8M%P!sNodbC3^J^C;m&ctv` zR=eK+15|XOW2jyK3^jpLv)#lhVJ+e|s5@JXy0ec^yZTd$kD>4X#?xTQ;n6^X-9uT?AL8F}ro8qUXZ_$}%g2hMfh{&c82s)!NT3N_Fe z)R%8JX2CP4NB0Yc;iI{%zdi^#lH47Y!=}V_a43F&eKB~Ro6u0qKs*}j<8;&=oI2z}S66rd8c*lo5Vs0%hko!ARC zktrC4>rpFo0`&oUh+4s?mahos#6-QzNY;5_t<`U#l^8QoNg?3^N+=sf;vzQgH zV=jD*TB(dnT|N}`%*$aJj7Gi2-LVZ$Lp_2UsNJ7;nd?^%wYdjl2EG3ysc68dm=Twv z2HK4Ia6g9O_gD&_pf+KVl{o%~xrq+d~Pcd@|O>Z_%eE z%dv_LhE-4lPRDGx5VcgBQQwIjr~wb420DsbsqaxMa?|n;Q8y60+TD3}RC@&K`cbI% z*ww7RmL`sb2Iz#ju?H&uKIX(E)TY~nI`Mndr}+kE$NQ)Y2d!~Sn;ErdilH`VEUJG? z)N9)jbzYA(J~y+m)?p^HqAiP42Pp;JPS48A}ome%%89b@e7L!uXiih z0QKF7M@?t}Y6W&;J3NFf(U)g~+YJ4%kvd>0e2!sQVx!v&O;FGJUDPA$hk7JaupI6( zZ(&j5Tpzg=sb%&?)1Znw5XO<){qfUT$#FJUoEvDsa?Br0x& z>gPjUcoW9pEeyuOTilQB(x{2Pi(2uy{yfkBv?X4ko>Aqku46ZI5h{NQ_3WOambUE2 z?x$i`tU$a9%j0*b*E4vVyRjOmf%{~?@HN1}%vE+WYRPSO5;z<~a+ff6Z#hUmJMq%Xx?!tYsF!5rnj-R3K{6EwRrvB7@ zsM2F@;@mzeTFMHT7h7Wp4nht19%^ZqV;cM#wR?X+T{!bW_od5+jfkUAckV+y>y4-z zIE%XDXQ-78KjePu`pQw!l2*bjn1GtdFw~tSp-$X~HSj9xPV#@|CQul)2O=>SR>E}n zCT7QWsEH25{5TrJaS3u`KJOrv)Fl4EG584etOp%-9am#r;$x^ilIDopoLR6SaX4yI z)kUq)JE$A#jMZ=s#^P6~&6(kI_o$j<3C8!vQqhuaL_PcS7=yt_-JRD*ZL+>t9v@&K zEPTveupufx9h=}Gtb}R5a7!PHp~QVqH#QBm2|vN&jPKo|qAyscb{?P9LC_{$JEmr#R`%h02$)I12S>o0uJO0`WlfspDfRdas|OE|l&R z8xF%!?T1kl`Vw`a3#d(W8`I!F_zVM1yZ--S4&uPC+#bq<<%nyd_SQf=pMpOLeZ~4$ zClPIHGy&FbSy$VADiO=)PU)~WrbPE;;6q# zefymIF&}@P^^c{)-1F|Q-7eq);*}S;ORW5zd*4GYx<80iL=C(eLvSN%fIXNI&sqLD zYNhU@CYa)T_fs?kb$+$6_7gM?dfz5OI|sSqQ!0s1&5(FVxayzwA0zL)}q5^KI0HyJ9{Zj`|YL z$B}pt^?pZRVNh(18rb{UO)xbo4#jj>7_;g9FH5BwcUaFljJxXYYzngRz4@q_cld>$ z-Sq2@cZpA2eju%iLlJ0-zhRgCr)fAJZ{#J~Af3Y$FQ4<5MU zF@Ix*PkCN%;DM)n-ZA)JcO%uAl~$rYmSudeDU~oBixId2OW<+Liw{tnEj_c)iFvRT zhNC7JhgzZ0sJ$==)o-b}#{9_Kj-6=VhrU$IEY}M+P=S{WLPIr7iH%UtDh~DR+hRZZ z_r=wC*$ePbz?UMx|LnJ5IQ_mtZN7V07PAHh_$OEwixJ0}!va}J z;RwD({shKhD9cm}`=Bnk1$DtkSQ%5K4)Cu~RaCyI#cgo}abMI*+(u0xSFr0>z(+-i zQkJNInprK&H$zRZwdLb29%%6>i>I6OQ4?5!y6$F+cbbP$D|yEB-J%jh;-wjr#x3P2 z)P;7SCh!?*bDcz8_$q3mw^02an}KOvJ`<{67^=M}YT$|%H+A~Fwp8@TL?(^QX5g)U1d4ZuCW;23SHxZZLP7pQ9#r*1T>$vi9H%u01{@Z@9HDLtSTWM&5rd**R-?j`~8S%oO1N@mm_TYX_oMVj60IWtbV) zq9(S-JZgS}dIVQcOaBsQVA0I({9ULOJK&>Ify!xXc!^DjQ)LP8|Cz4^>cg=JHPA`a zom@n%%)b`r%ERMRPIMkgCKs~!*=48~0EVOtP>Zjp$RR25XeQSSgaVq`?vrl)Jo{E+v40Yks zs9hg}x#raO#7t>hrob=IQVH=)Km6UzIq0WVqN zF6x>7gIa;~`Q3XOg*u^&IRL|m$DkhBa@2W;Py<~+4fGRgBF|Ch7v%RgwMU{JNu>h3 z|7wUQp(X5xiie|CU?OUTmZQE4+pYZ)>O!|sH*gPir!P>y$V7&@8;C=FXojL*^R*a; zKVSoV>Z76oW5eA*ai|N&qbAhD;zU%x5#}T_2{pl$7Vk6R}eoM6J|f%kMN#TKiS=f96v&RU!X)J})a3J&Q2Zg_@w2 zEWw;>`NOEq_9MQFk5JFHRbhADDAXOzL*2*{)E?M?b@3F|$BaeXqiKbe^!|^fq7!$c z?)+1W&!Q%D(Y%jZk>CiIFKX5@+n{bF5!G)QrpHgQIi5m&Y4a6zzj5`zx_bZDQPCg4 zen*{{p;&y$!p}o2YSelyd!JQSJRp@&2n} zr8S&Jy(UjBE?wHi?abMzy>S%vg?nK6Vr5*v_NWWbLG?R=wedb`g5@LKPt`=MPP{MD z=PHj#_&bz!aU#~E!^fx#JhC{toQubz+K-^lOI_aC0JU@lz5B;t^$0RKNmNkVPb-%%4uTggqZ8fwqHWsXL@hHFt1IgUE- zIdO?^=iF{sh1KRdEx_iMmit)a%p8;!&uHO+*d22sObUPxkW;hBZH z?o#sr>c{pa)cL8Z^Zvh0B@-1r>u#t!`2aP;ou~n?q3-w|>hFjGV%$JQQSC7piH)%e zjznE=7wS=6MO`;*4fjiE6so;V4c>nZG{F)(P_NGw?1?FAx)b}L?sOKa|9Vuv@30|0 zv$#$zci|qGk9-np!rRP?Se*Dj)Py5q`7#AiDV>79(Lf#Fl4y(i7qO?Q^Hui7Qg4$~ zE;6Stf!gn622*srW2)Yjwl%1S@C*4VueBYbzUj62JDtEWmRzsb@(suZaUI@guL({h zPKiuZzYhDnl-Btp8p5p}XHK9apHBawA2~Yi690;mX?vg2lKMt+d+}RJC(1=i2Xgf( zv6QvMrzrg?ItG%f;jd}Ga(ql80of4VRLalPTd0BKC2<`*LRm*$M=H}rynIxaS@0fh zIjQpp0`GG?fMc))zGHnBGV$%i<9$?WQ^`x&Ph)1{nbdU*clbZdR`q|H=F!gg+yB>; z-_UT2`ZP>u=hf#L%PIMY>yqz6Jq<<2m*k33f8;`aFZf$MYkWbyD;@e`8FHP~$gzhK zXMOaKFBe&Tg7TCk&dE(~Jbq2l@wu78`gS1~MA1KO)bShboq1pV|BFKJMiy)MlZII8 z*)0yhPUIHQXF262r6n=H9Qco$=0#Jn@`Qw!2ct)-@r2(ZCWf||Q{~v3A zPf*_V@&9wujyCwa_&xbmlnDByw|sBncdTxw`H8onl{u3>>!@#~45vQO^8M`G+&(VK zuPxpul&U1R;8%3YU>(%|e|FMk+H?$}Err!HQvdL^zLUx8o45eqv_9MXXSx4OAUEf= z{=V)6e9pZ2mJFs}f}N;SW>T73TMctIwxRq;zqPOR?MUCH)+dkUr;vNka#Xz=VnM8J7pqCV1N9Hc&!I$6&w#rqODJ0? z{6WI|8+BZvo`o`+a)Q#BTr%fepq`()|NYNOprf|K3()|S0mRp7JBs^o4W%skaEgw0 zcAn~~EmzQ7g1@VQV;cR2S^frbA*=UJ!T6t&_>Z!bqN9&BW_6)=7zb0%aFHJ<1uQ?5 z`b+ACu@R*r=fx1;r#_$3g7^*mk5Y=d{@VHx^>x&PQAax6{{t%gQONtilD%;pr7azG ztatc-Ft?^&hBA`2ru1n?y&UB(C6M?>{0Yxea!{{_qbMt>>xiJd$+;cL<)ZZSuRqED zB;Uidn30BF)X!5gP+w0@hknA3A>K{-f_gggqwpxPjysgbU83EEmw zR#S$P^A(}OZx8-oxb(Y@CbXA$1NrKd%fvG%iFN_1{v$7KRVX@oIJ{rXf6N}7Q`!1l zqJEE3mv|yYzy4IyaNpR4caj)P!*>?1q<+9IRDrsVP)ZQ(?I~-?9mGnM9TXjr*qpME z`hGk~38iGFY#^73a)zR#2j|b#`~T{Amr4$jo3JPz;UpdF@iR(Q>isO28s`z~x5!!4 zBk8YW8}+%=zp{SSET2SMMa%txtH_tZ=K5GnqOp|DwquWV?2D7^0-LG7L3=9evy8lc z=j}$BO1Vw@b!!v(iHFi>7>45exBzER;wit;=WX;A=0C}H;s!dkCf-h53mfS|xQl#R z$}Hmhl+on=L>=A9>lp9w77|~ho{Ya*TOIoAm_b|`I}@kGPxSl~t+70QVJG~9vxtk) zX@s@Ur#{=-(^GF~^)Nh6sY=O1-A?W zKT&#G+?4uc%2hi5fzNRqZP)NAu?nRCK@IhS+%@a;%t_nZ z*bb*qHtYGnev}{xra?zv%#D>P@tkxUSK~QKD%#Yo8udC99Y0WNk{m(2m=Z#%Oo>uQ zJC+i!r07_M8()q8oWu~y3d%H2cpD2*@=~_aaW?Asl=@@4fZ{0qhhre;40Bcg-yEl= z9!@Doei8i}Q^GV6N(t&aDgHzE|1Uu%8fv^sT3b$HpXDl%t84Z5t-YtkC3RtrB9yNF zn)^=^h^DO*WryXdEw`5Jy0u{2Uj9GK g%z*4S_OHL0H15`-k8jRdcXRf~*0v}|z`f%C2f2K1wEzGB delta 14665 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -71,65 +71,65 @@ msgstr "元数据" msgid "timestamps" msgstr "时间戳" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "激活选定的 %(verbose_name_plural)s" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "所选项目已激活!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "停用选定的 %(verbose_name_plural)s" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "选定项目已停用!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "属性值" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "属性值" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "图片" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "图片" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "库存" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "股票" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "订购产品" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "订购产品" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "儿童" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "配置" @@ -193,11 +193,11 @@ msgid "" "parameter both." msgstr "该 API 的 OpenApi3 模式。可通过内容协商选择格式。可通过 Accept-Language 和查询参数选择语言。" -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "缓存输入/输出" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -205,41 +205,41 @@ msgstr "" "仅使用密钥从缓存中读取允许的数据。\n" "应用密钥、数据和带验证的超时,将数据写入缓存。" -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "获取支持的语言列表" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "获取应用程序的可公开参数" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "向支持团队发送信息" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "请求 CORSed URL。只允许使用 https。" -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "在产品、类别和品牌之间进行搜索" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "全局搜索端点可跨项目表格进行查询" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "以企业身份购买订单" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "使用提供的带有 `product_uuid` 和 `attributes` 的 `products` 作为企业购买订单。" -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "从购买的数字订单中下载数字资产" @@ -347,9 +347,9 @@ msgstr "重写现有类别的某些字段,保存不可编辑内容" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "搜索引擎优化元快照" @@ -456,7 +456,7 @@ msgstr "检索用户当前的挂单" msgid "retrieves a current pending order of an authenticated user" msgstr "检索已验证用户的当前待处理订单" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "无需创建账户即可购买订单" @@ -624,9 +624,6 @@ msgid "Product UUID or slug" msgstr "产品 UUID 或 Slug" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "创建产品" @@ -911,8 +908,8 @@ msgstr "重写现有产品标签,保存不可编辑内容" msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "重写现有产品标签的某些字段,保存不可编辑字段" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "未提供搜索条件。" @@ -921,8 +918,8 @@ msgstr "未提供搜索条件。" msgid "Search" msgstr "搜索" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -968,8 +965,8 @@ msgid "Quantity" msgstr "数量" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "蛞蝓" @@ -985,7 +982,7 @@ msgstr "包括子类别" msgid "Include personal ordered" msgstr "包括个人订购的产品" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "商品编号" @@ -1006,12 +1003,12 @@ msgid "Bought before (inclusive)" msgstr "之前购买(含)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "用户电子邮件" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "用户 UUID" @@ -1035,301 +1032,301 @@ msgstr "整个类别(是否至少有 1 个产品)" msgid "Level" msgstr "级别" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "产品 UUID" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "在缓存中查找或设置的关键字" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "缓存中要存储的数据" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "将数据设置为缓存的超时(以秒为单位" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "缓存数据" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "从请求的 URL 中获取驼峰化 JSON 数据" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "只允许使用以 http(s):// 开头的 URL" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "在订单中添加产品" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "未找到 {order_uuid} 订单!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "从订单中删除产品" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "从订单中删除所有产品" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "购买订单" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "请提供 order_uuid 或 order_hr_id(互斥)!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy() 方法中的类型有误:{type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "对订单中的产品列表执行操作" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "删除/添加" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "操作必须是 \"添加 \"或 \"删除\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "对愿望清单中的产品列表执行操作" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "请提供 `wishlist_uuid` 值。" -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "未找到 Wishlist {wishlist_uuid}!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "在订单中添加产品" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "从订单中删除产品" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "从订单中删除产品" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "从订单中删除产品" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "购买订单" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" msgstr "请以字符串形式发送属性,格式如 attr1=value1,attr2=value2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "添加或删除订单产品的反馈信息" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "操作必须是 \"添加 \"或 \"删除\"!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "未找到订购产品 {order_product_uuid}!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "用户提供的原始地址字符串" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} 不存在:{uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "限值必须在 1 和 10 之间" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - 工作起来得心应手" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "属性" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "分组属性" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "属性组" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "类别" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "品牌" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "类别" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "加价百分比" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "哪些属性和值可用于筛选该类别。" -#: engine/core/graphene/object_types.py:227 +#: engine/core/graphene/object_types.py:229 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "该类别产品的最低和最高价格(如有)。" -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "此类别的标签" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "该类别中的产品" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "供应商" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "纬度(Y 坐标)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "经度(X 坐标)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "如何" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "评级值从 1 到 10(包括 10),如果未设置,则为 0。" -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "代表用户的反馈意见。" -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "通知" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "此订单产品的下载网址(如适用" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "反馈意见" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "该订单中的订单产品列表" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "账单地址" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "此订单的送货地址,如果与账单地址相同或不适用,请留空" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "订单总价" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "订单中产品的总数量" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "订单中的所有产品都是数字产品吗?" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "此订单的交易" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "订单" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "图片 URL" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "产品图片" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "类别" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "反馈意见" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "品牌" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "属性组" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1337,7 +1334,7 @@ msgstr "属性组" msgid "price" msgstr "价格" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1345,39 +1342,39 @@ msgstr "价格" msgid "quantity" msgstr "数量" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "反馈数量" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "仅限个人订购的产品" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "折扣价" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "产品" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "促销代码" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "销售产品" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "促销活动" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "供应商" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1385,98 +1382,98 @@ msgstr "供应商" msgid "product" msgstr "产品" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "心愿单上的产品" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "愿望清单" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "标签产品" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "产品标签" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "标签类别" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "类别标签" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "项目名称" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "公司名称" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "公司地址" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "公司电话号码" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "电子邮件来自\",有时必须使用它来代替主机用户值" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "电子邮件主机用户" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "最高付款额" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "最低付款额" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "分析数据" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "广告数据" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "配置" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "语言代码" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "语言名称" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "语言标志(如果有):)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "获取支持的语言列表" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "产品搜索结果" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "产品搜索结果" @@ -1489,23 +1486,23 @@ msgid "" msgstr "" "代表一组属性,可以是分层的。该类用于管理和组织属性组。一个属性组可以有一个父组,从而形成一个层次结构。这有助于在复杂的系统中更有效地分类和管理属性。" -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "本组家长" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "父属性组" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "属性组名称" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "属性组" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1517,47 +1514,47 @@ msgid "" msgstr "" "代表一个供应商实体,能够存储有关外部供应商及其交互要求的信息。供应商类用于定义和管理与外部供应商相关的信息。它存储供应商的名称、通信所需的身份验证详细信息,以及从供应商处检索产品时所应用的百分比标记。该模型还维护附加的元数据和约束,使其适用于与第三方供应商交互的系统。" -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "存储供应商应用程序接口通信所需的凭证和端点" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "认证信息" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "定义从该供应商获取的产品的标记" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "供应商加价百分比" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "供应商名称" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "供应商名称" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "回复文件" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "供应商最后的处理回复" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "供应商的集成文件路径" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "整合路径" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1568,42 +1565,42 @@ msgstr "" "代表用于分类或识别产品的产品标签。ProductTag " "类旨在通过内部标签标识符和用户友好显示名称的组合,对产品进行唯一标识和分类。它支持通过混合功能导出的操作,并为管理目的提供元数据定制功能。" -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "产品标签的内部标签标识符" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "标签名称" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "方便用户使用的产品标签名称" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "标签显示名称" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "产品标签" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "代表用于产品的类别标签。该类是类别标签的模型,可用于关联和分类产品。它包括内部标签标识符和用户友好显示名称的属性。" -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "类别标签" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "类别标签" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1617,51 +1614,51 @@ msgid "" msgstr "" "代表类别实体,用于在分层结构中组织和分组相关项目。类别可与其他类别建立层次关系,支持父子关系。该类包括元数据和可视化表示字段,是类别相关功能的基础。该类通常用于定义和管理应用程序中的产品类别或其他类似分组,允许用户或管理员指定类别的名称、描述和层次结构,以及分配图像、标记或优先级等属性。" -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "上传代表该类别的图片" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "类别 图像" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "定义该类别产品的加价百分比" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "该类别的父类别,形成等级结构" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "父类" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "类别名称" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "提供该类别的名称" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "为该类别添加详细说明" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "类别说明" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "有助于描述或归类该类别的标签" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "优先权" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " @@ -1671,47 +1668,47 @@ msgid "" msgstr "" "代表系统中的品牌对象。该类用于处理与品牌相关的信息和属性,包括名称、徽标、描述、相关类别、唯一标签和优先顺序。它允许在应用程序中组织和表示与品牌相关的数据。" -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "品牌名称" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "品牌名称" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "上传代表该品牌的徽标" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "品牌小形象" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "上传代表该品牌的大徽标" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "品牌大形象" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "添加品牌的详细描述" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "品牌描述" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "与该品牌相关的可选类别" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "类别" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" "Represents the stock of a product managed in the system. This class provides" " details about the relationship between vendors, products, and their stock " @@ -1723,72 +1720,72 @@ msgstr "" "代表系统中管理的产品库存。该类提供有关供应商、产品及其库存信息之间关系的详细信息,以及与库存相关的属性,如价格、购买价格、数量、SKU " "和数字资产。它是库存管理系统的一部分,用于跟踪和评估不同供应商提供的产品。" -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "提供该产品库存的供应商" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "相关供应商" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "加价后给客户的最终价格" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "销售价格" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "与该库存条目相关的产品" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "相关产品" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "为该产品支付给供应商的价格" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "供应商购买价格" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "产品的可用库存量" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "库存数量" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "供应商指定的 SKU,用于识别产品" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "供应商 SKU" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "与该库存相关的数字文件(如适用" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "数字文件" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "系统属性" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "库存条目" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1802,55 +1799,63 @@ msgstr "" "代表产品的属性,如类别、品牌、标签、数字状态、名称、描述、零件编号和标签。提供相关的实用属性,以检索评级、反馈计数、价格、数量和订单总数。设计用于处理电子商务或库存管理的系统。该类可与相关模型(如类别、品牌和" " ProductTag)交互,并对频繁访问的属性进行缓存管理,以提高性能。它用于在应用程序中定义和操作产品数据及其相关信息。" -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "该产品所属类别" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "可选择将该产品与某个品牌联系起来" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "有助于描述或归类该产品的标签" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "表示该产品是否以数字方式交付" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "产品是否数字化" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "表示该产品是否应从定期任务中更新" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "产品是否可更新" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "为产品提供一个明确的标识名称" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "产品名称" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "添加产品的详细描述" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "产品说明" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "该产品的零件编号" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "部件编号" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "该产品的库存单位" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " @@ -1861,83 +1866,83 @@ msgid "" msgstr "" "代表系统中的一个属性。该类用于定义和管理属性,属性是可与其他实体关联的自定义数据块。属性有相关的类别、组、值类型和名称。该模型支持多种类型的值,包括字符串、整数、浮点数、布尔值、数组和对象。这样就可以实现动态、灵活的数据结构。" -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "该属性的组" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "字符串" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "整数" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "浮动" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "布尔型" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "阵列" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "对象" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "属性值的类型" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "价值类型" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "该属性的名称" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "属性名称" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "可过滤" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "指定该属性是否可用于筛选" -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "属性" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" "Represents a specific value for an attribute that is linked to a product. It" " links the 'attribute' to a unique 'value', allowing better organization and" " dynamic representation of product characteristics." msgstr "代表与产品相关联的属性的特定值。它将 \"属性 \"与唯一的 \"值 \"联系起来,从而更好地组织和动态呈现产品特征。" -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "该值的属性" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "与该属性值相关的特定产品" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "该属性的具体值" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " "class is designed to manage images for products, including functionality for" @@ -1947,39 +1952,39 @@ msgid "" msgstr "" "代表与系统中产品相关联的产品图片。该类用于管理产品图片,包括上传图片文件、将图片与特定产品关联以及确定图片显示顺序等功能。它还包括一个为图像提供替代文本的可访问性功能。" -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "为图像提供替代文字,以便于访问" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "图片 alt 文本" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "上传该产品的图片文件" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "产品图片" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "确定图像的显示顺序" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "显示优先级" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "该图片所代表的产品" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "产品图片" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" @@ -1990,39 +1995,39 @@ msgid "" msgstr "" "代表有折扣的产品促销活动。该类用于定义和管理为产品提供百分比折扣的促销活动。该类包括用于设置折扣率、提供促销详情以及将其链接到适用产品的属性。它与产品目录集成,以确定促销活动中受影响的产品。" -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "所选产品的折扣百分比" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "折扣百分比" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "为该促销活动提供一个独特的名称" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "推广名称" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "促销说明" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "选择促销活动包括哪些产品" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "包括产品" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "促销活动" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2030,23 +2035,23 @@ msgid "" "operations for adding and removing multiple products at once." msgstr "代表用户用于存储和管理所需产品的愿望清单。该类提供管理产品集合的功能,支持添加和删除产品等操作,还支持同时添加和删除多个产品的操作。" -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "用户标记为想要的产品" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "拥有此愿望清单的用户" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "心愿单所有者" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "愿望清单" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " @@ -2057,19 +2062,19 @@ msgid "" msgstr "" "代表与产品相关的文档记录。该类用于存储与特定产品相关的文档信息,包括文件上传及其元数据。它包含处理文件类型和文档文件存储路径的方法和属性。它扩展了特定混合类的功能,并提供了额外的自定义功能。" -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "纪录片" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "纪录片" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "未解决" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" "Represents an address entity that includes location details and associations" " with a user. Provides functionality for geographic and address data " @@ -2083,59 +2088,59 @@ msgstr "" "代表一个地址实体,其中包括位置详情以及与用户的关联。提供地理和地址数据存储功能,以及与地理编码服务集成的功能。该类旨在存储详细的地址信息,包括街道、城市、地区、国家和地理位置(经度和纬度)等组件。它支持与地理编码" " API 集成,可存储原始 API 响应,以便进一步处理或检查。该类还可以将地址与用户关联起来,方便个性化数据处理。" -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "客户地址栏" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "地址栏" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "街道" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "地区" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "城市" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "地区" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "邮政编码" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "国家" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "地理位置点(经度、纬度)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "地理编码器对此地址的完整 JSON 响应" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "存储的来自地理编码服务的 JSON 响应" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "地址" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "地址" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2147,86 +2152,86 @@ msgstr "" "代表可用于折扣的促销代码,管理其有效期、折扣类型和应用。PromoCode " "类存储促销代码的详细信息,包括其唯一标识符、折扣属性(金额或百分比)、有效期、关联用户(如有)及其使用状态。该类包含验证促销代码并将其应用于订单的功能,同时确保符合约束条件。" -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "用户用于兑换折扣的唯一代码" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "促销代码标识符" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "如果不使用百分比,则使用固定折扣额" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "固定折扣额" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "未使用固定金额时适用的折扣百分比" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "折扣百分比" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "促销代码过期的时间戳" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "结束有效时间" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "该促销代码有效的时间戳" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "开始有效时间" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "使用促销代码的时间戳,如果尚未使用,则留空" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "使用时间戳" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "分配给此促销代码的用户(如适用" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "指定用户" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "促销代码" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "促销代码" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "只能定义一种折扣类型(金额或百分比),而不能同时定义两种类型或两者都不定义。" -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "促销代码已被使用" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "促销代码 {self.uuid} 的折扣类型无效!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " @@ -2237,145 +2242,145 @@ msgid "" msgstr "" "代表用户下达的订单。该类在应用程序中模拟订单,包括订单的各种属性,如账单和发货信息、状态、关联用户、通知和相关操作。订单可以有关联的产品,可以应用促销活动,设置地址,更新发货或账单详情。同样,该功能还支持在订单生命周期中管理产品。" -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "该订单使用的账单地址" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "此订单可选择使用促销代码" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "应用促销代码" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "该订单使用的送货地址" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "送货地址" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "订单在其生命周期中的当前状态" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "订单状态" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "向用户显示的通知的 JSON 结构,在管理用户界面中使用表格视图" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "该订单属性的 JSON 表示形式" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "下订单的用户" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "用户" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "订单确定的时间戳" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "购买时间" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "订单的人工可读标识符" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "人类可读 ID" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "订购" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "用户每次只能有一个挂单!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "您不能向非待处理订单添加产品" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "您不能在订单中添加非活动产品" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "添加的产品数量不能超过现有库存" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "您不能从非待处理订单中删除产品" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "查询 <{query}> 时,{name} 不存在!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "促销代码不存在" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "您只能购买指定送货地址的实物产品!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "地址不存在" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "您现在无法购买,请稍后再试。" -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "力值无效" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "您不能购买空单!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "没有用户就无法购买订单!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "没有余额的用户不能使用余额购买!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "资金不足,无法完成订单" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "未经注册不能购买,请提供以下信息:客户姓名、客户电子邮件、客户电话号码" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "付款方式无效:来自 {available_payment_methods} 的 {payment_method} !" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2385,32 +2390,32 @@ msgid "" msgstr "" "管理产品的用户反馈。该类用于捕获和存储用户对其购买的特定产品的反馈。它包含用于存储用户评论的属性、订单中相关产品的引用以及用户指定的评分。该类使用数据库字段对反馈数据进行有效建模和管理。" -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "用户提供的产品使用体验评论" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "反馈意见" -#: engine/core/models.py:1826 +#: engine/core/models.py:1827 msgid "" "references the specific product in an order that this feedback is about" msgstr "引用该反馈意见涉及的订单中的具体产品" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "相关订购产品" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "用户对产品的评分" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "产品评级" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2426,108 +2431,108 @@ msgstr "" "模型维护订单中产品的相关信息,包括购买价格、数量、产品属性和状态等详细信息。它为用户和管理员管理通知,并处理返回产品余额或添加反馈等操作。该模型还提供支持业务逻辑的方法和属性,如计算总价或为数字产品生成下载" " URL。该模型与订单和产品模型集成,并存储对它们的引用。" -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "客户购买该产品时支付的价格" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "订购时的购买价格" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "管理员对该订购产品的内部评论" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "内部意见" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "用户通知" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "该项属性的 JSON 表示形式" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "有序的产品属性" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "对包含该产品的父订单的引用" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "父顺序" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "与该订单项目相关的具体产品" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "订单中该特定产品的数量" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "产品数量" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "订单中该产品的当前状态" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "产品系列状态" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "订单产品必须有相关的订单!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "为反馈指定了错误的操作:{action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "您不能反馈未收到的订单" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "名称" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "集成的 URL" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "认证证书" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "只能有一个默认 CRM 提供商" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "客户关系管理" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "客户关系管理" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "订单的客户关系管理链接" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "订单的客户关系管理链接" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " @@ -2540,11 +2545,11 @@ msgstr "" "类提供了管理和访问与订单产品相关的下载的功能。该类维护相关订单产品的信息、下载次数以及资产是否公开可见。当相关订单处于完成状态时,该类包含一个生成用于下载资产的" " URL 的方法。" -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "下载" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "下载" @@ -2878,11 +2883,11 @@ msgstr "" "版权所有\n" " 保留所有权利" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "需要数据和超时" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "超时值无效,必须介于 0 和 216000 秒之间" @@ -2914,58 +2919,58 @@ msgstr "您没有执行此操作的权限。" msgid "NOMINATIM_URL must be configured." msgstr "必须配置 NOMINATIM_URL 参数!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "图像尺寸不应超过 w{max_width} x h{max_height} 像素!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "处理网站地图索引请求并返回 XML 响应。它确保响应包含适当的 XML 内容类型标头。" -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "处理网站地图的详细视图响应。该函数处理请求,获取相应的网站地图详细响应,并将 Content-Type 标头设置为 XML。" -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "返回支持语言及其相应信息的列表。" -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "以 JSON 对象形式返回网站参数。" -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "处理缓存操作,如使用指定的键和超时读取和设置缓存数据。" -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "处理 \"联系我们 \"表单提交。" -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "处理来自传入 POST 请求的处理和验证 URL 的请求。" -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "处理全局搜索查询。" -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "处理未注册企业的购买逻辑。" -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -2973,31 +2978,31 @@ msgstr "" "处理与订单相关的数字资产的下载。\n" "此函数会尝试为位于项目存储目录中的数字资产文件提供服务。如果未找到文件,则会出现 HTTP 404 错误,表示资源不可用。" -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid 为必填项" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "订单产品不存在" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "您只能下载一次数字资产" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "在下载数字资产前必须支付订单费用" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "订单产品没有产品" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "未找到 favicon" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3005,7 +3010,7 @@ msgstr "" "处理网站的 favicon 请求。\n" "该函数会尝试为位于项目静态目录中的 favicon 文件提供服务。如果找不到 favicon 文件,就会出现 HTTP 404 错误,表示资源不可用。" -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3014,16 +3019,16 @@ msgstr "" "将请求重定向到管理索引页面。该函数处理传入的 HTTP 请求并将其重定向到 Django 管理界面索引页面。它使用 Django 的 " "`redirect` 函数来处理 HTTP 重定向。" -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "返回 eVibes 的当前版本。" -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "返回 Dashboard 的自定义变量。" diff --git a/engine/payments/locale/ar_AR/LC_MESSAGES/django.po b/engine/payments/locale/ar_AR/LC_MESSAGES/django.po index d6ba3903..68ec93a7 100644 --- a/engine/payments/locale/ar_AR/LC_MESSAGES/django.po +++ b/engine/payments/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po b/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po index 98e4afde..de54e64c 100644 --- a/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po +++ b/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/da_DK/LC_MESSAGES/django.po b/engine/payments/locale/da_DK/LC_MESSAGES/django.po index 0a4d71b2..60f56114 100644 --- a/engine/payments/locale/da_DK/LC_MESSAGES/django.po +++ b/engine/payments/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/de_DE/LC_MESSAGES/django.po b/engine/payments/locale/de_DE/LC_MESSAGES/django.po index 6b04cc88..7c83ca80 100644 --- a/engine/payments/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/payments/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/en_GB/LC_MESSAGES/django.po b/engine/payments/locale/en_GB/LC_MESSAGES/django.po index a32611d0..a34bffcf 100644 --- a/engine/payments/locale/en_GB/LC_MESSAGES/django.po +++ b/engine/payments/locale/en_GB/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/en_US/LC_MESSAGES/django.po b/engine/payments/locale/en_US/LC_MESSAGES/django.po index f881072c..adc82922 100644 --- a/engine/payments/locale/en_US/LC_MESSAGES/django.po +++ b/engine/payments/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/es_ES/LC_MESSAGES/django.po b/engine/payments/locale/es_ES/LC_MESSAGES/django.po index faa26b1d..1a05b3b1 100644 --- a/engine/payments/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/payments/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/fa_IR/LC_MESSAGES/django.po b/engine/payments/locale/fa_IR/LC_MESSAGES/django.po index e21c73b3..731820ad 100644 --- a/engine/payments/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/payments/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/engine/payments/locale/fr_FR/LC_MESSAGES/django.po b/engine/payments/locale/fr_FR/LC_MESSAGES/django.po index ddc50bb4..36c78d44 100644 --- a/engine/payments/locale/fr_FR/LC_MESSAGES/django.po +++ b/engine/payments/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/he_IL/LC_MESSAGES/django.po b/engine/payments/locale/he_IL/LC_MESSAGES/django.po index 28c21719..71f878d5 100644 --- a/engine/payments/locale/he_IL/LC_MESSAGES/django.po +++ b/engine/payments/locale/he_IL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/hi_IN/LC_MESSAGES/django.po b/engine/payments/locale/hi_IN/LC_MESSAGES/django.po index 1ec9921b..0f5ecea4 100644 --- a/engine/payments/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/payments/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/payments/locale/hr_HR/LC_MESSAGES/django.po b/engine/payments/locale/hr_HR/LC_MESSAGES/django.po index e21c73b3..731820ad 100644 --- a/engine/payments/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/payments/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/engine/payments/locale/id_ID/LC_MESSAGES/django.po b/engine/payments/locale/id_ID/LC_MESSAGES/django.po index e1fce809..0070c758 100644 --- a/engine/payments/locale/id_ID/LC_MESSAGES/django.po +++ b/engine/payments/locale/id_ID/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/it_IT/LC_MESSAGES/django.po b/engine/payments/locale/it_IT/LC_MESSAGES/django.po index e57acfc0..4c842607 100644 --- a/engine/payments/locale/it_IT/LC_MESSAGES/django.po +++ b/engine/payments/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/ja_JP/LC_MESSAGES/django.po b/engine/payments/locale/ja_JP/LC_MESSAGES/django.po index 258cc879..415d7e22 100644 --- a/engine/payments/locale/ja_JP/LC_MESSAGES/django.po +++ b/engine/payments/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po b/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po index 1ec9921b..0f5ecea4 100644 --- a/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/payments/locale/ko_KR/LC_MESSAGES/django.po b/engine/payments/locale/ko_KR/LC_MESSAGES/django.po index 0fa007f8..098bb4a9 100644 --- a/engine/payments/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/payments/locale/ko_KR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/nl_NL/LC_MESSAGES/django.po b/engine/payments/locale/nl_NL/LC_MESSAGES/django.po index a8dda8f9..b70a61cb 100644 --- a/engine/payments/locale/nl_NL/LC_MESSAGES/django.po +++ b/engine/payments/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/no_NO/LC_MESSAGES/django.po b/engine/payments/locale/no_NO/LC_MESSAGES/django.po index 2e62a150..3865c0ec 100644 --- a/engine/payments/locale/no_NO/LC_MESSAGES/django.po +++ b/engine/payments/locale/no_NO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/pl_PL/LC_MESSAGES/django.po b/engine/payments/locale/pl_PL/LC_MESSAGES/django.po index 08c6605a..de952c7e 100644 --- a/engine/payments/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/payments/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/pt_BR/LC_MESSAGES/django.po b/engine/payments/locale/pt_BR/LC_MESSAGES/django.po index 447dec29..e3a50ce7 100644 --- a/engine/payments/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/payments/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/ro_RO/LC_MESSAGES/django.po b/engine/payments/locale/ro_RO/LC_MESSAGES/django.po index 77cbd95f..a3a0baf9 100644 --- a/engine/payments/locale/ro_RO/LC_MESSAGES/django.po +++ b/engine/payments/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/ru_RU/LC_MESSAGES/django.po b/engine/payments/locale/ru_RU/LC_MESSAGES/django.po index 8104e1b6..ded185bf 100644 --- a/engine/payments/locale/ru_RU/LC_MESSAGES/django.po +++ b/engine/payments/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/sv_SE/LC_MESSAGES/django.po b/engine/payments/locale/sv_SE/LC_MESSAGES/django.po index f38fcf99..200632cb 100644 --- a/engine/payments/locale/sv_SE/LC_MESSAGES/django.po +++ b/engine/payments/locale/sv_SE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/th_TH/LC_MESSAGES/django.po b/engine/payments/locale/th_TH/LC_MESSAGES/django.po index 5c2bb328..4d5bfc8f 100644 --- a/engine/payments/locale/th_TH/LC_MESSAGES/django.po +++ b/engine/payments/locale/th_TH/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/tr_TR/LC_MESSAGES/django.po b/engine/payments/locale/tr_TR/LC_MESSAGES/django.po index e7797eef..6b41fac2 100644 --- a/engine/payments/locale/tr_TR/LC_MESSAGES/django.po +++ b/engine/payments/locale/tr_TR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/vi_VN/LC_MESSAGES/django.po b/engine/payments/locale/vi_VN/LC_MESSAGES/django.po index 1e18e334..46f91079 100644 --- a/engine/payments/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/payments/locale/vi_VN/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po b/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po index 24fa4516..8eb1c6f4 100644 --- a/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po +++ b/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po index e6f68839..96ae1260 100644 --- a/engine/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "تأكيد إعادة تعيين كلمة مرور المستخدم" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -191,49 +191,49 @@ msgstr "رابط التفعيل غير صالح أو أن الحساب مفعل msgid "merge client-stored recently viewed products" msgstr "دمج المنتجات التي تم عرضها مؤخراً المخزنة لدى العميل" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "معرّف المستخدم الذي تم ترميزه بـ b64 الذي أحال المستخدم الجديد إلينا." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "كلمة المرور ضعيفة جداً" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "بريد إلكتروني مشوه" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "رقم هاتف مشوه: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "تنسيق السمة غير صالح: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} غير موجود: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "رابط التفعيل غير صالح!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "تم تفعيل الحساب بالفعل..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "حدث خطأ ما: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "الرمز غير صالح!" @@ -603,7 +603,7 @@ msgstr "" msgid "the token is invalid" msgstr "الرمز المميز غير صالح" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po b/engine/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po index 0410f973..e196f1ca 100644 --- a/engine/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "Potvrzení obnovení hesla uživatele" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -189,49 +189,49 @@ msgstr "Aktivační odkaz je neplatný nebo je účet již aktivován" msgid "merge client-stored recently viewed products" msgstr "Sloučení naposledy zobrazených produktů uložených u klienta" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "Uuid uživatele s kódem b64, který nám nového uživatele doporučil." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Heslo je příliš slabé" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Špatně formulovaný e-mail" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Chybně zadané telefonní číslo: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Nesprávný formát atributu: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} neexistuje: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Aktivační odkaz je neplatný!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Účet byl již aktivován..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Něco se pokazilo: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Token je neplatný!" @@ -607,7 +607,7 @@ msgstr "" msgid "the token is invalid" msgstr "Token je neplatný" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/da_DK/LC_MESSAGES/django.po b/engine/vibes_auth/locale/da_DK/LC_MESSAGES/django.po index c57f8f61..15f4f39c 100644 --- a/engine/vibes_auth/locale/da_DK/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Bekræft nulstilling af en brugers adgangskode" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -191,49 +191,49 @@ msgstr "Aktiveringslinket er ugyldigt, eller kontoen er allerede aktiveret" msgid "merge client-stored recently viewed products" msgstr "Flet nyligt viste produkter, der er gemt af klienten" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "Brugerens b64-kodede uuid, som henviste den nye bruger til os." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Adgangskoden er for svag" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Misdannet e-mail" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Misdannet telefonnummer: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ugyldigt attributformat: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} findes ikke: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Aktiveringslinket er ugyldigt!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Kontoen er allerede aktiveret..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Noget gik galt: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Token er ugyldig!" @@ -610,7 +610,7 @@ msgstr "" msgid "the token is invalid" msgstr "Tokenet er ugyldigt" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po b/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po index f2b56f07..51e94bee 100644 --- a/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -174,7 +174,7 @@ msgid "confirm a user's password reset" msgstr "Bestätigen Sie das Zurücksetzen des Passworts eines Benutzers" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -193,51 +193,51 @@ msgid "merge client-stored recently viewed products" msgstr "" "Zusammenführen der vom Kunden gespeicherten, zuletzt angesehenen Produkte" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "Die b64-kodierte uuid des Benutzers, der den neuen Benutzer an uns verwiesen " "hat." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Das Passwort ist zu schwach" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Fehlerhafte E-Mail" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Missgebildete Telefonnummer: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ungültiges Attributformat: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} existiert nicht: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Der Aktivierungslink ist ungültig!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Das Konto wurde bereits aktiviert..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Etwas ist schief gelaufen: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Token ist ungültig!" @@ -625,7 +625,7 @@ msgstr "" msgid "the token is invalid" msgstr "Das Token ist ungültig" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po b/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po index 57618682..87bde598 100644 --- a/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -175,7 +175,7 @@ msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -193,49 +193,49 @@ msgstr "Activation link is invalid or account already activated" msgid "merge client-stored recently viewed products" msgstr "Merge client-stored recently viewed products" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "The user's b64-encoded uuid who referred the new user to us." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "The password is too weak" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Malformed email" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Malformed phone number: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Invalid attribute format: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Activation link is invalid!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Account has been already activated..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Token is invalid!" @@ -610,7 +610,7 @@ msgstr "" msgid "the token is invalid" msgstr "The token is invalid" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po b/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po index 604b4db5..cdf36277 100644 --- a/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -189,49 +189,49 @@ msgstr "Activation link is invalid or account already activated" msgid "merge client-stored recently viewed products" msgstr "Merge client-stored recently viewed products" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "The user's b64-encoded uuid who referred the new user to us." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "The password is too weak" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Malformed email" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Malformed phone number: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Invalid attribute format: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Activation link is invalid!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Account has been already activated..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Token is invalid!" @@ -606,7 +606,7 @@ msgstr "" msgid "the token is invalid" msgstr "The token is invalid" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po b/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po index 9cef0a55..f9937e75 100644 --- a/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Confirmar el restablecimiento de la contraseña de un usuario" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -191,50 +191,50 @@ msgstr "El enlace de activación no es válido o la cuenta ya está activada" msgid "merge client-stored recently viewed products" msgstr "Fusionar productos vistos recientemente almacenados por el cliente" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "El uuid codificado en b64 del usuario que nos ha remitido al nuevo usuario." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "La contraseña es demasiado débil" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Correo electrónico malformado" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Número de teléfono malformado: ¡{phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato de atributo no válido: ¡{attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} no existe: ¡{uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "El enlace de activación no es válido." -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "La cuenta ya ha sido activada..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Algo salió mal: {e!s}." -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "¡La ficha no es válida!" @@ -612,7 +612,7 @@ msgstr "" msgid "the token is invalid" msgstr "El token no es válido" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po index 196ddce5..b83ca7f2 100644 --- a/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -170,7 +170,7 @@ msgid "confirm a user's password reset" msgstr "" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -188,49 +188,49 @@ msgstr "" msgid "merge client-stored recently viewed products" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "" @@ -570,7 +570,7 @@ msgstr "" msgid "the token is invalid" msgstr "" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po index a268d7f8..e3a47048 100644 --- a/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -176,7 +176,7 @@ msgid "confirm a user's password reset" msgstr "Confirmer la réinitialisation du mot de passe d'un utilisateur" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -194,51 +194,51 @@ msgstr "Le lien d'activation n'est pas valide ou le compte est déjà activé" msgid "merge client-stored recently viewed products" msgstr "Fusionner les produits récemment consultés stockés par le client" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "L'uuid b64-encodé de l'utilisateur qui nous a recommandé le nouvel " "utilisateur." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Le mot de passe est trop faible" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Courriel malformé" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Numéro de téléphone malformé : {phone_number} !" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Format d'attribut non valide : {attribute_pair} !" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} n'existe pas : {uuid} !" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Le lien d'activation n'est pas valide !" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Le compte a déjà été activé..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Quelque chose a mal tourné : {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Le jeton n'est pas valide !" @@ -627,7 +627,7 @@ msgstr "" msgid "the token is invalid" msgstr "Le jeton n'est pas valide" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/he_IL/LC_MESSAGES/django.po b/engine/vibes_auth/locale/he_IL/LC_MESSAGES/django.po index 363dd670..7ff2944e 100644 --- a/engine/vibes_auth/locale/he_IL/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/he_IL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "אשר את איפוס הסיסמה של המשתמש" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -189,49 +189,49 @@ msgstr "קישור ההפעלה אינו תקף או שהחשבון כבר הו msgid "merge client-stored recently viewed products" msgstr "מיזוג מוצרים שנצפו לאחרונה המאוחסנים אצל הלקוח" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "ה-uuid המקודד ב-b64 של המשתמש שהפנה אלינו את המשתמש החדש." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "הסיסמה חלשה מדי" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "דוא\"ל פגום" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "מספר טלפון שגוי: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "פורמט תכונה לא חוקי: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} אינו קיים: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "קישור ההפעלה אינו תקף!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "החשבון כבר הופעל..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "משהו השתבש: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "האסימון אינו חוקי!" @@ -595,7 +595,7 @@ msgstr "" msgid "the token is invalid" msgstr "האסימון אינו חוקי" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po b/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po index 3ca2b03e..e7e68622 100644 --- a/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -170,7 +170,7 @@ msgid "confirm a user's password reset" msgstr "" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -188,49 +188,49 @@ msgstr "" msgid "merge client-stored recently viewed products" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "" @@ -570,7 +570,7 @@ msgstr "" msgid "the token is invalid" msgstr "" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po index 196ddce5..b83ca7f2 100644 --- a/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -170,7 +170,7 @@ msgid "confirm a user's password reset" msgstr "" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -188,49 +188,49 @@ msgstr "" msgid "merge client-stored recently viewed products" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "" @@ -570,7 +570,7 @@ msgstr "" msgid "the token is invalid" msgstr "" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po b/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po index 09695ee1..757479a5 100644 --- a/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Mengonfirmasi pengaturan ulang kata sandi pengguna" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -191,50 +191,50 @@ msgstr "Tautan aktivasi tidak valid atau akun sudah diaktifkan" msgid "merge client-stored recently viewed products" msgstr "Menggabungkan produk yang baru saja dilihat yang disimpan klien" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "UID pengguna yang dikodekan b64 yang merujuk pengguna baru kepada kami." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Kata sandi terlalu lemah" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Email yang salah" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Nomor telepon rusak: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Format atribut tidak valid: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} tidak ada: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Tautan aktivasi tidak valid!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Akun sudah diaktifkan..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Ada yang tidak beres: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Token tidak valid!" @@ -613,7 +613,7 @@ msgstr "" msgid "the token is invalid" msgstr "Token tidak valid" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po b/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po index 04c2e00b..0820200c 100644 --- a/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -175,7 +175,7 @@ msgid "confirm a user's password reset" msgstr "Confermare la reimpostazione della password di un utente" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -193,49 +193,49 @@ msgstr "Il link di attivazione non è valido o l'account è già stato attivato. msgid "merge client-stored recently viewed products" msgstr "Unire i prodotti memorizzati dal cliente e visti di recente" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "L'uuid b64-encoded dell'utente che ci ha segnalato il nuovo utente." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "La password è troppo debole" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Email malformata" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Numero di telefono malformato: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato attributo non valido: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} non esiste: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Il link di attivazione non è valido!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "L'account è già stato attivato..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Qualcosa è andato storto: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Il gettone non è valido!" @@ -617,7 +617,7 @@ msgstr "" msgid "the token is invalid" msgstr "Il token non è valido" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po index 53dd2583..fdbff949 100644 --- a/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "ユーザーのパスワード・リセットを確認する" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -191,49 +191,49 @@ msgstr "" msgid "merge client-stored recently viewed products" msgstr "クライアントが最近閲覧した商品をマージする" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "新規ユーザーを紹介したユーザーのb64エンコードされたuuid。" -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "パスワードが弱すぎる" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "不正な電子メール" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "電話番号が不正です:{phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "無効な属性形式です:{attribute_pair}です!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name}は存在しません:{uuid}が存在しません!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "アクティベーションリンクが無効です!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "アカウントはすでに有効になっています..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "何かが間違っていた:{e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "トークンが無効です!" @@ -606,7 +606,7 @@ msgstr "" msgid "the token is invalid" msgstr "トークンが無効" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po b/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po index 3ca2b03e..e7e68622 100644 --- a/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -170,7 +170,7 @@ msgid "confirm a user's password reset" msgstr "" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -188,49 +188,49 @@ msgstr "" msgid "merge client-stored recently viewed products" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "" @@ -570,7 +570,7 @@ msgstr "" msgid "the token is invalid" msgstr "" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po index c8e90169..8c9a44db 100644 --- a/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -170,7 +170,7 @@ msgid "confirm a user's password reset" msgstr "사용자의 비밀번호 재설정 확인" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -188,49 +188,49 @@ msgstr "활성화 링크가 유효하지 않거나 계정이 이미 활성화되 msgid "merge client-stored recently viewed products" msgstr "클라이언트가 저장한 최근 본 제품 병합" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "새 사용자를 추천한 사용자의 b64로 인코딩된 UUID입니다." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "비밀번호가 너무 약합니다." -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "잘못된 이메일" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "잘못된 전화 번호입니다: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "잘못된 속성 형식입니다: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name}가 존재하지 않습니다: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "활성화 링크가 유효하지 않습니다!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "계정이 이미 활성화되었습니다..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "문제가 발생했습니다: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "토큰이 유효하지 않습니다!" @@ -602,7 +602,7 @@ msgstr "" msgid "the token is invalid" msgstr "토큰이 유효하지 않습니다." -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po b/engine/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po index ab058c44..b382994d 100644 --- a/engine/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Bevestig het resetten van het wachtwoord van een gebruiker" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -191,51 +191,51 @@ msgstr "Activeringslink is ongeldig of account is al geactiveerd" msgid "merge client-stored recently viewed products" msgstr "Laatst bekeken producten samenvoegen" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "De b64-gecodeerde uuid van de gebruiker die de nieuwe gebruiker naar ons " "heeft doorverwezen." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Het wachtwoord is te zwak" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Misvormde e-mail" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Misvormd telefoonnummer: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ongeldig attribuutformaat: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} bestaat niet: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Activeringslink is ongeldig!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Account is al geactiveerd..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Er ging iets mis: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Token is invalid!" @@ -614,7 +614,7 @@ msgstr "" msgid "the token is invalid" msgstr "Het token is ongeldig" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/no_NO/LC_MESSAGES/django.po b/engine/vibes_auth/locale/no_NO/LC_MESSAGES/django.po index 6b1c4ce1..36d0ba2d 100644 --- a/engine/vibes_auth/locale/no_NO/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/no_NO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Bekreft tilbakestilling av en brukers passord" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -191,49 +191,49 @@ msgstr "Aktiveringslenken er ugyldig eller kontoen er allerede aktivert" msgid "merge client-stored recently viewed products" msgstr "Slå sammen nylig viste produkter lagret hos kunden" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "Brukerens b64-kodede uuid som henviste den nye brukeren til oss." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Passordet er for svakt" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Feilaktig e-post" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Feilaktig telefonnummer: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ugyldig attributtformat: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} eksisterer ikke: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Aktiveringslenken er ugyldig!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Kontoen er allerede aktivert..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Noe gikk galt: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Tokenet er ugyldig!" @@ -610,7 +610,7 @@ msgstr "" msgid "the token is invalid" msgstr "Tokenet er ugyldig" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po b/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po index a7b21e73..c807a145 100644 --- a/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Potwierdzenie zresetowania hasła użytkownika" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -191,51 +191,51 @@ msgstr "Link aktywacyjny jest nieprawidłowy lub konto zostało już aktywowane. msgid "merge client-stored recently viewed products" msgstr "Scalanie ostatnio oglądanych produktów przechowywanych przez klienta" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "Zakodowany w b64 identyfikator uuid użytkownika, który polecił nam nowego " "użytkownika." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Hasło jest zbyt słabe" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Zniekształcona wiadomość e-mail" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Zniekształcony numer telefonu: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Nieprawidłowy format atrybutu: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nie istnieje: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Link aktywacyjny jest nieprawidłowy!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Konto zostało już aktywowane..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Coś poszło nie tak: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Token jest nieprawidłowy!" @@ -613,7 +613,7 @@ msgstr "" msgid "the token is invalid" msgstr "Token jest nieprawidłowy" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po index d9174b09..c86666c0 100644 --- a/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -172,7 +172,7 @@ msgid "confirm a user's password reset" msgstr "Confirmar a redefinição de senha de um usuário" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -190,49 +190,49 @@ msgstr "O link de ativação é inválido ou a conta já está ativada" msgid "merge client-stored recently viewed products" msgstr "Mesclar produtos recentemente visualizados armazenados pelo cliente" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "O uuid codificado em b64 do usuário que nos indicou o novo usuário." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "A senha é muito fraca" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "E-mail malformado" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Número de telefone malformado: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato de atributo inválido: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} não existe: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "O link de ativação é inválido!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "A conta já foi ativada..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Algo deu errado: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "O token é inválido!" @@ -611,7 +611,7 @@ msgstr "" msgid "the token is invalid" msgstr "O token é inválido" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po index ac097ad4..39b4a656 100644 --- a/engine/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -175,7 +175,7 @@ msgid "confirm a user's password reset" msgstr "Confirmați resetarea parolei unui utilizator" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -193,50 +193,50 @@ msgstr "Linkul de activare este invalid sau contul este deja activat" msgid "merge client-stored recently viewed products" msgstr "Fuzionați produsele recent vizualizate stocate de client" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "Uuid codificat b64 al utilizatorului care ne-a recomandat noul utilizator." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Parola este prea slabă" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "E-mail malformat" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Număr de telefon malformat: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Format de atribut invalid: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nu există: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Linkul de activare este invalid!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Contul a fost deja activat..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Ceva nu a mers bine: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Token-ul nu este valabil!" @@ -619,7 +619,7 @@ msgstr "" msgid "the token is invalid" msgstr "Jetonul nu este valabil" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po index 3e8e45b2..94ea2e4a 100644 --- a/engine/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Подтверждение сброса пароля пользователя" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -191,51 +191,51 @@ msgstr "Ссылка на активацию недействительна ил msgid "merge client-stored recently viewed products" msgstr "Объедините недавно просмотренные продукты, хранящиеся в памяти клиента" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "b64-кодированный uuid пользователя, который направил к нам нового " "пользователя." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Пароль слишком слабый" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Некорректное письмо" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Некорректный номер телефона: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Недопустимый формат атрибута: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} не существует: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Ссылка на активацию недействительна!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Аккаунт уже активирован..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Что-то пошло не так: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Токен недействителен!" @@ -612,7 +612,7 @@ msgstr "" msgid "the token is invalid" msgstr "Токен недействителен" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/sv_SE/LC_MESSAGES/django.po b/engine/vibes_auth/locale/sv_SE/LC_MESSAGES/django.po index ad7bec6e..57ca50d6 100644 --- a/engine/vibes_auth/locale/sv_SE/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/sv_SE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Bekräfta återställning av en användares lösenord" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -191,50 +191,50 @@ msgstr "Aktiveringslänken är ogiltig eller kontot är redan aktiverat" msgid "merge client-stored recently viewed products" msgstr "Sammanfoga klientlagrade nyligen visade produkter" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "Den användares b64-kodade uuid som hänvisade den nya användaren till oss." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Lösenordet är för svagt" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Missvisande e-post" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Missbildat telefonnummer: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ogiltigt attributformat: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} existerar inte: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Aktiveringslänken är ogiltig!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Kontot har redan aktiverats..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Något gick fel: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Token är ogiltig!" @@ -610,7 +610,7 @@ msgstr "" msgid "the token is invalid" msgstr "Token är ogiltig" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po b/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po index d58ee265..0de889be 100644 --- a/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "ยืนยันการรีเซ็ตรหัสผ่านของผู้ใช้" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -189,49 +189,49 @@ msgstr "ลิงก์การเปิดใช้งานไม่ถูก msgid "merge client-stored recently viewed products" msgstr "รวมสินค้าที่ลูกค้าดูล่าสุดซึ่งเก็บไว้ในระบบของลูกค้า" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "ผู้ใช้ที่เข้ารหัส uuid ด้วย b64 ซึ่งแนะนำผู้ใช้ใหม่ให้เรามา" -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "รหัสผ่านอ่อนแอเกินไป" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "อีเมลไม่ถูกต้อง" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "หมายเลขโทรศัพท์ไม่ถูกต้อง: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "รูปแบบแอตทริบิวต์ไม่ถูกต้อง: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} ไม่พบ: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "ลิงก์การเปิดใช้งานไม่ถูกต้อง!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "บัญชีได้รับการเปิดใช้งานแล้ว..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "เกิดข้อผิดพลาด: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "โทเคนไม่ถูกต้อง!" @@ -592,7 +592,7 @@ msgstr "" msgid "the token is invalid" msgstr "โทเค็นไม่ถูกต้อง" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/tr_TR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/tr_TR/LC_MESSAGES/django.po index 5bb8fa6b..3e382edc 100644 --- a/engine/vibes_auth/locale/tr_TR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/tr_TR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -172,7 +172,7 @@ msgid "confirm a user's password reset" msgstr "Bir kullanıcının parola sıfırlamasını onaylama" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -190,49 +190,49 @@ msgstr "Etkinleştirme bağlantısı geçersiz veya hesap zaten etkinleştirilmi msgid "merge client-stored recently viewed products" msgstr "İstemcide depolanan son görüntülenen ürünleri birleştirme" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "Yeni kullanıcıyı bize yönlendiren kullanıcının b64 kodlu uuid'si." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Şifre çok zayıf" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Hatalı biçimlendirilmiş e-posta" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Hatalı biçimlendirilmiş telefon numarası: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Geçersiz öznitelik biçimi: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} mevcut değil: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Aktivasyon bağlantısı geçersiz!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Hesap zaten etkinleştirildi..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Bir şeyler ters gitti: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Jeton geçersiz!" @@ -609,7 +609,7 @@ msgstr "" msgid "the token is invalid" msgstr "Belirteç geçersiz" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po b/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po index 2ea792a1..fc09d9e3 100644 --- a/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "Xác nhận việc đặt lại mật khẩu của người dùng" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -190,51 +190,51 @@ msgid "merge client-stored recently viewed products" msgstr "" "Ghép các sản phẩm đã xem gần đây được lưu trữ trên thiết bị của khách hàng" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "Mã UUID được mã hóa bằng B64 của người dùng đã giới thiệu người dùng mới cho " "chúng tôi." -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "Mật khẩu quá yếu." -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "Email không hợp lệ" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Số điện thoại không hợp lệ: {phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Định dạng thuộc tính không hợp lệ: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} không tồn tại: {uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "Liên kết kích hoạt không hợp lệ!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "Tài khoản đã được kích hoạt..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "Có sự cố xảy ra: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "Token không hợp lệ!" @@ -610,7 +610,7 @@ msgstr "" msgid "the token is invalid" msgstr "Token không hợp lệ" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po b/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po index f2f5f802..d96cfce8 100644 --- a/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 17:19+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -169,7 +169,7 @@ msgid "confirm a user's password reset" msgstr "确认用户密码重置" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:345 +#: engine/vibes_auth/graphene/mutations.py:351 #: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107 #: engine/vibes_auth/viewsets.py:94 msgid "passwords do not match" @@ -187,49 +187,49 @@ msgstr "激活链接无效或账户已激活" msgid "merge client-stored recently viewed products" msgstr "合并客户存储的最近查看的产品" -#: engine/vibes_auth/graphene/mutations.py:47 +#: engine/vibes_auth/graphene/mutations.py:46 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "将新用户推荐给我们的用户的 b64-encoded uuid。" -#: engine/vibes_auth/graphene/mutations.py:69 +#: engine/vibes_auth/graphene/mutations.py:68 msgid "password too weak" msgstr "密码太弱" -#: engine/vibes_auth/graphene/mutations.py:129 +#: engine/vibes_auth/graphene/mutations.py:128 msgid "malformed email" msgstr "畸形电子邮件" -#: engine/vibes_auth/graphene/mutations.py:141 +#: engine/vibes_auth/graphene/mutations.py:140 #: engine/vibes_auth/serializers.py:117 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "畸形电话号码:{phone_number}!" -#: engine/vibes_auth/graphene/mutations.py:166 +#: engine/vibes_auth/graphene/mutations.py:165 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "属性格式无效:{attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:183 +#: engine/vibes_auth/graphene/mutations.py:182 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} 不存在:{uuid}!" -#: engine/vibes_auth/graphene/mutations.py:298 +#: engine/vibes_auth/graphene/mutations.py:304 #: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180 msgid "activation link is invalid!" msgstr "激活链接无效!" -#: engine/vibes_auth/graphene/mutations.py:301 +#: engine/vibes_auth/graphene/mutations.py:307 msgid "account already activated..." msgstr "帐户已激活..." -#: engine/vibes_auth/graphene/mutations.py:308 -#: engine/vibes_auth/graphene/mutations.py:370 +#: engine/vibes_auth/graphene/mutations.py:314 +#: engine/vibes_auth/graphene/mutations.py:376 msgid "something went wrong: {e!s}" msgstr "出了问题:{e!s}" -#: engine/vibes_auth/graphene/mutations.py:352 +#: engine/vibes_auth/graphene/mutations.py:358 #: engine/vibes_auth/viewsets.py:106 msgid "token is invalid!" msgstr "令牌无效!" @@ -586,7 +586,7 @@ msgstr "代表使用特定序列化和验证逻辑验证 JSON Web 标记 (JWT) msgid "the token is invalid" msgstr "令牌无效" -#: engine/vibes_auth/viewsets.py:45 +#: engine/vibes_auth/viewsets.py:44 msgid "" "User view set implementation.\n" "Provides a set of actions that manage user-related data such as creation, " diff --git a/evibes/locale/ar_AR/LC_MESSAGES/django.mo b/evibes/locale/ar_AR/LC_MESSAGES/django.mo deleted file mode 100644 index f61408368c38effd9c269d51f3cc042cbc07f148..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10177 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\n" -"Language-Team: LANGUAGE \n" -"Language: ar-ar\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "اسم الشركة" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "عنوان الشركة" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "رقم هاتف الشركة" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"معدل الضريبة في الولاية القضائية لشركتك. اترك 0 إذا كنت لا تريد معالجة " -"الضرائب." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "يوضح ما إذا كانت الضرائب مشمولة بالفعل في أسعار بيع المنتج" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "مفتاح API لسعر الصرف" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!، لا تتغير!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "مضيف SMTP" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "منفذ SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "استخدام TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "استخدام SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "اسم مستخدم SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "كلمة مرور SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "البريد من خيار البريد من" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "عدد الأيام التي نخزن فيها الرسائل من المستخدمين المجهولين" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "عدد الأيام التي نخزن فيها الرسائل من المستخدمين الموثقين" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "تعطيل وظيفة الشراء" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "عنوان URL الخاص بواجهة برمجة تطبيقات OpenStreetMap Nominatim" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "مفتاح واجهة برمجة تطبيقات OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "مفتاح واجهة برمجة التطبيقات المجردة" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "وكيل HTTP" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "كيان لتخزين بيانات الإعلانات" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "كيان لتخزين بيانات التحليلات" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "حفظ الاستجابات من واجهات برمجة تطبيقات البائعين" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "قاعدة البيانات الاحتياطية" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "وسائط النسخ الاحتياطي" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "الخيارات القانونية" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "خيارات البريد الإلكتروني" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "خيارات الميزات" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "خيارات تحسين محركات البحث" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "خيارات النظام" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"مرحباً بك في وثائق eVibes.\n" -"\n" -"eVibes عبارة عن منصة تجارة إلكترونية قوية تتيح لك إطلاق وإدارة متجر إلكتروني من أي نوع بنقرات قليلة.\n" -"\n" -"## الميزات الرئيسية\n" -"- ** كتالوج المنتجات:** إدارة تفاصيل المنتج والتسعير والمخزون والتوافر عبر فئات متعددة.\n" -"- **إدارة الطلبات:** معالجة الطلبات وتتبع التنفيذ والتعامل مع طلبات العملاء بكفاءة.\n" -"- **المصادقة والتفويض:** مصادقة شاملة للمستخدمين باستخدام رموز JWT المميزة والأذونات المستندة إلى الأدوار.\n" -"- ** معالجة المدفوعات:** دمج بوابات دفع متعددة وإدارة المعاملات بشكل آمن.\n" -"- ** إدارة المدونة والمحتوى:** إنشاء وإدارة منشورات المدونة والمحتوى التسويقي لمتجرك.\n" -"- ** عمليات B2B:** نقاط نهاية مخصصة للمعاملات بين الشركات وإدارة البيع بالجملة.\n" -"- **دعم متعدد اللغات:** خدمة العملاء في جميع أنحاء العالم مع إمكانات التدويل الكاملة (i18n).\n" -"- **تكامل مخصص:** بنية واجهة برمجة تطبيقات قابلة للتوسيع للتكامل مع المنصات والخدمات الخارجية.\n" -"- **التحليلات والتقارير:** إنشاء تقارير مفصلة عن المبيعات والمخزون وسلوك العملاء.\n" -"- ** تحديثات في الوقت الفعلي:** احصل على بيانات مباشرة عن مستويات المخزون وحالات الطلبات وتغييرات الأسعار.\n" -"\n" -"## واجهات برمجة التطبيقات المتاحة\n" -"- **واجهة برمجة تطبيقات REST:** واجهة REST كاملة (هذه الوثائق)\n" -"- ** واجهة برمجة تطبيقات GraphiQL:** متوفرة على '/graphql/' مع واجهة GraphiQL للاستعلامات التفاعلية\n" -"\n" -"## المصادقة\n" -"- يتم التعامل مع المصادقة عبر رموز JWT المميزة. قم بتضمين الرمز المميز في رأس \"X-EVIBES-AUTH\" لطلباتك بصيغة \"حامل \".\n" -"- عمر الرمز المميز للوصول هو %(access_lifetime)d %(access_unit)s\n" -"- عمر رمز التحديث هو %(refresh_hours)d ساعة.\n" -"- يتم تدوير رموز التحديث تلقائيًا وإبطالها بعد الاستخدام لتعزيز الأمان.\n" -"\n" -"## التدويل (i18n)\n" -"- قم بتعيين رأس \"قبول اللغة\" لتحديد اللغة المفضلة لديك (على سبيل المثال، \"قبول اللغة: en-US\").\n" -"- يمكن استرداد اللغات المتاحة من نقطة النهاية \"/ التطبيق/اللغات/\".\n" -"- جميع المحتويات التي تواجه المستخدم تدعم لغات متعددة خارج الصندوق.\n" -"\n" -"## تنسيقات الاستجابة\n" -"تدعم واجهة برمجة التطبيقات تنسيقات استجابة متعددة:\n" -"- **JSON** (افتراضي، بتنسيق camelCase)\n" -"- **XML** (أضف \"?format=xml\" أو قم بتعيين \"قبول: application/xml\")\n" -"- **YAML** (أضف '؟تنسيق=yaml' أو اضبط 'قبول: application/x-yaml')\n" -"\n" -"## الصحة والمراقبة\n" -"- فحوصات الصحة: '/الصحة/'\n" -"- مقاييس بروميثيوس: '//prometheus/metrics/'\n" -"\n" -"## الإصدار\n" -"إصدار API الحالي: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "موقعي" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "الصحة" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "الدعم" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "قائمة الطعام" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "لوحة التحكم" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "التكوين" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "المهام الدورية" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "لوحة المهام" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "روابط سريعة" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "المستخدمون" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "المجموعات" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "الطلبات" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "المنتجات" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "الفئات" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "العلامات التجارية" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "المدونات" diff --git a/evibes/locale/cs_CZ/LC_MESSAGES/django.mo b/evibes/locale/cs_CZ/LC_MESSAGES/django.mo deleted file mode 100644 index b85e89ab3971e1a88cd5942c233cae0991587d5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8567 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 W6y`K8?JI%j-M6m@YBP=>djAJm-&rOA diff --git a/evibes/locale/cs_CZ/LC_MESSAGES/django.po b/evibes/locale/cs_CZ/LC_MESSAGES/django.po deleted file mode 100644 index 57ca7c92..00000000 --- a/evibes/locale/cs_CZ/LC_MESSAGES/django.po +++ /dev/null @@ -1,299 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: cs-cz\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Název společnosti" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Adresa společnosti" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Telefonní číslo společnosti" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Sazba daně v jurisdikci vaší společnosti. Pokud nechcete zpracovávat daně, " -"ponechte 0." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "Zobrazuje, zda jsou daně již zahrnuty v prodejních cenách produktu." - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Klíč API pro směnný kurz" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!NEMĚŇTE!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP host" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "Port SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Použití protokolu TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Použití protokolu SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "Uživatelské jméno SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "Heslo SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Možnost Pošta z" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Kolik dní uchováváme zprávy od anonymních uživatelů" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Kolik dní uchováváme zprávy od ověřených uživatelů" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Zakázat funkci nákupu" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "URL rozhraní API OpenStreetMap Nominatim" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "Klíč API OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Abstraktní klíč API" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "Proxy server HTTP" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Subjekt pro ukládání dat inzerátů" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Subjekt pro ukládání analytických dat" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Ukládání odpovědí z rozhraní API dodavatelů" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Zálohování databáze" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Záložní média" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Právní možnosti" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Možnosti e-mailu" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Možnosti funkcí" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "Možnosti SEO" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Možnosti systému" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Vítejte v dokumentaci systému eVibes.\n" -"\n" -"eVibes je výkonná platforma pro elektronické obchodování, která vám umožní spustit a spravovat internetový obchod jakéhokoli druhu na několik kliknutí.\n" -"\n" -"## Klíčové funkce\n" -"- **Katalog produktů:** Správa podrobností o produktech, cen, skladových zásob a dostupnosti v několika kategoriích.\n" -"- **Správa objednávek:** Zpracovávejte objednávky, sledujte jejich plnění a efektivně vyřizujte požadavky zákazníků.\n" -"- **Ověřování a autorizace:** Komplexní ověřování uživatelů pomocí tokenů JWT a oprávnění na základě rolí.\n" -"- **Zpracování plateb:** Integrace více platebních bran a bezpečná správa transakcí.\n" -"- **Správa blogu a obsahu:** Vytváření a správa příspěvků na blogu a marketingového obsahu pro váš obchod.\n" -"- **Provoz B2B:** Vyhrazené koncové body pro transakce mezi podniky a správu velkoobchodu.\n" -"- **Vícejazyčná podpora:** Obsluhujte zákazníky po celém světě díky plným možnostem internacionalizace (i18n).\n" -"- **Vlastní integrace:** Rozšiřitelná architektura API pro integraci s externími platformami a službami.\n" -"- **Analytika a reporting:** Generování podrobných reportů o prodeji, zásobách a chování zákazníků.\n" -"- **Aktualizace v reálném čase:** Získávejte živé údaje o stavu zásob, stavu objednávek a změnách cen.\n" -"\n" -"## Dostupná rozhraní API\n" -"- **REST API:** Plné rozhraní RESTful (tato dokumentace).\n" -"- **GraphQL API:** K dispozici na adrese `/graphql/` s rozhraním GraphiQL pro interaktivní dotazy.\n" -"\n" -"## Ověřování\n" -"- Ověřování se provádí pomocí tokenů JWT. Token zahrňte do hlavičky `X-EVIBES-AUTH` svých požadavků ve formátu `Bearer `.\n" -"- Životnost přístupového tokenu je %(access_lifetime)d %(access_unit)s.\n" -"- Životnost tokenu pro obnovení je %(refresh_hours)d hodin.\n" -"- Tokeny pro obnovení jsou po použití automaticky rotovány a zneplatněny z důvodu vyšší bezpečnosti.\n" -"\n" -"## Internacionalizace (i18n)\n" -"- Nastavte hlavičku `Accept-Language` tak, aby určovala preferovaný jazyk (např. `Accept-Language: en-US`).\n" -"- Dostupné jazyky lze získat z koncového bodu `/app/languages/`.\n" -"- Veškerý obsah směřující k uživateli podporuje více jazyků hned po vybalení z krabice.\n" -"\n" -"## Formáty odpovědí\n" -"Rozhraní API podporuje více formátů odpovědí:\n" -"- **JSON** (výchozí, formátováno camelCase).\n" -"- **XML** (přidejte `?format=xml` nebo nastavte `Accept: application/xml`).\n" -"- **YAML** (přidejte `?format=yaml` nebo nastavte `Accept: application/x-yaml`)\n" -"\n" -"## Stav a monitorování\n" -"- Kontroly stavu: `/health/`\n" -"- Metriky Prometheus: `/prometheus/metrics/`\n" -"\n" -"## Verze\n" -"Aktuální verze API: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Moje stránky" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Zdraví" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Podpora" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Nabídka" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Přístrojová deska" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Konfigurace" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Pravidelné úkoly" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Taskboard" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Rychlé odkazy" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Uživatelé" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Skupiny" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Objednávky" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Produkty" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Kategorie" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Značky" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogposty" diff --git a/evibes/locale/da_DK/LC_MESSAGES/django.mo b/evibes/locale/da_DK/LC_MESSAGES/django.mo deleted file mode 100644 index 2d2ea1c8d8e429ec8d9628c5b6b8b17615ba1df5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8253 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 Q4;\n" -"Language-Team: LANGUAGE \n" -"Language: da-dk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Virksomhedens navn" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Virksomhedens adresse" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Virksomhedens telefonnummer" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Skattesats i din virksomheds jurisdiktion. Lad 0 stå, hvis du ikke ønsker at" -" behandle skatter." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "Viser, om afgifterne allerede er inkluderet i produktets salgspris" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "API-nøgle til valutakurs" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!SKIFT IKKE!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP-vært" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTP-port" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Brug TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Brug SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "SMTP-brugernavn" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "SMTP-adgangskode" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Mulighed for mail fra" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Hvor mange dage vi gemmer beskeder fra anonyme brugere" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Hvor mange dage vi gemmer beskeder fra godkendte brugere" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Deaktiver købsfunktionalitet" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "OpenStreetMap Nominatim API URL" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI API-nøgle" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Abstrakt API-nøgle" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP-proxy" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "En enhed til lagring af annonceringsdata" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "En enhed til lagring af analysedata" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Gem svar fra leverandørers API'er" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Backup af database" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Backup-medier" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Juridiske muligheder" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Indstillinger for e-mail" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Funktioner Indstillinger" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "SEO-muligheder" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Systemindstillinger" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Velkommen til eVibes' dokumentation.\n" -"\n" -"eVibes er en stærk e-handelsplatform, der giver dig mulighed for at starte og administrere en onlinebutik af enhver art med blot et par klik.\n" -"\n" -"## Nøglefunktioner\n" -"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og tilgængelighed på tværs af flere kategorier.\n" -"- Ordrehåndtering:** Behandl ordrer, spor opfyldelse og håndter kundeanmodninger effektivt.\n" -"- Godkendelse og autorisation:** Omfattende brugergodkendelse med JWT-tokens og rollebaserede tilladelser.\n" -"- **Betalingsbehandling:** Integrer flere betalingsgateways og håndter transaktioner sikkert.\n" -"- Blog- og indholdsstyring: ** Opret og administrer blogindlæg og markedsføringsindhold til din butik.\n" -"- **B2B Operations:** Dedikerede slutpunkter til business-to-business-transaktioner og engrosadministration.\n" -"- Flersproget support:** Betjen kunder over hele verden med fuld internationalisering (i18n).\n" -"- Brugerdefinerede integrationer:** Udvidelig API-arkitektur til integration med eksterne platforme og tjenester.\n" -"- Analyse og rapportering:** Generer detaljerede rapporter om salg, lagerbeholdning og kundeadfærd.\n" -"- Opdateringer i realtid:** Få live-data om lagerniveauer, ordrestatus og prisændringer.\n" -"\n" -"## Tilgængelige API'er\n" -"- **REST API:** Fuld RESTful-grænseflade (denne dokumentation)\n" -"- GraphQL API:** Tilgængelig på `/graphql/` med GraphiQL-grænseflade til interaktive forespørgsler\n" -"\n" -"## Autentificering\n" -"- Autentificering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-AUTH`-headeren i dine anmodninger i formatet `Bearer `.\n" -"- Adgangstokenets levetid er %(access_lifetime)d %(access_unit)s.\n" -"- Opdateringstokenets levetid er %(refresh_hours)d timer.\n" -"- Refresh-tokens bliver automatisk roteret og ugyldiggjort efter brug for at øge sikkerheden.\n" -"\n" -"## Internationalisering (i18n)\n" -"- Indstil headeren `Accept-Language` til at angive dit foretrukne sprog (f.eks. `Accept-Language: en-US`).\n" -"- Tilgængelige sprog kan hentes fra `/app/languages/` endpoint.\n" -"- Alt brugervendt indhold understøtter flere sprog fra starten.\n" -"\n" -"## Svarformater\n" -"API'en understøtter flere svarformater:\n" -"- **JSON** (standard, camelCase-formateret)\n" -"- XML** (tilføj `?format=xml` eller indstil `Accept: application/xml`)\n" -"- **YAML** (tilføj `?format=yaml` eller indstil `Accept: application/x-yaml`)\n" -"\n" -"## Sundhed og overvågning\n" -"- Sundhedstjek: `/health/`\n" -"- Prometheus-målinger: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Nuværende API-version: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Min hjemmeside" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Sundhed" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Støtte" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menu" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Dashboard" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Konfig" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Periodiske opgaver" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Opgavetavle" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Hurtige links" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Brugere" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Grupper" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Bestillinger" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Produkter" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Kategorier" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Mærker" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogindlæg" diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.mo b/evibes/locale/de_DE/LC_MESSAGES/django.mo deleted file mode 100644 index de41a896484c503698636805f60613aaf0154bad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8702 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 Cz~z1b diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.po b/evibes/locale/de_DE/LC_MESSAGES/django.po deleted file mode 100644 index c9c54618..00000000 --- a/evibes/locale/de_DE/LC_MESSAGES/django.po +++ /dev/null @@ -1,302 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: de-de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Name des Unternehmens" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Anschrift des Unternehmens" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Telefonnummer des Unternehmens" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Steuersatz in dem Land, in dem Ihr Unternehmen ansässig ist. Lassen Sie 0 " -"stehen, wenn Sie keine Steuern verarbeiten wollen." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "" -"Zeigt an, ob die Steuern bereits in den Verkaufspreisen des Produkts " -"enthalten sind" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Wechselkurs-API-Schlüssel" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!NICHT ÄNDERN!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP-Host" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTP-Port" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Use TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Use SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "SMTP-Benutzername" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "SMTP-Kennwort" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Option Mail von" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Wie viele Tage wir Nachrichten von anonymen Nutzern speichern" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "" -"Wie viele Tage wir Nachrichten von authentifizierten Benutzern speichern" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Kauffunktionalität deaktivieren" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "OpenStreetMap Nominatim API URL" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI API Key" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Abstrakter API-Schlüssel" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP-Proxy" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Eine Einheit zur Speicherung von Werbedaten" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Eine Einheit zur Speicherung von Analysedaten" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Speichern von Antworten aus den APIs von Anbietern" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Datenbank sichern" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Sicherungsmedien" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Rechtliche Optionen" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "E-Mail-Optionen" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Merkmale Optionen" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "SEO-Optionen" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "System Options" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Willkommen bei der eVibes-Dokumentation.\n" -"\n" -"eVibes ist eine leistungsstarke E-Commerce-Plattform, die es Ihnen ermöglicht, mit nur wenigen Klicks einen Online-Shop jeglicher Art zu eröffnen und zu verwalten.\n" -"\n" -"## Hauptmerkmale\n" -"- **Produktkatalog:** Verwalten Sie Produktdetails, Preise, Bestand und Verfügbarkeit über mehrere Kategorien hinweg.\n" -"- **Auftragsverwaltung:** Verarbeiten Sie Aufträge, verfolgen Sie die Ausführung und bearbeiten Sie Kundenanfragen effizient.\n" -"- **Authentifizierung & Autorisierung:** Umfassende Benutzerauthentifizierung mit JWT-Tokens und rollenbasierten Berechtigungen.\n" -"- **Zahlungsabwicklung:** Integrieren Sie mehrere Zahlungsgateways und verwalten Sie Transaktionen auf sichere Weise.\n" -"- **Blog & Content Management:** Erstellen und verwalten Sie Blogbeiträge und Marketinginhalte für Ihren Shop.\n" -"- **B2B-Betrieb:** Dedizierte Endpunkte für Business-to-Business-Transaktionen und Großhandelsmanagement.\n" -"- **Mehrsprachige Unterstützung:** Bedienen Sie Kunden auf der ganzen Welt mit vollständigen Internationalisierungsfunktionen (i18n).\n" -"- **Benutzerdefinierte Integrationen:** Erweiterbare API-Architektur für die Integration mit externen Plattformen und Diensten.\n" -"- **Analytik & Reporting:** Erstellen Sie detaillierte Berichte über Verkäufe, Bestände und Kundenverhalten.\n" -"- **Echtzeit-Updates:** Erhalten Sie Live-Daten zu Lagerbeständen, Bestellstatus und Preisänderungen.\n" -"\n" -"## Verfügbare APIs\n" -"- **REST API:** Vollständige RESTful-Schnittstelle (diese Dokumentation)\n" -"- **GraphQL API:** Verfügbar unter `/graphql/` mit GraphiQL-Schnittstelle für interaktive Abfragen\n" -"\n" -"## Authentifizierung\n" -"- Die Authentifizierung erfolgt über JWT-Tokens. Fügen Sie das Token in den `X-EVIBES-AUTH`-Header Ihrer Anfragen im Format `Bearer ` ein.\n" -"- Die Lebensdauer des Zugriffstokens beträgt %(access_lifetime)d %(access_unit)s.\n" -"- Die Lebensdauer des Refresh-Tokens beträgt %(refresh_hours)d Stunden.\n" -"- Refresh-Tokens werden automatisch gedreht und nach Gebrauch ungültig gemacht, um die Sicherheit zu erhöhen.\n" -"\n" -"## Internationalisierung (i18n)\n" -"- Setzen Sie den `Accept-Language`-Header, um Ihre bevorzugte Sprache anzugeben (z.B. `Accept-Language: en-US`).\n" -"- Die verfügbaren Sprachen können über den Endpunkt `/app/languages/` abgerufen werden.\n" -"- Alle benutzerseitigen Inhalte unterstützen von Haus aus mehrere Sprachen.\n" -"\n" -"## Antwortformate\n" -"Die API unterstützt mehrere Antwortformate:\n" -"- **JSON** (Standard, camelCase-formatiert)\n" -"- XML** (fügen Sie `?format=xml` hinzu oder setzen Sie `Accept: application/xml`)\n" -"- **YAML** (fügen Sie `?format=yaml` hinzu oder legen Sie `Accept: application/x-yaml` fest)\n" -"\n" -"## Gesundheit & Überwachung\n" -"- Gesundheitsprüfungen: `/health/`\n" -"- Prometheus Metriken: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Aktuelle API-Version: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Mein Standort" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Gesundheit" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Unterstützung" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menü" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Dashboard" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Konfigurieren Sie" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Regelmäßige Aufgaben" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Aufgabentafel" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Schnelle Links" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Benutzer" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Gruppen" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Bestellungen" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Produkte" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Kategorien" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Marken" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogposts" diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.mo b/evibes/locale/en_GB/LC_MESSAGES/django.mo deleted file mode 100644 index 18f7ce0f2873fa3300f50caa1e9aefe168ccd6a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8102 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 G%6|g_y4zj= diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.po b/evibes/locale/en_GB/LC_MESSAGES/django.po deleted file mode 100644 index d0805b59..00000000 --- a/evibes/locale/en_GB/LC_MESSAGES/django.po +++ /dev/null @@ -1,303 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Name of the company" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Address of the company" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Phone number of the company" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "Shows if the taxes are already included in product's selling prices" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Exchange rate API key" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!DO NOT CHANGE!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP host" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTP port" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Use TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Use SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "SMTP username" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "SMTP password" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Mail from option" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "How many days we store messages from anonymous users" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "How many days we store messages from authenticated users" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Disable buy functionality" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "OpenStreetMap Nominatim API URL" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI API Key" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Abstract API Key" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP Proxy" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "An entity for storing advertisiment data" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "An entity for storing analytics data" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Save responses from vendors' APIs" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Backup database" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Backup media" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Legal Options" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Email Options" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Features Options" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "SEO Options" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "System Options" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "My site" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Health" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Support" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menu" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Dashboard" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Config" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Periodic Tasks" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Taskboard" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Quick Links" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Users" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Groups" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Orders" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Products" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Categories" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Brands" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogposts" diff --git a/evibes/locale/en_US/LC_MESSAGES/django.mo b/evibes/locale/en_US/LC_MESSAGES/django.mo deleted file mode 100644 index f7e4e4163984214078768f114003d632cc2188ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8107 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 z z(GWKqd+n{A?TTxV{FdoQp}$)6jo;B#QQ6(`_tX*cPAC2vvZE?)H)?x+YsX)!iOrpA zYwO&XcD5UprZlnDAS{yCutbek`9x;Wfw6}I z{!(Rjxtv`taZ8_FE@zj^g@xL*&zM~XEDBe2& diff --git a/evibes/locale/en_US/LC_MESSAGES/django.po b/evibes/locale/en_US/LC_MESSAGES/django.po deleted file mode 100644 index 67a230ce..00000000 --- a/evibes/locale/en_US/LC_MESSAGES/django.po +++ /dev/null @@ -1,299 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: en-us\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Name of the company" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Address of the company" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Phone number of the company" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "Shows if the taxes are already included in product's selling prices" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Exchange rate API key" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!DO NOT CHANGE!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP host" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTP port" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Use TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Use SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "SMTP username" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "SMTP password" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Mail from option" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "How many days we store messages from anonymous users" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "How many days we store messages from authenticated users" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Disable buy functionality" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "OpenStreetMap Nominatim API URL" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI API Key" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Abstract API Key" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP Proxy" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "An entity for storing advertisiment data" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "An entity for storing analytics data" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Save responses from vendors' APIs" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Backup database" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Backup media" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Legal Options" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Email Options" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Features Options" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "SEO Options" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "System Options" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "My site" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Health" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Support" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menu" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Dashboard" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Config" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Periodic Tasks" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Taskboard" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Quick Links" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Users" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Groups" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Orders" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Products" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Categories" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Brands" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogposts" diff --git a/evibes/locale/es_ES/LC_MESSAGES/django.mo b/evibes/locale/es_ES/LC_MESSAGES/django.mo deleted file mode 100644 index 528006d5eb5b38c9b6df40a0e9cb84fc960387f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8741 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 diff --git a/evibes/locale/es_ES/LC_MESSAGES/django.po b/evibes/locale/es_ES/LC_MESSAGES/django.po deleted file mode 100644 index bd388e05..00000000 --- a/evibes/locale/es_ES/LC_MESSAGES/django.po +++ /dev/null @@ -1,301 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: es-es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Nombre de la empresa" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Dirección de la empresa" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Número de teléfono de la empresa" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Tipo impositivo en la jurisdicción de su empresa. Deje 0 si no desea " -"procesar impuestos." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "" -"Muestra si los impuestos ya están incluidos en los precios de venta del " -"producto" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Clave API de tipo de cambio" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!NO CAMBIES!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "Host SMTP" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "Puerto SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Utilizar TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Utilizar SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "Nombre de usuario SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "Contraseña SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Opción Correo de" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Cuántos días almacenamos los mensajes de usuarios anónimos" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Cuántos días almacenamos los mensajes de los usuarios autenticados" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Desactivar la función de compra" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "URL de la API Nominatim de OpenStreetMap" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "Clave API de OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Clave API abstracta" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "Proxy HTTP" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Una entidad para almacenar datos publicitarios" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Una entidad para almacenar datos analíticos" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Guardar las respuestas de las API de los proveedores" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Copia de seguridad de la base de datos" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Medios de copia de seguridad" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Opciones legales" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Opciones de correo electrónico" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Características Opciones" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "Opciones SEO" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Opciones del sistema" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Bienvenido a la documentación de eVibes.\n" -"\n" -"eVibes es una potente plataforma de comercio electrónico que le permite lanzar y gestionar una tienda en línea de cualquier tipo en tan sólo unos clics.\n" -"\n" -"## Características principales\n" -"- **Catálogo de productos:** Gestione los detalles de los productos, precios, inventario y disponibilidad en múltiples categorías.\n" -"- **Gestión de Pedidos:** Procesar pedidos, seguimiento de cumplimiento, y manejar las solicitudes de los clientes de manera eficiente.\n" -"- Autenticación y autorización:Autenticación de usuario integral con tokens JWT y permisos basados en roles.\n" -"- **Procesamiento de pagos:** Integre múltiples pasarelas de pago y gestione las transacciones de forma segura.\n" -"- **Blog y gestión de contenidos:** Crear y gestionar entradas de blog y contenido de marketing para su tienda.\n" -"- **Operaciones B2B:** Puntos finales dedicados para transacciones de empresa a empresa y gestión de ventas al por mayor.\n" -"- Soporte multilingüe:** Sirve a clientes de todo el mundo con capacidades de internacionalización completa (i18n).\n" -"- Integraciones personalizadas:** Arquitectura API extensible para la integración con plataformas y servicios externos.\n" -"- Análisis e informes:** Generación de informes detallados sobre ventas, inventario y comportamiento de los clientes.\n" -"- Actualizaciones en tiempo real:** Obtenga datos en tiempo real sobre los niveles de inventario, el estado de los pedidos y los cambios de precios.\n" -"\n" -"## API disponibles\n" -"- API REST:** Interfaz RESTful completa (esta documentación)\n" -"- API GraphQL:** Disponible en `/graphql/` con interfaz GraphiQL para consultas interactivas\n" -"\n" -"## Autenticación\n" -"- La autenticación se gestiona mediante tokens JWT. Incluya el token en la cabecera `X-EVIBES-AUTH` de sus peticiones con el formato `Bearer `.\n" -"- La duración del token de acceso es %(access_lifetime)d %(access_unit)s.\n" -"- La vida útil del token de actualización es de %(refresh_hours)d horas.\n" -"- Los tokens de actualización se rotan automáticamente y se invalidan después de su uso para mejorar la seguridad.\n" -"\n" -"## Internacionalización (i18n)\n" -"- Establezca la cabecera `Accept-Language` para especificar su idioma preferido (por ejemplo, `Accept-Language: en-US`).\n" -"- Los idiomas disponibles pueden recuperarse desde el punto final `/app/languages/`.\n" -"- Todos los contenidos orientados al usuario son compatibles con varios idiomas.\n" -"\n" -"## Formatos de respuesta\n" -"La API admite varios formatos de respuesta:\n" -"- JSON** (por defecto, con formato camelCase)\n" -"- XML** (añada `?format=xml` o establezca `Accept: application/xml`)\n" -"- YAML** (añada `?format=yaml` o establezca `Accept: application/x-yaml`)\n" -"\n" -"## Salud y supervisión\n" -"- Comprobaciones de salud: `/health/`\n" -"- Métricas de Prometheus: `/prometheus/metrics/`\n" -"\n" -"## Versión\n" -"Versión actual de la API: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Mi sitio" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Salud" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Ayuda" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menú" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Cuadro de mandos" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Configurar" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Tareas periódicas" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Taskboard" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Enlaces rápidos" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Usuarios" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Grupos" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Pedidos" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Productos" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Categorías" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Marcas" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogposts" diff --git a/evibes/locale/fa_IR/LC_MESSAGES/django.mo b/evibes/locale/fa_IR/LC_MESSAGES/django.mo deleted file mode 100644 index 6c5906d1cd061dff54de8b533942893de34efc9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmYL@Jx{|h5Qd9j%E-dP;DHUUz!pqFHI3Uw*h!U-O0b#M1fyU_j*H-j@b~yFTo(FD zk8Zg4bkFbc(a#8TfSe*{$RTop42h8wT;AXuI{#UD_pUbq(k-mD?~SvRtk~?4EjU^8 zqD=EFDs<<30NFQY3lF=dhsseBt#T;zrx|V_Q9)Dk#909{hlG)3PGx%joM$`|st-_k zW&2hI=P8-jLXeC}P9|KkR7_ct6ud0&v1*&0YBW?@eNZA;wx|b_i4fD)jGb@x9W;=s z, YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and " -"manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and " -"availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle " -"customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with " -"JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage " -"transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing " -"content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business " -"transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full " -"internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with " -"external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " -"and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " -"and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " -"interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-" -"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for " -"enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., " -"`Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "" - diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.mo b/evibes/locale/fr_FR/LC_MESSAGES/django.mo deleted file mode 100644 index 1d4715c45f000a62b01c64083574653d72750884..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8993 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

~Sc>AU-5`Wq2! zC^B2z8C|Mu0?ioemI@kg^LcdB#*{!53)X*|L+Kc1)3g&3a2vodX9AWgWidun z_ucm6^B{0}=xG(sCkqw+I^VS9x`GnZq9dXa{fiB`Y0k9SAelAiLC?|wGq|(Alo^|a zg$}(5_ZI^cxO>Zl8yn5dqLz}CGK<`Q8W*OLd6a6}bYu>Fw%laFW!k_>nBB#89r4Li z=9I;C(>Tq0bo2McCcQ_RsEr04PY_$(qHEnD1(L(C% z@@G1F;&*V09zt#e0~ya=F=ntw2Fmx?gvTpQTa&L`q#&=}UumAVxOCNa{T9Hcg#uce zGIYW;tUH?Uj6*Zq9TqkDNqw1F-fRTd1e7p>L(g~4PRB_m?oixfV*yDjTtVoYnYV&jt+3!Q8=^gz4{Jqv^J1JH z3{`>w)-aDXOWAmrx`_mV;Tadk2Z|Uws+W{z!dR6DA`>G&NmUVlxs@qu#J?<*i3Eza z$sPdYQs2G2oPvvf~DTFe3w}XGaG`FYEGs!^9vMNFPw4bXA0(E2o-y{ z+BgMz)m`n3;rwKQI9Q>=3)2Pqfd&0GQwCJ zS=O1>dyI4viebXTvu6~|mGv~nJ9m!1?PxwN8PJvD5Btm+0uiyQKl|BYX*)_;H6m?y zFU&CdabZ_cySMdoJH^=1ueA;OjQo=r1=N5mL(MK`ai&@c|k z!VK{Wcdk#F%d*Kru4H1ff*6FkwB-HsY;{sH3)1CU@(3%zTQNPNbRGqDh9w-K zk=n>NqZEQyn58hpfiVT-nYCS*r7$lETNG*DXRv~Tn~o^jq2N4#eT7jCSIibR>j{s! z?m-I}{?tY-7cny+unsTkA#kha_#;obsQ)JXdmLOzGP-~ERr0+iE>S BbpZeX diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.po b/evibes/locale/fr_FR/LC_MESSAGES/django.po deleted file mode 100644 index c565d5c9..00000000 --- a/evibes/locale/fr_FR/LC_MESSAGES/django.po +++ /dev/null @@ -1,304 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: fr-fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Nom de l'entreprise" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Adresse de l'entreprise" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Numéro de téléphone de l'entreprise" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Taux d'imposition dans la juridiction de votre entreprise. Laissez 0 si vous" -" ne souhaitez pas traiter les taxes." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "" -"Indique si les taxes sont déjà incluses dans le prix de vente du produit." - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Clé API pour le taux de change" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!NE PAS CHANGER !!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "Hôte SMTP" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTP port" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Utiliser TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Use SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "Nom d'utilisateur SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "Mot de passe SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Option Courrier de" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "" -"Pendant combien de jours les messages des utilisateurs anonymes sont-ils " -"conservés ?" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "" -"Pendant combien de jours les messages des utilisateurs authentifiés sont-ils" -" conservés ?" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Désactiver la fonctionnalité d'achat" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "URL de l'API OpenStreetMap Nominatim" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI API Key" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Clé API abstraite" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP Proxy" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Une entité pour stocker des données publicitaires" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Une entité pour le stockage des données analytiques" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Sauvegarder les réponses des API des fournisseurs" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Sauvegarde de la base de données" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Supports de sauvegarde" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Options juridiques" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Options de courrier électronique" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Caractéristiques Options" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "Options de référencement" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Options du système" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Bienvenue dans la documentation d'eVibes.\n" -"\n" -"eVibes est une puissante plateforme de commerce électronique qui vous permet de lancer et de gérer une boutique en ligne de tout type en quelques clics.\n" -"\n" -"## Fonctionnalités principales\n" -"- Catalogue de produits:** Gérer les détails des produits, les prix, l'inventaire et la disponibilité à travers plusieurs catégories.\n" -"- Gestion des commandes:** Traiter les commandes, suivre l'exécution et traiter les demandes des clients de manière efficace.\n" -"- Authentification et autorisation:** Authentification complète des utilisateurs avec des jetons JWT et des autorisations basées sur les rôles.\n" -"- Traitement des paiements:** Intégration de plusieurs passerelles de paiement et gestion sécurisée des transactions.\n" -"- Gestion de blog et de contenu:** Créez et gérez des articles de blog et du contenu marketing pour votre boutique.\n" -"- Opérations B2B:** Points d'accès dédiés aux transactions interentreprises et à la gestion des ventes en gros.\n" -"- Support multilingue:** Servez vos clients dans le monde entier grâce à des capacités d'internationalisation complètes (i18n).\n" -"- Intégrations personnalisées:** Architecture API extensible pour l'intégration avec des plates-formes et des services externes.\n" -"- Analyses et rapports:** Générer des rapports détaillés sur les ventes, les stocks et le comportement des clients.\n" -"- Mises à jour en temps réel:** Obtenez des données en direct sur les niveaux de stock, les statuts des commandes et les changements de prix.\n" -"\n" -"## API disponibles\n" -"- API REST:** Interface RESTful complète (cette documentation)\n" -"- API GraphQL:** Disponible sur `/graphql/` avec l'interface GraphiQL pour les requêtes interactives.\n" -"\n" -"## Authentification\n" -"- L'authentification est gérée par des jetons JWT. Incluez le jeton dans l'en-tête `X-EVIBES-AUTH` de vos requêtes au format `Bearer `.\n" -"- La durée de vie du jeton d'accès est de %(access_lifetime)d %(access_unit)s.\n" -"- La durée de vie du jeton de rafraîchissement est de %(refresh_hours)d heures.\n" -"- Les jetons de rafraîchissement font l'objet d'une rotation automatique et sont invalidés après utilisation pour une sécurité accrue.\n" -"\n" -"## Internationalisation (i18n)\n" -"- Définissez l'en-tête `Accept-Language` pour spécifier votre langue préférée (par exemple, `Accept-Language : en-US`).\n" -"- Les langues disponibles peuvent être récupérées à partir du point de terminaison `/app/languages/`.\n" -"- Tous les contenus destinés à l'utilisateur supportent d'emblée plusieurs langues.\n" -"\n" -"## Formats de réponse\n" -"L'API prend en charge plusieurs formats de réponse :\n" -"- **JSON** (par défaut, formaté en camelCase)\n" -"- **XML** (ajoutez `?format=xml` ou définissez `Accept : application/xml`)\n" -"- **YAML** (ajouter `?format=yaml` ou définir `Accept : application/x-yaml`)\n" -"\n" -"## Santé et surveillance\n" -"- Contrôles de santé : `/health/`\n" -"- Métriques Prometheus : `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Version actuelle de l'API : %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Mon site" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Santé" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Soutien" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menu" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Tableau de bord" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Config" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Tâches périodiques" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Tableau des tâches" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Liens rapides" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Utilisateurs" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Groupes" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Commandes" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Produits" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Catégories" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Marques" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogposts" diff --git a/evibes/locale/he_IL/LC_MESSAGES/django.mo b/evibes/locale/he_IL/LC_MESSAGES/django.mo deleted file mode 100644 index 78e66230602688f9d8c8141889020f4fd2c091bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9362 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 VaJ8\n" -"Language-Team: LANGUAGE \n" -"Language: he-il\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "שם החברה" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "כתובת החברה" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "מספר הטלפון של החברה" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"שיעור המס בתחום השיפוט של החברה שלך. השאר 0 אם אינך מעוניין לעבד מסים." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "מציג אם המסים כבר כלולים במחיר המכירה של המוצר." - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "מפתח API לשער החליפין" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!אין לשנות!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "מארח SMTP" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "יציאת SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "השתמש ב-TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "השתמש ב-SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "שם משתמש SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "סיסמת SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "דואר מאפשרות" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "כמה ימים אנו שומרים הודעות ממשתמשים אנונימיים" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "כמה ימים אנו שומרים הודעות ממשתמשים מאומתים" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "השבת פונקציונליות הרכישה" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "כתובת ה-API של OpenStreetMap Nominatim" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "מפתח API של OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "מפתח API מופשט" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "פרוקסי HTTP" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "ישות לאחסון נתוני פרסום" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "ישות לאחסון נתוני ניתוח" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "שמור תגובות מ-API של ספקים" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "גיבוי מסד נתונים" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "מדיה גיבוי" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "אפשרויות משפטיות" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "אפשרויות דוא\"ל" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "אפשרויות תכונות" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "אפשרויות SEO" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "אפשרויות מערכת" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\nברוכים הבאים לתיעוד של eVibes. eVibes היא פלטפורמת מסחר אלקטרוני עוצמתית המאפשרת לכם להקים ולנהל חנות מקוונת מכל סוג שהוא בכמה לחיצות בלבד. ## תכונות עיקריות - **קטלוג מוצרים:** ניהול פרטי מוצרים, מחירים, מלאי וזמינות בקטגוריות מרובות. - **ניהול הזמנות:** עיבוד הזמנות, מעקב אחר ביצוען וטיפול יעיל בבקשות לקוחות.\n" -"- **אימות ואישור:** אימות משתמשים מקיף באמצעות אסימוני JWT והרשאות מבוססות תפקידים. - **עיבוד תשלומים:** שלבו מספר שערי תשלום ונהלו עסקאות בצורה מאובטחת. - **ניהול בלוג ותוכן:** צרו ונהלו פוסטים בבלוג ותוכן שיווקי לחנות שלכם. - **פעולות B2B:** נקודות קצה ייעודיות לעסקאות בין עסקים וניהול סיטונאי.\n" -"- **תמיכה בריבוי שפות:** שירות ללקוחות ברחבי העולם עם יכולות בינלאומיות מלאות (i18n). - **אינטגרציות מותאמות אישית:** ארכיטקטורת API ניתנת להרחבה לשילוב עם פלטפורמות ושירותים חיצוניים. - **ניתוחים ודיווחים:** יצירת דוחות מפורטים על מכירות, מלאי והתנהגות לקוחות. - **עדכונים בזמן אמת:** קבלת נתונים חיים על רמות המלאי, סטטוס ההזמנות ושינויים במחירים.\n" -"\n" -"## ממשקי API זמינים - **REST API:** ממשק RESTful מלא (תיעוד זה) - **GraphQL API:** זמין ב-`/graphql/` עם ממשק GraphiQL לשאילתות אינטראקטיביות ## אימות - האימות מתבצע באמצעות אסימוני JWT. כלול את האסימון בכותרת `X-EVIBES-AUTH` של בקשותיך בפורמט `Bearer `.\n" -"- אורך חיי אסימון הגישה הוא %(access_lifetime)d %(access_unit)s. - אורך חיי אסימון הרענון הוא %(refresh_hours)d שעות. - אסימוני הרענון מסתובבים באופן אוטומטי ומבוטלים לאחר השימוש לשם אבטחה משופרת. ## בינלאומיות (i18n) - הגדר את הכותרת `Accept-Language` כדי לציין את השפה המועדפת עליך (לדוגמה, `Accept-Language: en-US`).\n" -"- ניתן לאחזר את השפות הזמינות מנקודת הקצה `/app/languages/`. - כל התוכן המוצג למשתמש תומך במספר שפות באופן מובנה. ## פורמטים של תגובה ה-API תומך במספר פורמטים של תגובה: - **JSON** (ברירת מחדל, בפורמט camelCase) - **XML** (הוסף `?format=xml` או הגדר `Accept: application/xml`)\n" -"- **YAML** (הוסף `?format=yaml` או הגדר `Accept: application/x-yaml`) ## תקינות וניטור - בדיקות תקינות: `/health/` - מדדי Prometheus: `/prometheus/metrics/` ## גרסה גרסת ה-API הנוכחית: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "האתר שלי" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "בריאות" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "תמיכה" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "תפריט" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "לוח מחוונים" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "תצורה" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "משימות תקופתיות" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "לוח משימות" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "קישורים מהירים" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "משתמשים" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "קבוצות" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "הזמנות" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "מוצרים" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "קטגוריות" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "מותגים" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "פוסטים בבלוג" diff --git a/evibes/locale/hi_IN/LC_MESSAGES/django.mo b/evibes/locale/hi_IN/LC_MESSAGES/django.mo deleted file mode 100644 index 6c5906d1cd061dff54de8b533942893de34efc9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmYL@Jx{|h5Qd9j%E-dP;DHUUz!pqFHI3Uw*h!U-O0b#M1fyU_j*H-j@b~yFTo(FD zk8Zg4bkFbc(a#8TfSe*{$RTop42h8wT;AXuI{#UD_pUbq(k-mD?~SvRtk~?4EjU^8 zqD=EFDs<<30NFQY3lF=dhsseBt#T;zrx|V_Q9)Dk#909{hlG)3PGx%joM$`|st-_k zW&2hI=P8-jLXeC}P9|KkR7_ct6ud0&v1*&0YBW?@eNZA;wx|b_i4fD)jGb@x9W;=s z, YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and " -"manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and " -"availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle " -"customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with " -"JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage " -"transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing " -"content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business " -"transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full " -"internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with " -"external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " -"and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " -"and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " -"interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-" -"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for " -"enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., " -"`Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "" - diff --git a/evibes/locale/hr_HR/LC_MESSAGES/django.mo b/evibes/locale/hr_HR/LC_MESSAGES/django.mo deleted file mode 100644 index 6c5906d1cd061dff54de8b533942893de34efc9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmYL@Jx{|h5Qd9j%E-dP;DHUUz!pqFHI3Uw*h!U-O0b#M1fyU_j*H-j@b~yFTo(FD zk8Zg4bkFbc(a#8TfSe*{$RTop42h8wT;AXuI{#UD_pUbq(k-mD?~SvRtk~?4EjU^8 zqD=EFDs<<30NFQY3lF=dhsseBt#T;zrx|V_Q9)Dk#909{hlG)3PGx%joM$`|st-_k zW&2hI=P8-jLXeC}P9|KkR7_ct6ud0&v1*&0YBW?@eNZA;wx|b_i4fD)jGb@x9W;=s z, YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and " -"manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and " -"availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle " -"customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with " -"JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage " -"transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing " -"content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business " -"transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full " -"internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with " -"external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " -"and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " -"and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " -"interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-" -"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for " -"enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., " -"`Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "" - diff --git a/evibes/locale/id_ID/LC_MESSAGES/django.mo b/evibes/locale/id_ID/LC_MESSAGES/django.mo deleted file mode 100644 index 7932ca2dcc122f0d02f969eca61f54801908a9c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8300 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\n" -"Language-Team: LANGUAGE \n" -"Language: id-id\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Nama perusahaan" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Alamat perusahaan" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Nomor telepon perusahaan" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Tarif pajak dalam yurisdiksi perusahaan Anda. Biarkan 0 jika Anda tidak " -"ingin memproses pajak." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "Menunjukkan apakah pajak sudah termasuk dalam harga jual produk" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Kunci API nilai tukar" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!JANGAN BERUBAH!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "Host SMTP" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "Port SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Gunakan TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Gunakan SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "Nama pengguna SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "Kata sandi SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Opsi Mail from (Surat dari)" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Berapa hari kami menyimpan pesan dari pengguna anonim" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Berapa hari kami menyimpan pesan dari pengguna yang diautentikasi" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Menonaktifkan fungsionalitas beli" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "URL API OpenStreetMap Nominatim" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "Kunci API OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Kunci API Abstrak" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "Proksi HTTP" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Entitas untuk menyimpan data iklan" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Entitas untuk menyimpan data analitik" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Menyimpan tanggapan dari API vendor" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Mencadangkan basis data" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Media cadangan" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Opsi Hukum" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Opsi Email" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Opsi Fitur" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "Opsi SEO" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Opsi Sistem" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Selamat datang di dokumentasi eVibes.\n" -"\n" -"eVibes adalah platform e-commerce yang kuat yang memungkinkan Anda untuk meluncurkan dan mengelola toko online dalam bentuk apa pun hanya dengan beberapa klik.\n" -"\n" -"## Fitur Utama\n" -"- Katalog Produk:** Kelola detail produk, harga, inventaris, dan ketersediaan di berbagai kategori.\n" -"- Manajemen Pesanan:** Memproses pesanan, melacak pemenuhan pesanan, dan menangani permintaan pelanggan secara efisien.\n" -"- Autentikasi & Otorisasi:** Autentikasi pengguna yang komprehensif dengan token JWT dan izin berbasis peran.\n" -"- Pemrosesan Pembayaran:** Mengintegrasikan beberapa gateway pembayaran dan mengelola transaksi dengan aman.\n" -"- Manajemen Blog & Konten:** Buat dan kelola posting blog dan konten pemasaran untuk toko Anda.\n" -"- ** Operasi B2B:** Titik akhir khusus untuk transaksi bisnis-ke-bisnis dan manajemen grosir.\n" -"- Dukungan Multi-bahasa:** Melayani pelanggan di seluruh dunia dengan kemampuan internasionalisasi penuh (i18n).\n" -"- Integrasi Khusus:** Arsitektur API yang dapat diperluas untuk berintegrasi dengan platform dan layanan eksternal.\n" -"- Analisis & Pelaporan:** Menghasilkan laporan terperinci tentang penjualan, inventaris, dan perilaku pelanggan.\n" -"- **Pembaruan Waktu Nyata:** Dapatkan data langsung tentang tingkat inventaris, status pesanan, dan perubahan harga.\n" -"\n" -"## API yang tersedia\n" -"- **REST API:** Antarmuka RESTful penuh (dokumentasi ini)\n" -"- API GraphQL:** Tersedia di `/graphql/` dengan antarmuka GraphiQL untuk kueri interaktif\n" -"\n" -"## Otentikasi\n" -"- Otentikasi ditangani melalui token JWT. Sertakan token di header `X-EVIBES-AUTH` dari permintaan Anda dalam format `Bearer `.\n" -"- Masa berlaku token akses adalah %(access_lifetime)d %(access_unit)s.\n" -"- Masa berlaku token penyegaran adalah %(refresh_hours)d jam.\n" -"- Refresh token secara otomatis dirotasi dan dibatalkan setelah digunakan untuk meningkatkan keamanan.\n" -"\n" -"## Internasionalisasi (i18n)\n" -"- Atur header `Accept-Language` untuk menentukan bahasa yang Anda inginkan (misalnya, `Accept-Language: en-US`).\n" -"- Bahasa yang tersedia dapat diambil dari titik akhir `/app/languages/`.\n" -"- Semua konten yang berhadapan dengan pengguna mendukung berbagai bahasa di luar kotak.\n" -"\n" -"Format Tanggapan ## Format Tanggapan\n" -"API mendukung beberapa format respons:\n" -"- **JSON** (default, berformat camelCase)\n" -"- **XML** (tambahkan `?format=xml` atau setel `Accept: application/xml`)\n" -"- **YAML** (tambahkan `?format=yaml` atau setel `Accept: application/x-yaml`)\n" -"\n" -"## Kesehatan & Pemantauan\n" -"- Pemeriksaan kesehatan: `/health/`\n" -"- Metrik Prometheus: `/prometheus/metrics/`\n" -"\n" -"## Versi\n" -"Versi API saat ini: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Situs saya" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Kesehatan" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Dukungan" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menu" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Dasbor" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Konfigurasi" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Tugas Berkala" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Papan tugas" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Tautan Cepat" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Pengguna" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Grup" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Pesanan" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Produk" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Kategori" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Merek" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Posting blog" diff --git a/evibes/locale/it_IT/LC_MESSAGES/django.mo b/evibes/locale/it_IT/LC_MESSAGES/django.mo deleted file mode 100644 index 9a1be4bbe2ba1ae49e4703f786394de59ca2620f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8664 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 B!j%93 diff --git a/evibes/locale/it_IT/LC_MESSAGES/django.po b/evibes/locale/it_IT/LC_MESSAGES/django.po deleted file mode 100644 index 7d3b2599..00000000 --- a/evibes/locale/it_IT/LC_MESSAGES/django.po +++ /dev/null @@ -1,300 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: it-it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Nome della società" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Indirizzo dell'azienda" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Numero di telefono dell'azienda" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Aliquota fiscale nella giurisdizione della vostra azienda. Lasciare 0 se non" -" si desidera elaborare le imposte." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "" -"Mostra se le tasse sono già incluse nel prezzo di vendita del prodotto." - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Chiave API del tasso di cambio" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!! NON CAMBIARE!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "Host SMTP" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "Porta SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Utilizzare TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Utilizzare SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "Nome utente SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "Password SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Opzione Posta da" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Per quanti giorni conserviamo i messaggi degli utenti anonimi" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Per quanti giorni conserviamo i messaggi degli utenti autenticati" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Disattivare la funzionalità di acquisto" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "URL API OpenStreetMap Nominatim" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "Chiave API OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Chiave API astratta" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "Proxy HTTP" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Un'entità per la memorizzazione dei dati pubblicitari" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Un'entità per la memorizzazione dei dati analitici" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Salvare le risposte dalle API dei fornitori" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Database di backup" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Supporti di backup" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Opzioni legali" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Opzioni e-mail" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Caratteristiche Opzioni" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "Opzioni SEO" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Opzioni di sistema" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Benvenuti nella documentazione di eVibes.\n" -"\n" -"eVibes è una potente piattaforma di e-commerce che consente di lanciare e gestire un negozio online di qualsiasi tipo in pochi clic.\n" -"\n" -"## Caratteristiche principali\n" -"- **Catalogo dei prodotti:** Gestione dei dettagli dei prodotti, dei prezzi, delle scorte e della disponibilità di più categorie.\n" -"- Gestione degli ordini:** Elaborazione degli ordini, monitoraggio dell'evasione e gestione efficiente delle richieste dei clienti.\n" -"- Autenticazione e autorizzazione:** Autenticazione completa degli utenti con token JWT e autorizzazioni basate sui ruoli.\n" -"- Elaborazione dei pagamenti:** Integrazione di più gateway di pagamento e gestione sicura delle transazioni.\n" -"- Gestione di blog e contenuti:** Creazione e gestione di post sul blog e di contenuti di marketing per il vostro negozio.\n" -"- Operazioni B2B:** Endpoint dedicati per le transazioni business-to-business e la gestione della vendita all'ingrosso.\n" -"- Supporto multilingue:** Servite i clienti in tutto il mondo con funzionalità di internazionalizzazione completa (i18n).\n" -"- Integrazioni personalizzate:** Architettura API estensibile per l'integrazione con piattaforme e servizi esterni.\n" -"- **Analitica e reportistica:** Generazione di report dettagliati su vendite, inventario e comportamento dei clienti.\n" -"- Aggiornamenti in tempo reale:** Ottenete dati in tempo reale sui livelli di inventario, sullo stato degli ordini e sulle modifiche dei prezzi.\n" -"\n" -"## API disponibili\n" -"- API REST:** Interfaccia REST completa (questa documentazione)\n" -"- API **GraphQL:** Disponibile su `/graphql/` con interfaccia GraphiQL per le query interattive.\n" -"\n" -"## Autenticazione\n" -"- L'autenticazione è gestita tramite token JWT. Includere il token nell'intestazione `X-EVIBES-AUTH` delle richieste nel formato `Bearer `.\n" -"- La durata del token di accesso è %(access_lifetime)d %(access_unit)s.\n" -"- La durata del token di aggiornamento è di %(refresh_hours)d ore.\n" -"- I token di aggiornamento vengono ruotati e invalidati automaticamente dopo l'uso per una maggiore sicurezza.\n" -"\n" -"## Internazionalizzazione (i18n)\n" -"- Impostare l'intestazione `Accept-Language` per specificare la lingua preferita (ad esempio, `Accept-Language: en-US`).\n" -"- Le lingue disponibili possono essere recuperate dall'endpoint `/app/languages/`.\n" -"- Tutti i contenuti rivolti all'utente supportano immediatamente più lingue.\n" -"\n" -"## Formati di risposta\n" -"L'API supporta diversi formati di risposta:\n" -"- **JSON** (predefinito, formattato in camelCase)\n" -"- **XML** (aggiungere `?format=xml` o impostare `Accept: application/xml`)\n" -"- **YAML** (aggiungere `?format=yaml` o impostare `Accept: application/x-yaml`)\n" -"\n" -"## Salute e monitoraggio\n" -"- Controlli sulla salute: `/salute/`\n" -"- Metriche di Prometheus: `/prometheus/metriche/`\n" -"\n" -"## Versione\n" -"Versione attuale dell'API: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Il mio sito" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Salute" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Supporto" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menu" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Cruscotto" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Configurazione" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Compiti periodici" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Lavagna" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Collegamenti rapidi" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Utenti" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Gruppi" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Ordini" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Prodotti" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Categorie" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Marche" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogposts" diff --git a/evibes/locale/ja_JP/LC_MESSAGES/django.mo b/evibes/locale/ja_JP/LC_MESSAGES/django.mo deleted file mode 100644 index 671dd32aa777f9145d2ee30d318eb54740b0f64d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9146 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\n" -"Language-Team: LANGUAGE \n" -"Language: ja-jp\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "会社名" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "会社住所" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "会社の電話番号" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "貴社管轄の税率。税務処理を行わない場合は「0」のままにしてください。" - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "商品の販売価格に税金が含まれているかどうかを表示します。" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "為替レートAPIキー" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "変えないでくれ" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTPホスト" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTPポート" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "TLSを使用する" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "SSLの使用" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "SMTPユーザー名" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "SMTPパスワード" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "オプションからのメール" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "匿名ユーザーからのメッセージの保存日数" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "認証されたユーザーからのメッセージを何日間保存するか" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "購入機能を無効にする" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "OpenStreetMap Nominatim API URL" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI APIキー" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "抽象APIキー" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTPプロキシ" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "広告データを保存するエンティティ" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "分析データを保存するエンティティ" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "ベンダーのAPIからの応答を保存する" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "データベースのバックアップ" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "バックアップ・メディア" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "法的オプション" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Eメールオプション" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "機能オプション" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "SEOオプション" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "システムオプション" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"eVibes のドキュメントへようこそ。\n" -"\n" -"eVibesは、数クリックであらゆる種類のオンラインストアを立ち上げ、管理できる強力なeコマースプラットフォームです。\n" -"\n" -"## 主な機能\n" -"- 商品カタログ:** 複数のカテゴリにまたがる商品の詳細、価格、在庫、在庫状況を管理します。\n" -"- 注文管理:**注文を処理し、履行を追跡し、顧客の要求を効率的に処理します。\n" -"- JWT トークンとロールベースの権限による包括的なユーザー認証。\n" -"- 複数の決済ゲートウェイを統合し、トランザクションを安全に管理します。\n" -"- ブログ・コンテンツ管理:** ブログ記事やマーケティングコンテンツを作成・管理できます。\n" -"- B2B オペレーション:** 企業間取引と卸売管理のための専用エンドポイント。\n" -"- **多言語サポート:**完全な国際化(国際化)機能で世界中の顧客にサービスを提供します。\n" -"- カスタム統合:**外部プラットフォームやサービスと統合するための拡張可能なAPIアーキテクチャ。\n" -"- 分析&レポート:**売上、在庫、顧客行動に関する詳細なレポートを生成します。\n" -"- リアルタイム更新:**在庫レベル、注文状況、価格変更に関するライブデータを取得します。\n" -"\n" -"## 利用可能なAPI\n" -"- **REST API:** 完全なRESTfulインターフェース(このドキュメント)\n" -"- **GraphQL API:** `/graphql/` で利用可能で、対話的なクエリのための GraphiQL インターフェースがある。\n" -"\n" -"## 認証\n" -"- 認証はJWTトークンで行われる。リクエストの `X-EVIBES-AUTH` ヘッダーに `Bearer ` という形式でトークンを含めてください。\n" -"- アクセストークンの有効期限は %(access_lifetime)d %(access_unit)s です。\n" -"- リフレッシュ・トークンの有効期限は %(refresh_hours)d 時間です。\n" -"- リフレッシュ・トークンは、セキュリティ強化のため、使用後に自動的にローテーションされ無効化されます。\n" -"\n" -"## 国際化 (i18n)\n" -"- Accept-Language`ヘッダーに希望の言語を設定してください(例:`Accept-Language: en-US`)。\n" -"- 利用可能な言語は `/app/languages/` エンドポイントから取得できます。\n" -"- すべてのユーザー向けコンテンツは、すぐに多言語をサポートします。\n" -"\n" -"## レスポンスフォーマット\n" -"APIは複数のレスポンスフォーマットをサポートしています:\n" -"- JSON** (デフォルト、キャメルケースフォーマット)\n" -"- XML** (`?format=xml` を追加するか、`Accept: application/xml` を設定する)\n" -"- YAML** (`?format=yaml` を追加するか、`Accept: application/x-yaml` を設定してください)\n" -"\n" -"## ヘルス&モニタリング\n" -"- ヘルスチェックヘルスチェック: `/health/`\n" -"- Prometheus メトリクス:プロメテウスのメトリクス: `/prometheus/metrics/`\n" -"\n" -"## バージョン\n" -"現在のAPIバージョン:現在の API バージョン: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "私のサイト" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "健康" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "サポート" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "メニュー" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "ダッシュボード" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "コンフィグ" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "定期的なタスク" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "タスクボード" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "クイックリンク" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "ユーザー" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "グループ" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "受注状況" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "製品紹介" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "カテゴリー" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "ブランド" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "ブログ記事" diff --git a/evibes/locale/kk_KZ/LC_MESSAGES/django.mo b/evibes/locale/kk_KZ/LC_MESSAGES/django.mo deleted file mode 100644 index 6c5906d1cd061dff54de8b533942893de34efc9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmYL@Jx{|h5Qd9j%E-dP;DHUUz!pqFHI3Uw*h!U-O0b#M1fyU_j*H-j@b~yFTo(FD zk8Zg4bkFbc(a#8TfSe*{$RTop42h8wT;AXuI{#UD_pUbq(k-mD?~SvRtk~?4EjU^8 zqD=EFDs<<30NFQY3lF=dhsseBt#T;zrx|V_Q9)Dk#909{hlG)3PGx%joM$`|st-_k zW&2hI=P8-jLXeC}P9|KkR7_ct6ud0&v1*&0YBW?@eNZA;wx|b_i4fD)jGb@x9W;=s z, YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and " -"manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and " -"availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle " -"customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with " -"JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage " -"transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing " -"content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business " -"transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full " -"internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with " -"external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " -"and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " -"and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " -"interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-" -"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for " -"enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., " -"`Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "" - diff --git a/evibes/locale/ko_KR/LC_MESSAGES/django.mo b/evibes/locale/ko_KR/LC_MESSAGES/django.mo deleted file mode 100644 index 1a3c3d40daad4d70469bed4ce5badf1d053af3f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8491 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 diff --git a/evibes/locale/ko_KR/LC_MESSAGES/django.po b/evibes/locale/ko_KR/LC_MESSAGES/django.po deleted file mode 100644 index 0b7d53f5..00000000 --- a/evibes/locale/ko_KR/LC_MESSAGES/django.po +++ /dev/null @@ -1,297 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: ko-kr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "회사 이름" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "회사 주소" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "회사 전화번호" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "회사 관할 지역의 세율입니다. 세금을 처리하지 않으려면 0을 그대로 둡니다." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "제품 판매 가격에 세금이 이미 포함되어 있는지 표시합니다." - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "환율 API 키" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!변경하지 마세요!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP 호스트" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTP 포트" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "TLS 사용" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "SSL 사용" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "SMTP 사용자 이름" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "SMTP 비밀번호" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "메일발송 옵션" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "익명 사용자의 메시지를 보관하는 일수" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "인증된 사용자의 메시지를 보관하는 일수" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "구매 기능 비활성화" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "오픈스트리트맵 노미나팀 API URL" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI API 키" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "추상 API 키" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP 프록시" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "광고 데이터를 저장하는 엔티티" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "분석 데이터를 저장하는 엔티티" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "공급업체 API의 응답 저장하기" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "백업 데이터베이스" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "백업 미디어" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "법적 옵션" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "이메일 옵션" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "기능 옵션" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "SEO 옵션" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "시스템 옵션" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"eVibes 문서에 오신 것을 환영합니다.\n" -"\n" -"eVibes는 클릭 몇 번으로 모든 종류의 온라인 스토어를 시작하고 관리할 수 있는 강력한 전자상거래 플랫폼입니다.\n" -"\n" -"주요 기능 ## 주요 기능\n" -"- **제품 카탈로그:** 여러 카테고리에서 제품 세부 정보, 가격, 재고 및 가용성을 관리합니다.\n" -"- 주문 관리:** 주문을 처리하고, 주문 이행을 추적하고, 고객 요청을 효율적으로 처리하세요.\n" -"- 인증 및 권한 부여:** JWT 토큰 및 역할 기반 권한으로 포괄적인 사용자 인증을 수행합니다.\n" -"- 결제 처리:** 여러 결제 게이트웨이를 통합하고 거래를 안전하게 관리하세요.\n" -"- **블로그 및 콘텐츠 관리:** 스토어용 블로그 게시물과 마케팅 콘텐츠를 생성하고 관리합니다.\n" -"- B2B 운영:** B2B 거래 및 도매 관리를 위한 전용 엔드포인트.\n" -"- 다국어 지원:** 완전한 국제화(i18n) 기능으로 전 세계 고객에게 서비스를 제공합니다.\n" -"- **맞춤형 통합:** 외부 플랫폼 및 서비스와의 통합을 위한 확장 가능한 API 아키텍처.\n" -"- **분석 및 보고:** 판매, 재고, 고객 행동에 대한 상세한 보고서를 생성합니다.\n" -"- 실시간 업데이트:** 재고 수준, 주문 상태, 가격 변동에 대한 실시간 데이터를 확인할 수 있습니다.\n" -"\n" -"## 사용 가능한 API\n" -"- **REST API:** 전체 RESTful 인터페이스(이 문서)\n" -"- GraphQL API:** 대화형 쿼리를 위한 GraphiQL 인터페이스로 `/graphql/`에서 사용 가능\n" -"\n" -"## 인증\n" -"- 인증은 JWT 토큰을 통해 처리됩니다. 토큰을 요청의 `X-EVIBES-AUTH` 헤더에 `Bearer ` 형식으로 포함하세요.\n" -"- 액세스 토큰 수명은 %(access_lifetime)d %(access_unit)s입니다.\n" -"- 새로 고침 토큰 수명은 %(refresh_hours)d시간입니다.\n" -"- 새로 고침 토큰은 보안 강화를 위해 사용 후 자동으로 교체되고 무효화됩니다.\n" -"\n" -"## 국제화(i18n)\n" -"- 수락 언어` 헤더를 설정하여 선호하는 언어를 지정합니다(예: `수락 언어: en-US`).\n" -"- 사용 가능한 언어는 `/app/languages/` 엔드포인트에서 검색할 수 있습니다.\n" -"- 모든 사용자 대상 콘텐츠는 기본적으로 여러 언어를 지원합니다.\n" -"\n" -"## 응답 형식\n" -"API는 여러 응답 형식을 지원합니다:\n" -"- JSON**(기본값, 카멜케이스 형식)\n" -"- XML** (`?format=xml` 추가 또는 `수락: application/xml` 설정)\n" -"- YAML** (`?format=yaml` 추가 또는 `수락: application/x-yaml` 설정)\n" -"\n" -"## 상태 및 모니터링\n" -"- 상태 확인: `/health/`\n" -"- 프로메테우스 메트릭: `/prometheus/metrics/`\n" -"\n" -"## 버전\n" -"현재 API 버전입니다: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "내 사이트" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "건강" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "지원" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "메뉴" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "대시보드" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "구성" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "정기 작업" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "작업 보드" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "빠른 링크" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "사용자" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "그룹" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "주문" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "제품" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "카테고리" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "브랜드" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "블로그 게시물" diff --git a/evibes/locale/nl_NL/LC_MESSAGES/django.mo b/evibes/locale/nl_NL/LC_MESSAGES/django.mo deleted file mode 100644 index 3f241bc5e1a2e1bf9cb09234e6e5054618d68548..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8377 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\n" -"Language-Team: LANGUAGE \n" -"Language: nl-nl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Naam van het bedrijf" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Adres van het bedrijf" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Telefoonnummer van het bedrijf" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Belastingtarief in het rechtsgebied van je bedrijf. Laat 0 staan als je geen" -" belastingen wilt verwerken." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "" -"Geeft aan of de belastingen al zijn opgenomen in de verkoopprijzen van het " -"product" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Wisselkoers API sleutel" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "NIET VERANDEREN!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP host" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTP poort" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "TLS gebruiken" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "SSL gebruiken" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "SMTP gebruikersnaam" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "SMTP wachtwoord" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Mail van optie" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Hoeveel dagen we berichten van anonieme gebruikers bewaren" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Hoeveel dagen we berichten van geverifieerde gebruikers bewaren" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Koopfunctie uitschakelen" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "OpenStreetMap Nominatim API URL" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI API sleutel" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Abstracte API-sleutel" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP-proxy" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Een entiteit voor het opslaan van adverteerdersgegevens" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Een entiteit voor het opslaan van analytische gegevens" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Reacties opslaan van API's van leveranciers" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Back-up database" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Back-up media" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Juridische opties" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "E-mailopties" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Functies Opties" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "SEO Opties" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Systeemopties" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Welkom bij de eVibes documentatie.\n" -"\n" -"eVibes is een krachtig e-commerce platform waarmee je in een paar klikken een online winkel van elk type kunt starten en beheren.\n" -"\n" -"## Belangrijkste functies\n" -"- **Productcatalogus:**Beheer productgegevens, prijzen, voorraad en beschikbaarheid in meerdere categorieën.\n" -"- **Order Management:** Verwerk bestellingen, volg de leveringen en behandel verzoeken van klanten efficiënt.\n" -"- **Authenticatie en autorisatie:**Uitgebreide gebruikersverificatie met JWT tokens en rolgebaseerde rechten.\n" -"- **Betalingsverwerking:** Integreer meerdere betalingsgateways en beheer transacties veilig.\n" -"- **Blog & Content Management:** Creëer en beheer blog posts en marketing content voor uw winkel.\n" -"- **B2B Operations:** Specifieke eindpunten voor business-to-business transacties en groothandelsbeheer.\n" -"- Ondersteuning voor meerdere talen:** Bedien klanten wereldwijd met volledige internationalisatiemogelijkheden (i18n).\n" -"- Aangepaste integraties:** Extensibele API-architectuur voor integratie met externe platforms en diensten.\n" -"- Analyse en rapportage:** Genereer gedetailleerde rapporten over verkoop, voorraad en klantgedrag.\n" -"- Realtime updates:** Ontvang live gegevens over voorraadniveaus, orderstatussen en prijswijzigingen.\n" -"\n" -"## Beschikbare API's\n" -"- **REST API:** Volledige RESTful interface (deze documentatie)\n" -"- **GraphQL API:** Beschikbaar op `/graphql/` met GraphiQL interface voor interactieve queries\n" -"\n" -"## Authenticatie\n" -"- Authenticatie wordt afgehandeld via JWT tokens. Neem het token op in de `X-EVIBES-AUTH` header van je verzoeken in het formaat `Bearer `.\n" -"- De levensduur van het toegangstoken is %(access_lifetime)d %(access_unit)s.\n" -"- De levensduur van een verversingstoken is %(refresh_hours)d uur.\n" -"- Refresh tokens worden automatisch geroteerd en ongeldig gemaakt na gebruik voor een betere beveiliging.\n" -"\n" -"## Internationalisatie (i18n)\n" -"- Stel de `Accept-Language` header in om uw voorkeurstaal op te geven (bijvoorbeeld `Accept-Language: en-US`).\n" -"- Beschikbare talen kunnen worden opgehaald van het `/app/languages/` eindpunt.\n" -"- Alle gebruikerscontent ondersteunt standaard meerdere talen.\n" -"\n" -"## Antwoordformaten\n" -"De API ondersteunt meerdere antwoordformaten:\n" -"- **JSON** (standaard, camelCase geformatteerd)\n" -"- **XML** (voeg `?format=xml` toe of stel `Accept: application/xml` in)\n" -"- **YAML** (voeg `?format=yaml` toe of stel `Accept: application/x-yaml` in)\n" -"\n" -"## Gezondheid en bewaking\n" -"- Gezondheidscontroles: `/health/`\n" -"- Prometheus metingen: `/prometheus/metrics/`\n" -"\n" -"## Versie\n" -"Huidige API versie: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Mijn site" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Gezondheid" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Ondersteuning" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menu" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Dashboard" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Config" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Periodieke taken" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Taakbord" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Snelle links" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Gebruikers" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Groepen" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Bestellingen" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Producten" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Categorieën" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Merken" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogposts" diff --git a/evibes/locale/no_NO/LC_MESSAGES/django.mo b/evibes/locale/no_NO/LC_MESSAGES/django.mo deleted file mode 100644 index b70c2c0e1197dfdf50e2d71d806474831caae4b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8307 zcmb7}O^h7rS;q?!zMAlrg@o_C%Vu}&S=V^I0%2y?$@Yxf_N?c_>z;9T0coeY>+SAx zS65Z4s(aiZI0PYqlyE_T3&;47NQkQ?4hZ>_141YuB7{JSIKTyQ0CC8L-~WB9dV0pO zHni09bXC0{&-*<8=i^`VFCYKtmjgc6`2IZKuY6As>>#gvgg<<)e>4bw|A&I$*N`u8 z{Z~H{1V4`a2J#cge?wkEejE8|FpCC2w6p8A=A0U4K z`6Z;z@ns}ag0CV!g?xh4`rmBs|10w6xc*P%4hIf5MM@8~J_Qzk|GuPY#g($b>)nxYs|! zSwG41FCe)U{3%j?_!{yheD+AmxYOMQWelLt@(Ci%9MB zXGrP$7f9jeZ;|rTKO^Ob|3b=MA7hZ_eFBNef>)5b|EoyN>o(U1NR4|BDO^sFpGAHN zDgFNjseS(esd@j793uY*DgE9zUJj5NKSkmOcLv${;zv5X+T4_#w8lsHN_W}mD&H%7 zWeeF;*to{`r}+x^`UrpeNFRLkxLJDuisQklpU`Kc{O^VHaonKN4sttrx|9_8hXHKN)?X_}u_W|_~m zY#Pn8;lxB)Y-UjwjV(V-o~21RBaD~p|sC##_>yRaAuLB893(dX|(h!H%{f`SrrYXb!93$#7*s)w($-p*~wXv zZM>6O3+|NoRG3)7W1!(hF7x=i<<^wDGFBlw7->T?TN4$KncdI}R`_SID+H zTJI5ttdarRb?@z(s2om`+71;O?ugn%u9MN+)|LtEnyv!Xn-=UW67btVj{!@NSK+Js zR)=bkaNA}wtTjHKuxRNX1N+R#MgadpV6{dt13QTpNnZLb?%OC0j}r3DaS^kkJI!rd zn^ailPNXGQYnjw8tm4;&7w#tdEA1u^H8E|51lL$+P?G5SfcA#*Y2tpbeaJS?F z-BA8=t{6q6uS@lW)OIfEU3MXVyNrs-yL;{Qv(?FRCs#3XG5LIY^~4+54Ne$+wy^N# zt`r!Ykf>Ka@v5E+TDH3o`e@|SMr;;Iv=+~s;9;1~ft510i*Yt_7bow9y$8G7y?)p| zKDu*aCN@&eBEhB2X4X7oXBC_p-XOli!>P#hPV#JUcMB$ zM<28|FUM#1=2=o-c9^qhmYPFHrhtA57S@V!D&s^xPzH3Z}_#If@d_X}UCJ z4h{gJKmb$-BSDGl5g;caDk^1on_<5p4_r1P!+VJAK0gB4y$={=))Sq*sKdP`&R4di zqE&?*CZnadDYKy9a0#D7M-5L`7NS+L@$ z%vDm+=4wp{ZJ2~Y75hCY`oJyJRr(0#dZ{tC9iOznN4@7I&uge#7#c1-rL{P zz$lK*$!Gnu8;@q`36YMwfTTD7mf_s=04`r%)c`;J{qA>|zl=U~fzXY)?BeeZxrjRX zirLQrEG0G@bBN~daAIjZwlF*)#IUO;JfqmpEEbz%QTb@-2GDFYcds^g8LV9NfR2ES z-PxG~59*#Qx$yV4h?eH(<*F0B_~MH<56!{hk=eP^J-FTDI_M56H4}asy-(1MW2{cj z^t<_oKobQ!Xbty>m97 z4Sa4_5Vvr^HfoBi;N3Z`v)M~BCiHuUE1moMSa3pj6}VqTR8{mTadSn{_rG-9i~|Jy zh`QB=dt**|=r}K{SEVPbPt@%v9+q|V2&22CozmIGOH#BeR<5-tR;1ml>JU>H0DT@| zWLd+fs-VBDYCBsgtMhs|9Yv2kLL5OTlL~XV4!NyujR7{zo|VS0OCd3kIL}_K&1pm! zkh)R8mo%xl861) z_p5OdhuiaU6&~eVrgQHwyl)r8U7m$EiHI&cFmo`t^M8Ce*N&E*V&7z zIy_R-33JNJEpzL5Z_gZb_j~58-hOv?@9pl*n=~r@&oID1aT})-rC!H zJ54t8a(p&s%Vc?&<(>WA{oa}G*EV18G|hK-v@B4nrXjovX-l#<)jyS_+#AP7x5DdZ zdB2unR)Ssxpw)@PSAN^ z)2S#T%?W|xNn{x3Q_n4{hroD^T>@rCPD|=|GKO8M`=R?2xAf$)B9hanqzxUb7cA*W zVG2=9)FdQJOQ*mBlSPt3dyGa;n2+B%v&n2-59W0;oszs`GY~|xoN=S4kIgjYzAu6Y zPoGSuHYH_Eor0xL{PBERPtS;E_iR&PN>9}srw?uE*d{o-g05p*(g5daoC)hFiyg)f zE&Xbmj3?B&g3W7H0uwFFDAf_z#V1wQGm`-zdru!{G0lzKK-t`;r*?c2s?LInBW*`T zW_n%}qh*?MaA%!%D(lWMCpCh~{q#v$v6tAVozj>(W<&d_LW1UvuIjo7v`A*qwuiHk zDmbf{K{=m73C_)sRUw_wDn~jwESxj7DkJig6y;>7<<7M&Yq3!!g1}*PG&+ce>Y$r9 z#-JT0Is((6mmQn-Obu&m{N!vYzvD{A&7MB4t-2#st#PP%NtVeM)e13ZM=NOKYC58G za57?|V`imx?7TONprUa#!hTY{S_B^f^Nlav^E`->M$x}$F zJE$M*!KKaZluTbz$5!#}ohz+@wMR);-H8V>TuT^O1%V@_OliXo+pdNfLLXkr`=0L* zf-VktU4sRo}1Y@nj-L=x8RX*9+xJXKCqdVc4MiGKbKZ??@AEz^Q5nY(6dtn5>Vxis1&9ygy^@Em1b zhuLc86way_mYiu+Mr-L!FGwzsR)t$Pt()qhge!3Pq}-;iHt{!#slos-&_pg5sp>DH z68!~?vZFM^5>3`yORA! z8CPMd>i-N~HM@83_Dt`99@W5BTe=F0H7)Z!RM4l~PoqNd6gl#0gP!QBIv;_PbgG1- z-iJi1R}Z?Z920&1Kvxpnn7%9ZtX56)BJs6_we)O_y@sSf9yV%`z>*Sc6NSTlh;Cav%pU9Ti$8KY9|Q>XEuKEYDJAXzZ7|%;3`;EkUm%%>7tRhg?ot{OD%yC>#c~`jjFxtDl z*4MV=SGrK6$B?@+IHHpo\n" -"Language-Team: LANGUAGE \n" -"Language: no-no\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Selskapets navn" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Selskapets adresse" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Telefonnummer til selskapet" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Skattesats i jurisdiksjonen til selskapet ditt. La 0 stå hvis du ikke ønsker" -" å behandle skatter." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "Viser om avgiftene allerede er inkludert i produktets salgspris" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "API-nøkkel for valutakurs" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!! IKKE ENDRE !!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP-vert" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTP-port" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Bruk TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Bruk SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "SMTP-brukernavn" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "SMTP-passord" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Alternativet Mail fra" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Hvor mange dager vi lagrer meldinger fra anonyme brukere" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Hvor mange dager vi lagrer meldinger fra autentiserte brukere" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Deaktiver kjøpsfunksjonalitet" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "OpenStreetMap Nominatim API URL" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI API-nøkkel" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Abstrakt API-nøkkel" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP-proxy" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "En enhet for lagring av annonseringsdata" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "En enhet for lagring av analysedata" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Lagre svar fra leverandørers API-er" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Sikkerhetskopiering av database" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Backup-medier" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Juridiske alternativer" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "E-postalternativer" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Funksjoner Alternativer" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "SEO-alternativer" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Systemalternativer" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Velkommen til eVibes-dokumentasjonen.\n" -"\n" -"eVibes er en kraftig e-handelsplattform som lar deg starte og administrere en hvilken som helst type nettbutikk med bare noen få klikk.\n" -"\n" -"## Nøkkelfunksjoner\n" -"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og tilgjengelighet på tvers av flere kategorier.\n" -"- Ordrehåndtering:** Behandle bestillinger, spore oppfyllelse og håndtere kundeforespørsler effektivt.\n" -"- Autentisering og autorisasjon:** Omfattende brukerautentisering med JWT-tokens og rollebaserte tillatelser.\n" -"- Betalingsbehandling: ** Integrer flere betalingsportaler og håndter transaksjoner på en sikker måte.\n" -"- Blogg- og innholdsadministrasjon:** Opprett og administrer blogginnlegg og markedsføringsinnhold for butikken din.\n" -"- B2B-drift: ** Dedikerte endepunkter for business-to-business-transaksjoner og grossistadministrasjon.\n" -"- Flerspråklig støtte:** Betjen kunder over hele verden med full internasjonaliseringsfunksjonalitet (i18n).\n" -"- **Tilpassede integrasjoner:** Utvidbar API-arkitektur for integrering med eksterne plattformer og tjenester.\n" -"- Analyse og rapportering:** Generer detaljerte rapporter om salg, lagerbeholdning og kundeatferd.\n" -"- Sanntidsoppdateringer:** Få sanntidsdata om lagernivåer, ordrestatus og prisendringer.\n" -"\n" -"## Tilgjengelige API-er\n" -"- **REST API:** Fullt REST-grensesnitt (denne dokumentasjonen)\n" -"- GraphiQL API:** Tilgjengelig på `/graphql/` med GraphiQL-grensesnitt for interaktive spørringer\n" -"\n" -"## Autentisering\n" -"- Autentisering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-AUTH`-overskriften i forespørslene dine i formatet `Bearer `.\n" -"- Levetiden for tilgangstoken er %(access_lifetime)d %(access_unit)s.\n" -"- Oppdateringstokenets levetid er %(refresh_hours)d timer.\n" -"- Oppdateringstokener roteres automatisk og ugyldiggjøres etter bruk for økt sikkerhet.\n" -"\n" -"## Internasjonalisering (i18n)\n" -"- Angi `Accept-Language`-overskriften for å spesifisere ditt foretrukne språk (f.eks. `Accept-Language: en-US`).\n" -"- Tilgjengelige språk kan hentes fra endepunktet `/app/languages/`.\n" -"- Alt brukerrettet innhold støtter flere språk uten videre.\n" -"\n" -"## Svarformater\n" -"API-et støtter flere svarformater:\n" -"- **JSON** (standard, camelCase-formatert)\n" -"- XML** (legg til `?format=xml` eller angi `Accept: application/xml`)\n" -"- **YAML** (legg til `?format=yaml` eller angi `Accept: application/x-yaml`)\n" -"\n" -"## Helse og overvåking\n" -"- Helsesjekker: `/health/`\n" -"- Prometheus-beregninger: `/prometheus/metrics/`\n" -"\n" -"## Versjon\n" -"Gjeldende API-versjon: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Min side" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Helse" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Støtte" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Meny" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Dashbord" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Konfigurer" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Periodiske oppgaver" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Oppgavetavle" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Hurtigkoblinger" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Brukere" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Grupper" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Bestillinger" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Produkter" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Kategorier" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Merkevarer" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogginnlegg" diff --git a/evibes/locale/pl_PL/LC_MESSAGES/django.mo b/evibes/locale/pl_PL/LC_MESSAGES/django.mo deleted file mode 100644 index 8125b41386ba8dd037c1d004da253a740ba73e24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8625 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 ILs$p@5AvQE&;S4c diff --git a/evibes/locale/pl_PL/LC_MESSAGES/django.po b/evibes/locale/pl_PL/LC_MESSAGES/django.po deleted file mode 100644 index de69218c..00000000 --- a/evibes/locale/pl_PL/LC_MESSAGES/django.po +++ /dev/null @@ -1,299 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: pl-pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Nazwa firmy" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Adres spółki" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Numer telefonu firmy" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Stawka podatku w jurysdykcji Twojej firmy. Pozostaw 0, jeśli nie chcesz " -"przetwarzać podatków." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "Pokazuje, czy podatki są już uwzględnione w cenie sprzedaży produktu." - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Klucz API kursu wymiany" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!! NIE ZMIENIAJ !!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "Host SMTP" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "Port SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Używanie TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Używanie protokołu SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "Nazwa użytkownika SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "Hasło SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Poczta z opcji" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Ile dni przechowujemy wiadomości od anonimowych użytkowników?" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Ile dni przechowujemy wiadomości od uwierzytelnionych użytkowników?" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Wyłączenie funkcji kupowania" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "Adres URL interfejsu API OpenStreetMap Nominatim" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "Klucz API OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Abstrakcyjny klucz API" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "Serwer proxy HTTP" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Jednostka do przechowywania danych reklamowych" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Jednostka do przechowywania danych analitycznych" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Zapisywanie odpowiedzi z interfejsów API dostawców" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Kopia zapasowa bazy danych" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Nośniki kopii zapasowych" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Opcje prawne" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Opcje e-mail" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Opcje funkcji" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "Opcje SEO" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Opcje systemowe" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Witamy w dokumentacji eVibes.\n" -"\n" -"eVibes to potężna platforma e-commerce, która umożliwia uruchomienie i zarządzanie sklepem internetowym dowolnego rodzaju za pomocą zaledwie kilku kliknięć.\n" -"\n" -"## Kluczowe funkcje\n" -"- Katalog produktów:** Zarządzanie szczegółami produktów, cenami, zapasami i dostępnością w wielu kategoriach.\n" -"- **Zarządzanie zamówieniami:** Przetwarzanie zamówień, śledzenie realizacji i sprawna obsługa zgłoszeń klientów.\n" -"- Uwierzytelnianie i autoryzacja:** Kompleksowe uwierzytelnianie użytkowników za pomocą tokenów JWT i uprawnień opartych na rolach.\n" -"- Przetwarzanie płatności:** Integracja wielu bramek płatniczych i bezpieczne zarządzanie transakcjami.\n" -"- Blog i zarządzanie treścią:** Tworzenie i zarządzanie wpisami na blogu oraz treściami marketingowymi dla sklepu.\n" -"- Operacje B2B:** Dedykowane punkty końcowe dla transakcji między firmami i zarządzania sprzedażą hurtową.\n" -"- Obsługa wielu języków:** Obsługa klientów na całym świecie dzięki pełnym możliwościom internacjonalizacji (i18n).\n" -"- Integracje niestandardowe:** Rozszerzalna architektura API do integracji z zewnętrznymi platformami i usługami.\n" -"- Analityka i raportowanie:** Generowanie szczegółowych raportów dotyczących sprzedaży, zapasów i zachowań klientów.\n" -"- Aktualizacje w czasie rzeczywistym:** Uzyskaj dane na żywo o poziomach zapasów, statusach zamówień i zmianach cen.\n" -"\n" -"## Dostępne API\n" -"- **REST API:** Pełny interfejs RESTful (ta dokumentacja)\n" -"- API GraphQL:** Dostępne pod adresem `/graphql/` z interfejsem GraphiQL do interaktywnych zapytań.\n" -"\n" -"## Uwierzytelnianie\n" -"- Uwierzytelnianie jest obsługiwane za pomocą tokenów JWT. Dołącz token w nagłówku `X-EVIBES-AUTH` swoich żądań w formacie `Bearer `.\n" -"- Okres ważności tokenu dostępu wynosi %(access_lifetime)d %(access_unit)s.\n" -"- Okres ważności tokenu odświeżania wynosi %(refresh_hours)d godzin.\n" -"- Tokeny odświeżania są automatycznie obracane i unieważniane po użyciu w celu zwiększenia bezpieczeństwa.\n" -"\n" -"## Internacjonalizacja (i18n)\n" -"- Ustaw nagłówek `Accept-Language`, aby określić preferowany język (np. `Accept-Language: en-US`).\n" -"- Dostępne języki można pobrać z punktu końcowego `/app/languages/`.\n" -"- Cała zawartość skierowana do użytkownika obsługuje wiele języków od razu po wyjęciu z pudełka.\n" -"\n" -"## Formaty odpowiedzi\n" -"API obsługuje wiele formatów odpowiedzi:\n" -"- **JSON** (domyślny, sformatowany camelCase)\n" -"- **XML** (dodaj `?format=xml` lub ustaw `Accept: application/xml`)\n" -"- **YAML** (dodaj `?format=yaml` lub ustaw `Accept: application/x-yaml`)\n" -"\n" -"## Zdrowie i monitorowanie\n" -"- Sprawdzanie kondycji: `/health/`\n" -"- Metryki Prometheus: `/prometheus/metrics/`\n" -"\n" -"## Wersja\n" -"Aktualna wersja API: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Moja strona" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Zdrowie" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Wsparcie" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menu" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Pulpit nawigacyjny" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Konfiguracja" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Zadania okresowe" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Tablica zadań" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Szybkie łącza" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Użytkownicy" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Grupy" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Zamówienia" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Produkty" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Kategorie" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Marki" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogposts" diff --git a/evibes/locale/pt_BR/LC_MESSAGES/django.mo b/evibes/locale/pt_BR/LC_MESSAGES/django.mo deleted file mode 100644 index ae6a31018b96a599dddf5737a2656653b4223a89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8702 zcmbW6Pi$n#UB_P_B*gqlvf)1@sbRCbo>{kNHUcqtcf$18o*8G|wli&SvgEL??k;z~ znb+_2zW3U8M+y@E1RM|tlpGP8AXXD;C87-kZ4L;v6o~@|goJWHAgwqMAvi@`a^dr> zs_wQu8SRRe+P|*%s(%0fmjCUE_kJni^Bmt_;`$rY0Z-!kcjEg$ z0{%SD{}c$Sr;D1%C~yg6KL-3rgdYb=u4jRw_p5Qe9@j14 zC7ypCD1CkrDEfa76y1LS>ilt6%j1df5IF8Ldv^zdzGQwi`~L;XkKSj% z1^g&bdRhm{PA>u>oxB3nx!(ec-#-8f|CfQ%<6i>B&tFCOEuj48+rTTpe+9k>d_T+x ze;X+Lp9iAaqyQcQe;X(|Z%6oFK;i!$@I64uu*~=3M|+-$4}TUY910=%kob~qR``mi zU*HQmA9J#i{9YgFRUgHTWPVzU_<0t1jjv?K#GZG_C7+ai4PSkvOX+d;LA~BTXKO*( z@rU@zPo%>q`AR49kJ;xkKa>wv`N|)DnXmMukNh%O`mD>k#n73$F!jJ0_fpz%mFX4T z@zCY9tJtGIcN@db?%Mm63#$BZBbIbsQ@64nlQl zyAKT7IZCrkn*yBy(hDP!q3qI>?$xoY>dLsIBRFGUHVH(UW6Y4(Da28|dD`d!Onkww zMRL6uj!MU-Dm`{)T!GG>KXj7T1M}(6?xXz&Z1a+qMdlhETe+SYxpJ6R73ia2dv+pL zXTqQ;(b>uozeEQMjf~>PK2J~VBw&t4Me@9|U2$ER%5^c*Or~2{2T9foFhV96X{N#T z5}V2==I+ta_E91Ags0^LSHqO)Mg(}8oU07(6ZCfLlef$+l6f^%;(x>Sq(uaFd2dvt zIrwz4Gp=yGs%q3lWANT!=PlpIc4_(vHZ=i6c|WI z)GMC^R?h`3>w=V^V}`_w&mM6w=49%p+4f-<~&WdO~J;~t9WxkLCVK23frV3csqvWY1R`~WAE z6W}U@kz9%O5l&7*R8&gwE=PY|UifT8h7T^X_4o*cdK+hyS`Q`rsBUb>IG^j1idKzW zH$9pJosx@>TvFMMf~T)3&B<6B*$PpDhriV zxVdUaqpS0sc-$Occ$KAR`2kebevv^fS-jBB}tkavpHpqYEF8j)d~x$XU; zTH5EW63nBBFl*QvT&P+@byu!@y1lzYlr8t%ktIv6Akole>r@>X1PfxO5LlmUZEK_L z^~~XKgm*VihuI;Kj=6Bjp#C+3-1GoGUtZOQaQx-w4>&)u?}(t`_gwbzcb8m5oqXD~ z3LKUaoA(hSKJ5-1jmH{_CxqB`^^kWI`=LW)V>Buob^QjKjrjCxe9C6!qL=6h$kmE<$LM{MX0M0V$+^L5 z^j;&nrlgtU3$^+e)aWasT)_4~U#AuE3S}kM$8DS^eZT1z?aO%N52#s4;(ACewTbGu zugl3T%4M%g)``2&Ate;|qqLuF*lN%zY}rdT(#onpb;fW;2dKt?P^~A)=8&d~V(nXn zWb-s6aN{eCbo2mWXN}%`+nur)kE-PE{{Eiqa5_nXrINeFiAwYYo@q!<4!@+IWr;5&aZ%GhOpzzWpEtijz*2Gkl<75Ztzi2I5 zl)Sm+T|qY0vR#+X)h#D|pm)y4!%oQU z3gVeNpc^&CRq~lJt+Uxqa}KmOcjr8}TWD}Vca`{GBU@GUDZRL&=!ahtH%EY^ZK+$c zaF6Pwhwc?+^^Eug`#{}(8r-tBrzqVg?TpT@Hz7s)V&z+VVny6NqYg1+0-(<$j2t*Z zs!H0Es&>OUvywNs)4n|o9^watGObXD?~rG;Eh=EuY&&s$O$=!Q=@t1iwK=hb0jV1X zLP-;wtH}YGsomc8aDTfkh@S53cuD{s4vuR%1yw~2^-B}6^QlnM% z(_Z7&xL-B)i#4;fx7)bqj)}V>Z)^}9Yv$$6=DkL1x3SSQcX!uXThIRH?#|}Ywyo;M zzM4)Zr=nalw-2_r%}%qmXc8PgZx+Hj zjl$O0%)7WABZ0ZzN$aJ(Y+TaA-6oxr{qm7tRyRKRJgueP+*r=dr5onC%g-+*OSjyx zam-X#nCYJ{+Ney!L#|+b6A>7m& zms^}S>yMdXm_0S5h0?f3dFZAiOYc)^wy6p=m*l_cYa~UafxdjZE@DgTDTj_3=4e^z z6Q-{h{9x`Y#4|5b7131VXOBMZED}Qy98X^>Q~1#kqbzHEPjx2>rNkcSlAC*hERHMh zM&MC+xI)ZOMriL$VL+4jd_h2gblg3jda;Sdf+CyN7SsH-AOF4hP|zY4Z)Vjnsyg3u zj5W(qnS(V$kESuzuhnbQ&Ys<2J9t!ID1~ucjU`bU!~jb4F}n2)Qn(rn+tKj6KJ17MV2JXNlbKg*Rw@5+@& z^sX@##t;B<)3ivq>Ev^NV9Ex1dGJo`~7r%Cm#K=hS3{fe+!bB3zOIRRb8jkth! zsq)n^m6bWyN(E{bG}-3W^bO|3Abc=>bW5?a$RV;83H~@$Ao`PKUihGD=EQNzXvq%l zEePv3<(#64-HDSk524I`)4;2{DmwBrY2;jFOKMaYJW{DHDoa8(YZ6Zg6vY~zO~oSv z5v7?3?skx9fPkLDx!1(0=;abu11nw-lF3S(jrAyoK9bP5!hF=G-h>nsGMY+v%s>I1 zSVN(jj>U#-QTpk4HZMn0TC)sQ_?z7kLg1@~`f?qQ6SFYT0g~Q=X%OS=yezwTXYd5( zgR}Qu;;CYIASV3|`k`YxpP0{N6cN;9c;=Cze&GByDT5kP(xp=?5PXqe;_OTzh(l?P zZET0sj7bY~aen430r^ONEMahlXap+KW&!*o; zrgN!!KcvKYbuh;TPL1unFj8KqfHImQi=5+=m_lP#xaPdM3PBN?Xd-!r09Fe|@95Kj z@6QR!rKS(Ug2v5puf^PcA(2P7J$LB*>^`!+5?5G>9xjdv-uWPZVSJ|}&@6IchNtTe zc74}l{6#!*mVXCCXUF-rr3S0^4#PMfaxaFUh4)^w$b-r&{nD4t3ln~8`cQK{5s%pP z7;&)IF50`tkNGHUNuz>~A%zv$Tb6iq&fl5-?yhMaZ1@>}ox4%u&`8I)&`C>r#ih-3qq zl-QLrbUP3_f>{@=cqlE?@xo@Vp<9C_Xe=m72pKm$cirh%hMlxHcVyOsBzH>Uz>jsO z6QdghhFUpGvPYs|3q1XlAY;W{MRa!Qbw;Mh5Q-cBvAb1lla>PQ%+wSX(Cz3hd^9GaO=W9_H^rz zw0(!;e_{h%-~Z(PF*+NX`a&g%^D&p-1l(O4>2TRbR(hMc}55>epB5}SngIxl0h9oTWBr# zVI*p(Y4^wemcoaCD5y@wXkMl6rKh^2fYsxoJN+6x9qiHFs^-8#9OGs(=%xZ4gsTdE Lgu9A3LM8tPWvC5+ diff --git a/evibes/locale/pt_BR/LC_MESSAGES/django.po b/evibes/locale/pt_BR/LC_MESSAGES/django.po deleted file mode 100644 index d7394a54..00000000 --- a/evibes/locale/pt_BR/LC_MESSAGES/django.po +++ /dev/null @@ -1,300 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: pt-br\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Nome da empresa" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Endereço da empresa" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Número de telefone da empresa" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Taxa de imposto na jurisdição de sua empresa. Deixe 0 se você não quiser " -"processar impostos." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "" -"Mostra se os impostos já estão incluídos nos preços de venda do produto" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Chave da API de taxa de câmbio" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!NÃO MUDE!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "Host SMTP" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "Porta SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Usar TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Usar SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "Nome de usuário SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "Senha SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Opção de correio eletrônico de" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Por quantos dias armazenamos mensagens de usuários anônimos" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Por quantos dias armazenamos mensagens de usuários autenticados" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Desativar a funcionalidade de compra" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "URL da API do OpenStreetMap Nominatim" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "Chave da API da OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Chave abstrata da API" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "Proxy HTTP" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Uma entidade para armazenar dados de propaganda" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Uma entidade para armazenar dados analíticos" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Salvar respostas das APIs dos fornecedores" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Banco de dados de backup" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Mídia de backup" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Opções legais" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Opções de e-mail" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Opções de recursos" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "Opções de SEO" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Opções do sistema" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Bem-vindo à documentação do eVibes.\n" -"\n" -"O eVibes é uma poderosa plataforma de comércio eletrônico que lhe permite lançar e gerenciar uma loja on-line de qualquer tipo com apenas alguns cliques.\n" -"\n" -"## Principais recursos\n" -"- Catálogo de produtos:** Gerencie detalhes, preços, estoque e disponibilidade de produtos em várias categorias.\n" -"- Gerenciamento de pedidos:** Processar pedidos, rastrear o atendimento e lidar com as solicitações dos clientes de forma eficiente.\n" -"- Autenticação e autorização:** Autenticação abrangente de usuários com tokens JWT e permissões baseadas em funções.\n" -"- Processamento de pagamentos: integre vários gateways de pagamento e gerencie as transações com segurança.\n" -"- **Gerenciamento de blogs e conteúdo:** Crie e gerencie postagens de blogs e conteúdo de marketing para sua loja.\n" -"- Operações B2B:** Pontos de extremidade dedicados para transações business-to-business e gerenciamento de atacado.\n" -"- Suporte a vários idiomas:** Atenda a clientes em todo o mundo com recursos completos de internacionalização (i18n).\n" -"- Integrações personalizadas:** Arquitetura de API extensível para integração com plataformas e serviços externos.\n" -"- Análises e relatórios:** Gerar relatórios detalhados sobre vendas, estoque e comportamento do cliente.\n" -"- Atualizações em tempo real:** Obtenha dados em tempo real sobre níveis de estoque, status de pedidos e alterações de preços.\n" -"\n" -"## APIs disponíveis\n" -"- API REST:** Interface RESTful completa (esta documentação)\n" -"- API GraphQL:** Disponível em `/graphql/` com interface GraphiQL para consultas interativas\n" -"\n" -"## Autenticação\n" -"- A autenticação é tratada por meio de tokens JWT. Inclua o token no cabeçalho `X-EVIBES-AUTH` de suas solicitações no formato `Bearer `.\n" -"- O tempo de vida do token de acesso é %(access_lifetime)d %(access_unit)s.\n" -"- A vida útil do token de atualização é de %(refresh_hours)d horas.\n" -"- Os tokens de atualização são automaticamente girados e invalidados após o uso para aumentar a segurança.\n" -"\n" -"## Internacionalização (i18n)\n" -"- Defina o cabeçalho `Accept-Language` para especificar o idioma de sua preferência (por exemplo, `Accept-Language: en-US`).\n" -"- Os idiomas disponíveis podem ser recuperados no ponto de extremidade `/app/languages/`.\n" -"- Todo o conteúdo voltado para o usuário é compatível com vários idiomas desde o início.\n" -"\n" -"## Formatos de resposta\n" -"A API oferece suporte a vários formatos de resposta:\n" -"- **JSON** (padrão, formatado em camelCase)\n" -"- **XML** (adicione `?format=xml` ou defina `Accept: application/xml`)\n" -"- **YAML** (adicione `?format=yaml` ou defina `Accept: application/x-yaml`)\n" -"\n" -"## Saúde e monitoramento\n" -"- Verificações de integridade: `/health/`\n" -"- Métricas do Prometheus: `/prometheus/metrics/`\n" -"\n" -"## Versão\n" -"Versão atual da API: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Meu site" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Saúde" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Suporte" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menu" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Painel de controle" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Configuração" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Tarefas periódicas" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Quadro de tarefas" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Links rápidos" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Usuários" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Grupos" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Pedidos" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Produtos" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Categorias" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Marcas" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Postagens em blogs" diff --git a/evibes/locale/ro_RO/LC_MESSAGES/django.mo b/evibes/locale/ro_RO/LC_MESSAGES/django.mo deleted file mode 100644 index 18d4614513cb82adad6680046ec921294a55369b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8761 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 diff --git a/evibes/locale/ro_RO/LC_MESSAGES/django.po b/evibes/locale/ro_RO/LC_MESSAGES/django.po deleted file mode 100644 index 26443725..00000000 --- a/evibes/locale/ro_RO/LC_MESSAGES/django.po +++ /dev/null @@ -1,300 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: ro-ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Denumirea societății" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Adresa societății" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Numărul de telefon al societății" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Cota de impozitare în jurisdicția companiei dumneavoastră. Lăsați 0 dacă nu " -"doriți să procesați taxele." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "" -"Arată dacă taxele sunt deja incluse în prețurile de vânzare ale produsului" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Cheie API pentru rata de schimb" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!NU SCHIMBAȚI!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "Gazdă SMTP" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "Portul SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Utilizați TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Utilizați SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "Nume utilizator SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "Parola SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Posta de la opțiune" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Câte zile păstrăm mesajele de la utilizatorii anonimi" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Câte zile stocăm mesajele de la utilizatorii autentificați" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Dezactivați funcționalitatea de cumpărare" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "OpenStreetMap Nominatim API URL" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "Cheie API OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Cheie API abstractă" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "Proxy HTTP" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "O entitate pentru stocarea datelor privind publicitatea" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "O entitate pentru stocarea datelor analitice" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Salvați răspunsurile de la API-urile furnizorilor" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Backup bază de date" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Suporturi de rezervă" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Opțiuni juridice" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Opțiuni de e-mail" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Caracteristici Opțiuni" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "Opțiuni SEO" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Opțiuni de sistem" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Bine ați venit la documentația eVibes.\n" -"\n" -"eVibes este o platformă puternică de comerț electronic care vă permite să lansați și să gestionați un magazin online de orice tip în doar câteva clicuri.\n" -"\n" -"## Caracteristici principale\n" -"- **Product Catalog:** Gestionați detaliile produselor, prețurile, inventarul și disponibilitatea în mai multe categorii.\n" -"- **Order Management:** Procesați comenzile, urmăriți îndeplinirea și gestionați eficient cererile clienților.\n" -"- **Autentificare și autorizare: ** Autentificare cuprinzătoare a utilizatorilor cu token-uri JWT și permisiuni bazate pe roluri.\n" -"- **Payment Processing:** Integrați mai multe gateway-uri de plată și gestionați tranzacțiile în siguranță.\n" -"- **Blog & Content Management:** Creați și gestionați postări pe blog și conținut de marketing pentru magazinul dvs.\n" -"- **B2B Operations:** Puncte finale dedicate pentru tranzacțiile business-to-business și gestionarea comerțului cu ridicata.\n" -"- **Suport multilingv:** Serviți clienții din întreaga lume cu capacități complete de internaționalizare (i18n).\n" -"- **Integrații personalizate:** Arhitectură API extensibilă pentru integrarea cu platforme și servicii externe.\n" -"- **Analytics & Reporting:** Generați rapoarte detaliate privind vânzările, stocurile și comportamentul clienților.\n" -"- **Actualizări în timp real:** Obțineți date în timp real privind nivelurile stocurilor, starea comenzilor și modificările prețurilor.\n" -"\n" -"## API-uri disponibile\n" -"- **REST API:** Interfață RESTful completă (această documentație)\n" -"- **GraphQL API:** Disponibil la `/graphql/` cu interfața GraphiQL pentru interogări interactive\n" -"\n" -"## Autentificare\n" -"- Autentificarea este gestionată prin jetoane JWT. Includeți tokenul în antetul `X-EVIBES-AUTH` al cererilor dvs. în formatul `Bearer `.\n" -"- Durata de viață a jetonului de acces este %(access_lifetime)d %(access_unit)s.\n" -"- Durata de viață a jetonului de reînnoire este de %(refresh_hours)d ore.\n" -"- Jetoanele de reîmprospătare sunt rotite automat și invalidate după utilizare pentru o securitate sporită.\n" -"\n" -"## Internaționalizare (i18n)\n" -"- Setați antetul `Accept-Language` pentru a specifica limba preferată (de exemplu, `Accept-Language: en-US`).\n" -"- Limbile disponibile pot fi preluate de la punctul final `/app/languages/`.\n" -"- Toate conținuturile destinate utilizatorilor acceptă din start mai multe limbi.\n" -"\n" -"## Formate de răspuns\n" -"API acceptă mai multe formate de răspuns:\n" -"- **JSON** (implicit, formatat camelCase)\n" -"- **XML** (adăugați `?format=xml` sau setați `Accept: application/xml`)\n" -"- **YAML** (adăugați `?format=yaml` sau setați `Accept: application/x-yaml`)\n" -"\n" -"## Sănătate și monitorizare\n" -"- Verificări de sănătate: `/health/`\n" -"- Metrici Prometheus: `/prometheus/metrics/`\n" -"\n" -"## Versiune\n" -"Versiunea curentă a API: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Site-ul meu" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Sănătate" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Sprijin" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Meniu" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Tablou de bord" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Configurare" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Sarcini periodice" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Tablou de sarcini" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Linkuri rapide" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Utilizatori" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Grupuri" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Ordine" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Produse" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Categorii" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Mărci" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogposturi" diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.mo b/evibes/locale/ru_RU/LC_MESSAGES/django.mo deleted file mode 100644 index bbe5c70159674e78ff360ff84ef7d3c1d1e9b666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11202 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 F`ah6vrIY{w diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.po b/evibes/locale/ru_RU/LC_MESSAGES/django.po deleted file mode 100644 index 18ce39e2..00000000 --- a/evibes/locale/ru_RU/LC_MESSAGES/django.po +++ /dev/null @@ -1,299 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: ru-ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Название компании" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Адрес компании" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Номер телефона компании" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Ставка налога в юрисдикции вашей компании. Оставьте 0, если вы не хотите " -"обрабатывать налоги." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "Показывает, включены ли налоги в отпускную цену продукта." - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Ключ API обменного курса" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!НЕ МЕНЯЙТЕ!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP-хост" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "Порт SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Используйте TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Используйте SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "Имя пользователя SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "Пароль SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Почта из опции" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Сколько дней мы храним сообщения от анонимных пользователей" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Сколько дней мы храним сообщения от аутентифицированных пользователей" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Отключить функцию покупки" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "URL-адрес API OpenStreetMap Nominatim" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "Ключ API OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Абстрактный ключ API" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP-прокси" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Устройство для хранения данных о рекламе" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Сущность для хранения аналитических данных" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Сохраняйте ответы от API поставщиков" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Резервная копия базы данных" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Резервные носители" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Юридические возможности" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Параметры электронной почты" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Характеристики Опции" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "Параметры SEO" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Параметры системы" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Добро пожаловать в документацию eVibes.\n" -"\n" -"eVibes - это мощная платформа для электронной коммерции, которая позволяет запустить и управлять интернет-магазином любого типа всего за несколько кликов.\n" -"\n" -"## Ключевые особенности.\n" -"- **Каталог товаров:** Управление информацией о товарах, ценами, запасами и наличием товаров в нескольких категориях.\n" -"- **Управление заказами:** Обработка заказов, отслеживание выполнения и эффективная обработка запросов клиентов.\n" -"- **Аутентификация и авторизация:** Комплексная аутентификация пользователей с помощью JWT-токенов и ролевых разрешений.\n" -"- **Обработка платежей:** Интеграция нескольких платежных шлюзов и безопасное управление транзакциями.\n" -"- **Управление блогом и контентом:** Создание и управление записями в блоге и маркетинговым контентом для вашего магазина.\n" -"- **B2B-операции:** Выделенные конечные точки для транзакций между предпринимателями и управления оптовыми продажами.\n" -"- **Мультиязыковая поддержка:** Обслуживайте клиентов по всему миру, используя возможности полной интернационализации (i18n).\n" -"- **Заказные интеграции:** Расширяемая архитектура API для интеграции с внешними платформами и сервисами.\n" -"- **Аналитика и отчетность:** Генерируйте подробные отчеты о продажах, запасах и поведении клиентов.\n" -"- **Обновления в режиме реального времени:** Получайте данные об уровне запасов, состоянии заказов и изменениях цен в режиме реального времени.\n" -"\n" -"## Доступные API\n" -"- **REST API:** Полный REST-интерфейс (данная документация)\n" -"- **GraphQL API:** Доступен по адресу `/graphql/` с интерфейсом GraphiQL для интерактивных запросов\n" -"\n" -"## Аутентификация\n" -"- Аутентификация осуществляется с помощью JWT-токенов. Включите токен в заголовок `X-EVIBES-AUTH` ваших запросов в формате `Bearer <ваш_токен>`.\n" -"- Срок действия токена доступа составляет %(access_lifetime)d %(access_unit)s.\n" -"- Время жизни маркера обновления составляет %(refresh_hours)d часов.\n" -"- Для повышения безопасности маркеры доступа автоматически поворачиваются и аннулируются после использования.\n" -"\n" -"## Интернационализация (i18n)\n" -"- В заголовке `Accept-Language` укажите предпочтительный язык (например, `Accept-Language: en-US`).\n" -"- Доступные языки можно получить из конечной точки `/app/languages/`.\n" -"- Весь контент, предназначенный для пользователей, изначально поддерживает несколько языков.\n" -"\n" -"## Форматы ответов\n" -"API поддерживает несколько форматов ответов:\n" -"- **JSON** (по умолчанию, с форматированием в camelCase)\n" -"- **XML** (добавьте `?format=xml` или установите `Accept: application/xml`)\n" -"- **YAML** (добавьте `?format=yaml` или установите `Accept: application/x-yaml`)\n" -"\n" -"## Здоровье и мониторинг\n" -"- Проверка здоровья: `/health/`\n" -"- Метрики Prometheus: `/prometheus/metrics/`\n" -"\n" -"## Версия\n" -"Текущая версия API: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Мой сайт" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Здоровье" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Поддержка" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Меню" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Приборная панель" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Конфигурация" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Периодические задания" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Доска задач" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Быстрые ссылки" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Пользователи" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Группы" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Заказы" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Продукция" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Категории" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Бренды" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Записи в блогах" diff --git a/evibes/locale/sv_SE/LC_MESSAGES/django.mo b/evibes/locale/sv_SE/LC_MESSAGES/django.mo deleted file mode 100644 index 619752564bf9d637cd22b437ae73c14ce55249d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8393 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 Rd_nh!d;VLfyZNn<`#(cCt6u;B diff --git a/evibes/locale/sv_SE/LC_MESSAGES/django.po b/evibes/locale/sv_SE/LC_MESSAGES/django.po deleted file mode 100644 index 45c1c621..00000000 --- a/evibes/locale/sv_SE/LC_MESSAGES/django.po +++ /dev/null @@ -1,299 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: sv-se\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Företagets namn" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Företagets adress" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Telefonnummer till företaget" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Skattesats i ditt företags jurisdiktion. Lämna 0 om du inte vill behandla " -"skatter." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "Visar om skatterna redan är inkluderade i produktens försäljningspris" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "API-nyckel för växelkurs" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!ÄNDRA INTE!!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP-värd" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTP-port" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Använd TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Använd SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "SMTP-användarnamn" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "SMTP-lösenord" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Mail från alternativ" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Hur många dagar vi lagrar meddelanden från anonyma användare" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "Hur många dagar vi lagrar meddelanden från autentiserade användare" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Inaktivera köpfunktionalitet" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "OpenStreetMap Nominatim API URL" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI API-nyckel" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Abstrakt API-nyckel" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP-proxy" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "En enhet för lagring av annonseringsdata" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "En enhet för lagring av analysdata" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Spara svar från leverantörers API:er" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Säkerhetskopiera databas" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Backup media" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Juridiska alternativ" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Alternativ för e-post" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Funktioner Alternativ" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "SEO-alternativ" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Systemalternativ" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"Välkommen till eVibes dokumentation.\n" -"\n" -"eVibes är en kraftfull e-handelsplattform som gör att du kan starta och hantera en onlinebutik av alla slag med bara några få klick.\n" -"\n" -"## Viktiga funktioner\n" -"- Produktkatalog:** Hantera produktinformation, priser, lager och tillgänglighet i flera kategorier.\n" -"- ** Orderhantering:** Behandla beställningar, spåra uppfyllande och hantera kundförfrågningar effektivt.\n" -"- Autentisering och auktorisering: ** Omfattande användarautentisering med JWT-tokens och rollbaserade behörigheter.\n" -"- **Betalningshantering:** Integrera flera betalningsgateways och hantera transaktioner på ett säkert sätt.\n" -"- **Blogg & Content Management:** Skapa och hantera blogginlägg och marknadsföringsinnehåll för din butik.\n" -"- **B2B Operations:** Dedikerade slutpunkter för transaktioner mellan företag och grossisthantering.\n" -"- Stöd för flera språk: ** Betjäna kunder över hela världen med fullständiga internationaliseringsfunktioner (i18n).\n" -"- **Kundanpassade integrationer:** Utökad API-arkitektur för integrering med externa plattformar och tjänster.\n" -"- **Analys och rapportering:** Generera detaljerade rapporter om försäljning, lager och kundbeteende.\n" -"- Uppdateringar i realtid: ** Få live-data om lagernivåer, orderstatus och prisändringar.\n" -"\n" -"## Tillgängliga API:er\n" -"- **REST API:** Fullständigt RESTful-gränssnitt (denna dokumentation)\n" -"- **GraphQL API:** Tillgängligt på `/graphql/` med GraphiQL-gränssnitt för interaktiva frågor\n" -"\n" -"## Autentisering\n" -"- Autentisering hanteras via JWT-tokens. Inkludera token i `X-EVIBES-AUTH`-huvudet för dina förfrågningar i formatet `Bearer `.\n" -"- Åtkomsttokenens livslängd är %(access_lifetime)d %(access_unit)s.\n" -"- Uppdateringstokenens livslängd är %(refresh_hours)d timmar.\n" -"- Uppdateringstokens roteras automatiskt och ogiltigförklaras efter användning för ökad säkerhet.\n" -"\n" -"## Internationalisering (i18n)\n" -"- Ställ in rubriken `Accept-Language` för att ange önskat språk (t.ex. `Accept-Language: en-US`).\n" -"- Tillgängliga språk kan hämtas från slutpunkten `/app/languages/`.\n" -"- Allt innehåll som vänder sig till användare stöder flera språk direkt.\n" -"\n" -"## Svarsformat\n" -"API:et stöder flera olika svarsformat:\n" -"- **JSON** (standard, camelCase-formaterad)\n" -"- **XML** (lägg till `?format=xml` eller ställ in `Accept: application/xml`)\n" -"- **YAML** (lägg till `?format=yaml` eller ställ in `Accept: application/x-yaml`)\n" -"\n" -"## Hälsa och övervakning\n" -"- Hälsokontroller: `/hälsa/`\n" -"- Prometheus-mätvärden: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Aktuell API-version: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Min webbplats" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Hälsa" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Stöd" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Meny" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Instrumentpanel" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Konfig" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Periodiska uppgifter" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Uppgiftstavla" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Snabblänkar" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Användare" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Grupper" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Beställningar" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Produkter" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Kategorier" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Brands" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blogginlägg" diff --git a/evibes/locale/th_TH/LC_MESSAGES/django.mo b/evibes/locale/th_TH/LC_MESSAGES/django.mo deleted file mode 100644 index 0f6f1f08434f778c4f09f772ede4f522b8d0992b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12942 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 diff --git a/evibes/locale/th_TH/LC_MESSAGES/django.po b/evibes/locale/th_TH/LC_MESSAGES/django.po deleted file mode 100644 index 50f2599a..00000000 --- a/evibes/locale/th_TH/LC_MESSAGES/django.po +++ /dev/null @@ -1,263 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: th-th\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "ชื่อบริษัท" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "ที่อยู่ของบริษัท" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "หมายเลขโทรศัพท์ของบริษัท" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"อัตราภาษีในเขตอำนาจศาลของบริษัทของคุณ. ปล่อยไว้เป็น 0 " -"หากคุณไม่ต้องการดำเนินการภาษี." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "แสดงว่าภาษีรวมอยู่ในราคาขายของสินค้าแล้วหรือไม่" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "คีย์ API อัตราแลกเปลี่ยน" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!ห้ามเปลี่ยนแปลง!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "โฮสต์ SMTP" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "พอร์ต SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "ใช้ TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "ใช้ SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "ชื่อผู้ใช้ SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "รหัสผ่าน SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "จดหมายจากตัวเลือก" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "เราเก็บข้อความจากผู้ใช้ที่ไม่ระบุตัวตนไว้กี่วัน" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "เราเก็บข้อความจากผู้ใช้ที่ผ่านการยืนยันตัวตนไว้กี่วัน" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "ปิดการใช้งานฟังก์ชันการซื้อ" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "URL ของ API OpenStreetMap Nominatim" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "คีย์ API ของ OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "คีย์ API แบบนามธรรม" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP พร็อกซี" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "หน่วยงานสำหรับเก็บข้อมูลโฆษณา" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "หน่วยงานสำหรับเก็บข้อมูลการวิเคราะห์" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "บันทึกการตอบกลับจาก API ของผู้ขาย" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "ฐานข้อมูลสำรอง" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "สื่อสำรองข้อมูล" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "ทางเลือกทางกฎหมาย" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "ตัวเลือกอีเมล" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "คุณสมบัติ ตัวเลือก" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "ตัวเลือก SEO" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "ตัวเลือกระบบ" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\nยินดีต้อนรับสู่เอกสารคู่มือของ eVibes eVibes เป็นแพลตฟอร์มอีคอมเมิร์ซที่ทรงพลังซึ่งช่วยให้คุณสามารถเปิดตัวและจัดการร้านค้าออนไลน์ได้ทุกประเภทเพียงแค่ไม่กี่คลิก ## คุณสมบัติหลัก - **แคตตาล็อกสินค้า:** จัดการรายละเอียดสินค้า ราคาสินค้า สินค้าคงคลัง และความพร้อมจำหน่ายในหลายหมวดหมู่ - **การจัดการคำสั่งซื้อ:** ดำเนินการคำสั่งซื้อ ติดตามการจัดส่ง และจัดการคำขอของลูกค้าอย่างมีประสิทธิภาพ\n" -"- **การตรวจสอบสิทธิ์และการอนุญาต:** การตรวจสอบสิทธิ์ผู้ใช้แบบครอบคลุมด้วยโทเค็น JWT และสิทธิ์ตามบทบาท - **การประมวลผลการชำระเงิน:** ผสานรวมเกตเวย์การชำระเงินหลายช่องทางและจัดการธุรกรรมอย่างปลอดภัย - **การจัดการบล็อกและเนื้อหา:** สร้างและจัดการโพสต์บล็อกและเนื้อหาการตลาดสำหรับร้านค้าของคุณ - **การดำเนินงาน B2B:** จุดสิ้นสุดเฉพาะสำหรับการทำธุรกรรมระหว่างธุรกิจและการจัดการขายส่ง\n" -"- **รองรับหลายภาษา:** ให้บริการลูกค้าทั่วโลกด้วยความสามารถในการรองรับภาษาสากลอย่างเต็มรูปแบบ (i18n) - **การผสานรวมแบบกำหนดเอง:** สถาปัตยกรรม API ที่สามารถขยายได้สำหรับการผสานรวมกับแพลตฟอร์มและบริการภายนอก - **การวิเคราะห์และรายงาน:** สร้างรายงานรายละเอียดเกี่ยวกับยอดขาย, สินค้าคงคลัง, และพฤติกรรมของลูกค้า - **การอัปเดตแบบเรียลไทม์:** รับข้อมูลสดเกี่ยวกับระดับสินค้าคงคลัง, สถานะการสั่งซื้อ, และการเปลี่ยนแปลงราคา\n" -"\n" -"## API ที่มีให้บริการ - **REST API:** อินเทอร์เฟซ RESTful แบบเต็มรูปแบบ (เอกสารนี้) - **GraphQL API:** สามารถใช้งานได้ที่ `/graphql/` พร้อมอินเทอร์เฟซ GraphiQL สำหรับการสอบถามแบบโต้ตอบ ## การยืนยันตัวตน - การยืนยันตัวตนดำเนินการผ่านโทเค็น JWT โปรดใส่โทเค็นในหัวข้อ `X-EVIBES-AUTH` ของคำขอของคุณในรูปแบบ `Bearer `\n" -"- อายุการใช้งานของโทเค็นการเข้าถึงคือ %(access_lifetime)d %(access_unit)s. - อายุการใช้งานของโทเค็นการรีเฟรชคือ %(refresh_hours)d ชั่วโมง. - โทเค็นการรีเฟรชจะถูกหมุนเวียนและยกเลิกการใช้งานโดยอัตโนมัติหลังการใช้งานเพื่อเพิ่มความปลอดภัย. ## การแปลภาษา (i18n) - ตั้งค่าหัวข้อ `Accept-Language` เพื่อระบุภาษาที่คุณต้องการ (เช่น `Accept-Language: en-US`).\n" -"- ภาษาที่มีให้บริการสามารถดึงข้อมูลได้จากจุดสิ้นสุด `/app/languages/` - เนื้อหาที่แสดงต่อผู้ใช้ทั้งหมดรองรับหลายภาษาโดยอัตโนมัติ ## รูปแบบการตอบกลับ API รองรับรูปแบบการตอบกลับหลายรูปแบบ: - **JSON** (ค่าเริ่มต้น, รูปแบบ camelCase) - **XML** (เพิ่ม `?format=xml` หรือตั้งค่า `Accept: application/xml`)\n" -"- **YAML** (เพิ่ม `?format=yaml` หรือตั้งค่า `Accept: application/x-yaml`) ## สุขภาพและการตรวจสอบ - การตรวจสอบสุขภาพ: `/health/` - เมตริก Prometheus: `/prometheus/metrics/` ## เวอร์ชัน เวอร์ชัน API ปัจจุบัน: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "เว็บไซต์ของฉัน" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "สุขภาพ" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "การสนับสนุน" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "เมนู" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "แดชบอร์ด" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "การกำหนดค่า" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "งานประจำ" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "กระดานงาน" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "ลิงก์ด่วน" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "ผู้ใช้" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "กลุ่ม" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "คำสั่ง" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "ผลิตภัณฑ์" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "หมวดหมู่" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "แบรนด์" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "บทความบล็อก" diff --git a/evibes/locale/tr_TR/LC_MESSAGES/django.mo b/evibes/locale/tr_TR/LC_MESSAGES/django.mo deleted file mode 100644 index 71a602674cf65e4195c1f5ef0bb34be5a2e21ab8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8745 zcmb7}OKfD>S;y~$@G^lwLI??uoMw_~x5s7oM1UI4bTWQayPbB~j;q`mhsF3*-Q%h= zbsv@cu)B<45eX3%tU^Wzq46fD#R4(CX(7cDLgkjo1_{9;8;CT51sfzJB#rl1|{u25z=(nJ9-akNP{d-VZ|L@iFe?fnp=kGypL2q)nthZ2EcM65|;A_wy zhyD>%cpg#efW3!)vezc;Wf{I)(L*=~RsGirW z=LYl|D9QeE|mE{)pH6 zpZtoKgGxX!o|AvYjA4X|nhmS*Lzh8rX9{MtL588*yeiu;T@9&`^&v&76?!Q6h-2a5i zIe}si$j6}a{uWg1v;h@6ya5$`6;Q#&??GkXKdzqt94dDB7W5aP--gP(_n^NC{U7K( z=rTqTJO2(;_WvqW*1ZiqgnqMn{@;pz2&RP3PeNaS3YO;iKK&8iu2+MiC(((xknk>g zTIRdRS9tm)U$%EXC%k@wuY80r`H0`3=HMlHs6H=4Z}JshFtOu(0V=u@Jt)5N5uf~w z`{nEbxeV)oF5(ovM2 z=4zOhvTdZxq|;M63015U-8KAFX%gAQsJuusqtauBhN^FwViWaNnX`vFHm9l+*-k%) zffrv?_sme;F}f%-lh4)E!opsbhGnNv>$=cU+Fe;#Pz`^;pn4OULfa@`RD;ZRY|>q1 z`xC@Uv*Ds+NT2Xtw{2vLq0*f!&2tr(QDFy>Q5{{FZkkyG19IMO7MiR&LX;y1!b8Wf zD3x~{RAjo-S7_(hMv+YN=k$YWgb3WZ)=}jQ@cp!)RYVV8zvMj zBCtuqL248Bla=i<2YPv4E7IEdx7cmUy_|a5Lt(kbXkI>H*Pql7eAFVHbV~tqvm6Z4 z%z>e4GAuGSa;{F(EDBF;Xq2-EsE7byVY0+=siVrOYTmwbE4cyS1|EwO$gMlTOiUrV z718PsP-Je~aJRa*rF7Qm*}`T=fr~F3VKW!g1j7C z?HduQLc*p=M6pJBe?p^~dkyRpB{~B5PdV0D394;+`oyN0KVskLsMfN?n}b2fj!v3Q zQ>aL=%!rmPCwr;LoEY(6=U$i_@6Y8lu~6mHs)KWNMFt5HtKOl#Vtkm`uQywwCQ;lS zF@X$7{Bou^)`YM5qDN@E67+63m*33vp!db?@$%{JM7g77R6OW?C0ai6N_LYiv!@#i z-rSQo1`^`+5>Gs{Nm=!|Kv$)q>khMzkUgROR4aPvn*_82$BbTIar zdF@`kIUc+bPRGi`7B?KG_RTTDx>xZyp6fTr{JS@MoSC!SQ91O=B5(?(iEk;4;?7Yt zR9OlR0HJ^YsNhBdC7zD~IRR0;QWS3z^w;5qi$+9v50S0+_drf>0!C5mk;pzMYTK2c zPjpE}%Lk@okB45T#NuO-3e==1*F?FVsmgr{RJAnDb=qL7;!z{SgDnc$Znu0Ch|Q2)RUYHrRA=YMyJ zMdZnsR3injq}Zg35Y=d>XDB>YP&_WgwB;k-k?doG#!56QHtM(u6dTp(ay80iiADFR z2#DBo>m~3Y?};W){MZWKQvJM<&jr`6UEA1IJG(8les^_ev(9s{+Rmkz@XM%ug4HlY z>%?4dHEOQ`Ra3Be9gsR{f`&=TpfOZA={VQ{ z{7+kp5+zyPa!?SP%44(0j42v=pmx&ON@)Se}9RPJ6 zZe-ZQhpM1C%nK7wm=$?FoLc&UM~G_>GMl3gS0RscTcv;{wQYpso5GNEAYqzZFVv~V z4G7&Z;8U8gxfC1_nVQXQM_b!Xp`ZgDzC|@v+X`!y53i`b)%AO;n{{=+zTe#1-I? z^P<+0qLa=k%~sT%gY9j#v)ZVu*XoVct?k!WH#R6#nxA8;uQY2dqvI8|O@KHMPF~yI zem$~FY1W<2S)q`v71>;4t5Kiw{>swLxvKcCwT1(jDkun-Y1(Y^s?<*zA@}w{>rU;~ zbe`}=Vyo4Y4$z||P`BE)nA?lWj2i9^;hgA~4BTUW`?If7TFRT-^NG54TfK7Q)wy8Y zHnvUFH4zvFwY~Jox#Ec}?HOsucb1Ekk)fdyYul`^M-NqT`KTZ1SPvsj5tFH6bdg1) z3pILZPBI(Y(L;;ZU!LnTJ-mFRSV9cAd~~LXuxdDZoS1^hXU}jza-Qz1LS7F^u-(zc z=%H-IQM9m9RFH5dg>e~{)T$D`TZY`FMsJ@9Qv0w^1{nQWHo8dEJ=bwwo|jTnu337& zL>=ohcU)FWv(7(myZ(UiM0H9EA^Ze{q9WnHPn9a{ z`pz_q?B%(wgtBzw6e)I~Gm9b*ouueP7#WX>rWJ1^GqlMf0zXbD0-1yo`gWj*<%t{< zk1n2^yEEyZ4IM8AlJl7wS*M;S=caEXWWjoL^{_9e-;?)!wUJ()XQdcPHaj#0Q;7>U zi;Zw2{U?UESz*w(u*597P?%`zguRqKvk5O0%h1~(Cw((I7QQ3D{Yl~Er2O)caImm2 zdOO5C>hfI?(;s-n4x`8JJqQ78fJNXYd6KpWX(|Oc9mS3}P(e_8T5Jy_uk(ck*Ty2m z<-4FTLjzZ|-|%P@5GsKurJVG!W9^SMFaWWcQyP=lMNFGUC59-o(wXI{L+NWPDP;@M ztbYXGqCA~xl;X`TqKK9YvJptnHK+q5)rQ#L^EG-5q*aNRC21eiYuB8O{vho~rP?5) zZE!VVU`!5c=~$IfNtnv~QIUpM2i$SnIy7{nMm&TQuw@ABhZG?GO|P%1Gs=vqlZ5(&m?#>B5mesO{l1fL#>E+?CzLH| zx+YeYQ#Vb9z5D9R9Olr!iIzHq7Kt*(iCeE?0J-tR4qd<`E{jxd3Hnc%qjOZxU~2`?2#%Tx*z<4#hvI`#Nu&H_f)lV(@W?jKznei!(LfmOR=Y zUBG+cwEf)nxb8v#{7C%BNlZis+}kS)hiS_^ZjGO9qpuTCWsgH}Em(QpCQrB0 zxu(;4{xTnmNeYPlYP%7 zth6>~3ZFnr_(_#U558~kK(ZD$$hM~pEQ4lruR=^y$rUt=Fm28@* z`O)Jn5#J#FJ-zNq7hd@S2a1zC+htFJBr%pqMm87O+$Ei}%DpO6gEJzY3$&6Nsa9fP z8|M>1k<*G&R*xQ1*5DG3#`;W>?6h`pVuuoYWsxsJ4kh9g)EI&*M(vz*NLQ9o)X0=E z^ej=K+TvY=olZOr{TpSf)$h`7?BU+vB-P!m=V_kDZxF-)cwx!Sc)_VgY5 z53#B5+n=|uM6@QU7rVHKe);a1xCywLjP|)UrtlE$y?;YLdK`@&Vz%)t8inU~^-YKS zcy7}n9-xXraz8k_c($=u8}-X~ww}Dx+S+f_54U!tw{NCHAA!|sqI-p;lig#NsM~OZ^gZ>nh1=>=M90VO0^G?p~T}m(^Uv|NgTNO^9R3)~*`kcsJq# z3@xCJ8FA&#p*|DD2!jnxY0l4p>eqGss4BSU+J2;WSs~aQJqCLj7jP|_|1>XYA1M~Z zZzvPN78kl+k`w9x>fa}XX4NKGXvw8Py(aeynp-%Wr>ZG}jnU&12`nT)r)=u^N@p|0 z`RtNlGb?Fsvf0~$F&a=5*FEuUnaNCXPH9mRQctemaspG6QX&x@rIPBSfqnRS<%7yYO;@k1&E zrvZ2AaK(=9z5(MAs-iBpL&R&gaigS1xhaMrxt(ZF_VE>}oaSE4=ol}NQ9+m2xS*`6 zX(a!S?dhZA*r3BuYX9Iq5S6kBXLF8=cBkdCE3G8TbEDLw8fHc0yC(jj7y29}WxW91 zW`Qe~`)HEqc-D+oya7F`J#L@ygo!R)bwSZgU5q~wynT&~H+Ja-T#dOTmxnw#k8wFr hcDEofmj!3)=G1AH0&XxS@Jj;jF=n1-G89S({trX+qxb*- diff --git a/evibes/locale/tr_TR/LC_MESSAGES/django.po b/evibes/locale/tr_TR/LC_MESSAGES/django.po deleted file mode 100644 index fe5a21f6..00000000 --- a/evibes/locale/tr_TR/LC_MESSAGES/django.po +++ /dev/null @@ -1,300 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: tr-tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Şirketin adı" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Şirketin adresi" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Şirketin telefon numarası" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Şirketinizin yetki alanındaki vergi oranı. Vergi işlemek istemiyorsanız 0 " -"bırakın." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "Vergilerin ürünün satış fiyatına dahil edilip edilmediğini gösterir" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Döviz kuru API anahtarı" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!! DEĞIŞTIRMEYIN!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP ana bilgisayarı" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTP bağlantı noktası" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "TLS kullanın" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "SSL kullanın" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "SMTP kullanıcı adı" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "SMTP şifresi" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Posta seçeneği" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "Anonim kullanıcılardan gelen mesajları kaç gün saklıyoruz" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "" -"Kimliği doğrulanmış kullanıcılardan gelen mesajları kaç gün saklıyoruz" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Satın alma işlevini devre dışı bırakın" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "OpenStreetMap Nominatim API URL'si" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI API Anahtarı" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Soyut API Anahtarı" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP Proxy" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Reklam verilerini depolamak için bir varlık" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Analitik verileri depolamak için bir varlık" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Satıcıların API'lerinden gelen yanıtları kaydedin" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Yedek veritabanı" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Yedekleme ortamı" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Yasal Seçenekler" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "E-posta Seçenekleri" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Özellikler Seçenekler" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "SEO Seçenekleri" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Sistem Seçenekleri" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"eVibes belgelerine hoş geldiniz.\n" -"\n" -"eVibes, sadece birkaç tıklamayla her türlü çevrimiçi mağazayı açmanıza ve yönetmenize olanak tanıyan güçlü bir e-ticaret platformudur.\n" -"\n" -"## Temel Özellikler\n" -"- Ürün Kataloğu:** Birden fazla kategoride ürün ayrıntılarını, fiyatlandırmayı, envanteri ve kullanılabilirliği yönetin.\n" -"- Sipariş Yönetimi:** Siparişleri işleyin, gönderimi takip edin ve müşteri taleplerini verimli bir şekilde ele alın.\n" -"- Kimlik Doğrulama ve Yetkilendirme:** JWT belirteçleri ve rol tabanlı izinler ile kapsamlı kullanıcı kimlik doğrulaması.\n" -"- **Ödeme İşleme:** Birden fazla ödeme ağ geçidini entegre edin ve işlemleri güvenli bir şekilde yönetin.\n" -"- **Blog ve İçerik Yönetimi:** Mağazanız için blog gönderileri ve pazarlama içeriği oluşturun ve yönetin.\n" -"- **B2B İşlemleri:** İşletmeler arası işlemler ve toptan satış yönetimi için özel uç noktalar.\n" -"- Çoklu Dil Desteği:** Tam uluslararasılaştırma (i18n) yetenekleri ile dünya çapındaki müşterilere hizmet verin.\n" -"- Özel Entegrasyonlar:** Harici platformlar ve hizmetlerle entegrasyon için genişletilebilir API mimarisi.\n" -"- Analitik ve Raporlama:** Satış, envanter ve müşteri davranışları hakkında ayrıntılı raporlar oluşturun.\n" -"- Gerçek Zamanlı Güncellemeler:** Envanter seviyeleri, sipariş durumları ve fiyat değişiklikleri hakkında canlı veriler alın.\n" -"\n" -"## Mevcut API'ler\n" -"- **REST API:** Tam RESTful arayüz (bu dokümantasyon)\n" -"- **GraphQL API:** Etkileşimli sorgular için GraphiQL arayüzü ile `/graphql/` adresinde mevcuttur\n" -"\n" -"## Kimlik Doğrulama\n" -"- Kimlik doğrulama JWT belirteçleri aracılığıyla gerçekleştirilir. Belirteci, isteklerinizin `X-EVIBES-AUTH` başlığına `Bearer ` biçiminde ekleyin.\n" -"- Erişim belirteci ömrü %(access_lifetime)d %(access_unit)s'dir.\n" -"- Yenileme belirteci ömrü %(refresh_hours)d saattir.\n" -"- Yenileme belirteçleri, gelişmiş güvenlik için kullanımdan sonra otomatik olarak döndürülür ve geçersiz kılınır.\n" -"\n" -"## Uluslararasılaştırma (i18n)\n" -"- Tercih ettiğiniz dili belirtmek için `Accept-Language` başlığını ayarlayın (örneğin, `Accept-Language: en-US`).\n" -"- Mevcut diller `/app/languages/` uç noktasından alınabilir.\n" -"- Kullanıcıya yönelik tüm içerikler kutudan çıkar çıkmaz birden fazla dili destekler.\n" -"\n" -"## Yanıt Biçimleri\n" -"API birden fazla yanıt biçimini destekler:\n" -"- **JSON** (varsayılan, camelCase biçimlendirilmiş)\n" -"- **XML** (`?format=xml` ekleyin veya `Accept: application/xml` olarak ayarlayın)\n" -"- **YAML** (`?format=yaml` ekleyin veya `Accept: application/x-yaml` olarak ayarlayın)\n" -"\n" -"## Sağlık ve İzleme\n" -"- Sağlık kontrolleri: `/health/`\n" -"- Prometheus ölçümleri: `/prometheus/metrics/`\n" -"\n" -"## Sürüm\n" -"Geçerli API sürümü: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Benim sitem" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Sağlık" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Destek" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Menü" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Gösterge Tablosu" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Konfigürasyon" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Periyodik Görevler" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Görev Panosu" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Hızlı Bağlantılar" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Kullanıcılar" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Gruplar" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Siparişler" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Ürünler" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Kategoriler" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Markalar" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Blog Yazıları" diff --git a/evibes/locale/vi_VN/LC_MESSAGES/django.mo b/evibes/locale/vi_VN/LC_MESSAGES/django.mo deleted file mode 100644 index 48dce4cebd6bf68d0763dcfb628f068c3a5e775a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9304 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 Z?kBY$d1\n" -"Language-Team: LANGUAGE \n" -"Language: vi-vn\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "Tên công ty" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "Địa chỉ của công ty" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "Số điện thoại của công ty" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "" -"Tỷ lệ thuế tại khu vực pháp lý của công ty bạn. Để trống ô này nếu bạn không" -" muốn xử lý thuế." - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "Hiển thị xem thuế đã được tính vào giá bán của sản phẩm hay chưa." - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "Khóa API tỷ giá hối đoái" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "!!!KHÔNG THAY ĐỔI!!!" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "Máy chủ SMTP" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "Cổng SMTP" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "Sử dụng TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "Sử dụng SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "Tên người dùng SMTP" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "Mật khẩu SMTP" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "Thư từ tùy chọn" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "" -"Chúng tôi lưu trữ tin nhắn từ người dùng ẩn danh trong bao nhiêu ngày?" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "" -"Chúng tôi lưu trữ tin nhắn từ người dùng đã xác thực trong bao nhiêu ngày?" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "Vô hiệu hóa chức năng mua hàng" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "Địa chỉ URL API Nominatim của OpenStreetMap" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "Khóa API OpenAI" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "Tóm tắt Khóa API" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "Proxy HTTP" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "Một thực thể dùng để lưu trữ dữ liệu quảng cáo" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "Một thực thể dùng để lưu trữ dữ liệu phân tích." - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "Lưu trữ phản hồi từ các API của nhà cung cấp" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "Sao lưu cơ sở dữ liệu" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "Phương tiện sao lưu" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "Các lựa chọn pháp lý" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "Tùy chọn email" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "Tính năng và tùy chọn" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "Các tùy chọn SEO" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "Tùy chọn hệ thống" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\nChào mừng đến với tài liệu hướng dẫn của eVibes. eVibes là một nền tảng thương mại điện tử mạnh mẽ cho phép bạn khởi chạy và quản lý cửa hàng trực tuyến bất kỳ loại nào chỉ với vài cú nhấp chuột. ## Tính năng chính - **Danh mục sản phẩm:** Quản lý chi tiết sản phẩm, giá cả, tồn kho và tình trạng sẵn có trên nhiều danh mục. - **Quản lý đơn hàng:** Xử lý đơn hàng, theo dõi quá trình giao hàng và xử lý yêu cầu của khách hàng một cách hiệu quả.\n" -"- **Xác thực & Quyền truy cập:** Hệ thống xác thực người dùng toàn diện với token JWT và quyền truy cập dựa trên vai trò. - **Xử lý thanh toán:** Tích hợp nhiều cổng thanh toán và quản lý giao dịch an toàn. - **Quản lý blog và nội dung:** Tạo và quản lý bài viết blog và nội dung tiếp thị cho cửa hàng của bạn. - **Hoạt động B2B:** Các điểm cuối chuyên dụng cho giao dịch B2B và quản lý bán buôn.\n" -"- **Hỗ trợ đa ngôn ngữ:** Phục vụ khách hàng toàn cầu với khả năng quốc tế hóa (i18n) đầy đủ. - **Tích hợp tùy chỉnh:** Kiến trúc API mở rộng để tích hợp với các nền tảng và dịch vụ bên ngoài. - **Phân tích & Báo cáo:** Tạo báo cáo chi tiết về doanh số, hàng tồn kho và hành vi khách hàng. - **Cập nhật thời gian thực:** Nhận dữ liệu trực tiếp về mức tồn kho, trạng thái đơn hàng và thay đổi giá.\n" -"\n" -"## Các API có sẵn - **REST API:** Giao diện RESTful đầy đủ (tài liệu này) - **GraphQL API:** Có sẵn tại `/graphql/` với giao diện GraphiQL cho các truy vấn tương tác ## Xác thực - Xác thực được xử lý thông qua token JWT. Bao gồm token trong tiêu đề `X-EVIBES-AUTH` của yêu cầu của bạn theo định dạng `Bearer `.\n" -"- Thời hạn sử dụng của token truy cập là %(access_lifetime)d %(access_unit)s. - Thời hạn sử dụng của token làm mới là %(refresh_hours)d giờ. - Token làm mới được tự động xoay vòng và vô hiệu hóa sau khi sử dụng để tăng cường bảo mật. ## Quốc tế hóa (i18n) - Đặt tiêu đề `Accept-Language` để chỉ định ngôn ngữ ưa thích của bạn (ví dụ: `Accept-Language: en-US`).\n" -"- Các ngôn ngữ có sẵn có thể được lấy từ điểm cuối `/app/languages/`. - Tất cả nội dung hiển thị cho người dùng đều hỗ trợ nhiều ngôn ngữ ngay từ đầu. ## Định dạng phản hồi API hỗ trợ nhiều định dạng phản hồi: - **JSON** (mặc định, định dạng camelCase) - **XML** (thêm `?format=xml` hoặc đặt `Accept: application/xml`)\n" -"- **YAML** (thêm `?format=yaml` hoặc đặt `Accept: application/x-yaml`) ## Sức khỏe & Giám sát - Kiểm tra sức khỏe: `/health/` - Chỉ số Prometheus: `/prometheus/metrics/` ## Phiên bản Phiên bản API hiện tại: %(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "Trang web của tôi" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "Sức khỏe" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "Hỗ trợ" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "Thực đơn" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "Bảng điều khiển" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "Cấu hình" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "Các tác vụ định kỳ" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "Bảng nhiệm vụ" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "Liên kết nhanh" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "Người dùng" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "Nhóm" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "Đơn hàng" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "Sản phẩm" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "Các danh mục" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "Thương hiệu" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "Bài viết trên blog" diff --git a/evibes/locale/zh_Hans/LC_MESSAGES/django.mo b/evibes/locale/zh_Hans/LC_MESSAGES/django.mo deleted file mode 100644 index 8848c8224acefbf229dc79c7564c0e2ad5b854c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7842 zcma)9S#TW3dF~`iVsB2{iE}A&GqNQD;sT^|6a$I201zZ0D1Zd71!zLVu>g@gCRKSzfCqs;1AZO&_1|Rdw}7?4UkAPe#B$aF{1spv7yx$r&*%L2L%=`4 z_#_ab*aP720@Fa+?_Ytm{wF|MpZA~t8~EpV{u%Hn@Gv%~^#+jEbpxR~8wCC;a1=;( zOaZZk-2r|LxDF)wKk~=_1NcXH{weSazyO5(8t^MVeho-=y$YoL{=$E*_Mhv42QdCO zK=S9`18M(%1k%3$1f=yp0=5Ew;=e!oB{lC2;4fqR6tEUCX#n1WBA36c)_ohw{R!UJ z0?E%2AnBX%@gfkavj;$WzwP5c1If;R_wmO*3Lxq8UqEcZ{>R5Jf)v=Ay$B>ZWk6d0 z8t`|3RsQqaz#yLg4)|xl5g^U~2O!1qUx2jk6My_aef(b_$$#OGRUEzwqGWW!T4QA8!K5&ne(x;5Lx-`zes*zX<1%{Fi`a_hI0hzzQJo ztIx*?AkCizA`FsC#P|IllJSZ^_ zdSN^EGCla8SAk>)*#r|Lhf9HEJE+4rzVxA-{D%Ceeu&$|&%Gat+b`lv{veLLgfDTE z{9O2y;15E>%J8MU{!@G@PV^yOvcTJVG-Sne?poZ9=v;rxXxAMcwnB-RZn~OlSY}xu z;13%P*Ld9O*6of&lu~98yh9X=u!#t*$ zTBnY`+%ltvsdLA*Y@J&j7)tUp2BsJ$|9--O4Bnx4^H9_XopGSROE2;7=t+J;*W84y zJAoiCEj?{p;Y7&g)takCt4k73`yJYiBIM^Z4X!^fhlcWX(2bz9JyrBdWXhkkwRq&ab%o`-(oyBw%HiU8 zR(3)Z|tZZ#L)y5;bMl}lsR_05w?D*5EWRoRTx@KeA>onsXkp1la1`yAkZ^ zV7Wxv^r=PQDL9S#WR1!+W7!gB{mj)F*8NsiY|_%DPPvKpbn zD~i;9b_QbiW{{EG+D5j=-C&)c=S5%QM04VL$mmEapQ09b=(de*iY4KoUe;N5=ot|e z&?wm2+*Tr8TO?{>nS=Z{kuOLt7bNL|#17k{BNf_|Yw>t_aV8j7sA*CbNKNNJ5Mi2g7=YhAMdo7RB^vHBKE02qK6usl@tTeH~5I!eQR_ZT0Th*;upSH4J2%tueiKhLmHrT zLjiT9k(yok!Z?XbaYuA&?K30)DjJa092K2^(G92^4hHKQk^Lonzm84b3IJId;(G z2afS0C9efoz`K7lw=c#4qfdIy74Mba<>kzJPiFnD7`~o6zb&>l z#lr3E%=_6(ABzVQVya&Z&x?&mVtnP(tr0PPH$T^tJ+~nS(qiC7X8i&Ny>m-q<)Ii~ z&ZHN`;H*e*iVsGzsrl?geW__4sZhk0rK&2LakMfsNYID^2 z%;s$|*_)kBiS4ORw`OoqDM?~s20D_Y!F!OTrsbAzdFT5+>FE`znM`_({%lT)2bZxw z)PdPv&u!W#$aATiVsuK0Qewrz`%qAgV_|OXdT#x$H*`BUKLVMe|6{T7*qa;jrUuna zk-F&(uH}~3yocv}nVa`A>Fxa8k=$}GcJ#&uy{qSyaNp^45A<#fzK@8iGJS0GkWmQO?JWV!%m)@Q&JKV+AdU}|Qomj;(N)Srx0g&Z}sA;vGN?J1P&lZaII-ZE(AE4na~ zTYivR>VaY2NUv{j&rEJ-py(+vyPdz%Cq||}-5R7D+^1VZibF7kte-fq0_KfRWS-1= zbE8mBNzV=3CAw@3DHkf~po=$jM?9P&A8cMCg_bUe&2evRQH+1&U3=_ZdmpaFI2pD+ zCKjgi=a*DokV#U$66o77*zaANpjX3-;^J_@FV_(?uu77?M_fuhMOnqL`4N}^H9+oc zx?e5#Wu~rqA3pYGSG{Q@BjrYJY)y<$D}jpo-pVSpB0?+14?p&h6^Oaa5HWrkE+ZS2 zsHqii6gr?9P$tThd9DMHL4~WF@2}K|H?@knYFxPqq44JJs}h5FU{Psl;THF-Q;Uul zb4zZ*)qwN)&J?v-yG88uzX*=9X_twN(OQv%F-8ysW9DQ)~8R6LwQcOv>-S zvx$Y(%=!Z{(kCX6+Y8yD5vp%Dwy-0D^8Cx1&#Kf;{=<}71Iem#cyrfj+0Sufd$+)v zHN^I_r0l=8iIs8i;n|fiQ8`geAPHxP@WV^F?UXkvvwz_siW=;qa((j}6?|DR{8|Yn zfC|rMmn@=BvfHV`{b0}a4DKe+r5C-C0T3;JYdYUEq*551$UM0qZk@x1`|ovyOBuN0 z8$oBt*mG`NsycWd^<-CXDw-Q_Y7h&bx_@QXM{~D&K~3fj zZ|5G)KN|I+>Jr;~&N1pjhDMm`I9R@K6x3&#^xfS2l6Q57WpDL@YPr=1nT-{7 z@G#Xe<e;KILZD0vPi(4OgYfIx`-l)J^|#D9nk&;fXF2)0P`+C$u4YWm&S6d8)%)y z#4Y$)9T-%0W%r769o;An5~fNB%RWkH)7O11m9fO3-0H`Q)F@zBOw=BslONK-8q_wF tP4C(qGQ>OoNHu?W<=uaRQiC%rJ9PyOI6sVu%s({gKIQ+VE0u~o`#;r#s8#>~ diff --git a/evibes/locale/zh_Hans/LC_MESSAGES/django.po b/evibes/locale/zh_Hans/LC_MESSAGES/django.po deleted file mode 100644 index e5ba8a19..00000000 --- a/evibes/locale/zh_Hans/LC_MESSAGES/django.po +++ /dev/null @@ -1,297 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: zh-hans\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: evibes/settings/constance.py:24 -msgid "Name of the company" -msgstr "公司名称" - -#: evibes/settings/constance.py:25 -msgid "Address of the company" -msgstr "公司地址" - -#: evibes/settings/constance.py:28 -msgid "Phone number of the company" -msgstr "公司电话号码" - -#: evibes/settings/constance.py:35 -msgid "" -"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " -"process taxes." -msgstr "贵公司所在地区的税率。如果不想处理税款,请留下 0。" - -#: evibes/settings/constance.py:44 -msgid "Shows if the taxes are already included in product's selling prices" -msgstr "显示税费是否已包含在产品售价中" - -#: evibes/settings/constance.py:52 -msgid "Exchange rate API key" -msgstr "汇率 API 密钥" - -#: evibes/settings/constance.py:58 -msgid "!!!DO NOT CHANGE!!!" -msgstr "不要换" - -#: evibes/settings/constance.py:60 -msgid "SMTP host" -msgstr "SMTP 主机" - -#: evibes/settings/constance.py:61 -msgid "SMTP port" -msgstr "SMTP 端口" - -#: evibes/settings/constance.py:62 -msgid "Use TLS" -msgstr "使用 TLS" - -#: evibes/settings/constance.py:63 -msgid "Use SSL" -msgstr "使用 SSL" - -#: evibes/settings/constance.py:66 -msgid "SMTP username" -msgstr "SMTP 用户名" - -#: evibes/settings/constance.py:70 -msgid "SMTP password" -msgstr "SMTP 密码" - -#: evibes/settings/constance.py:72 -msgid "Mail from option" -msgstr "从选项发送邮件" - -#: evibes/settings/constance.py:76 -msgid "How many days we store messages from anonymous users" -msgstr "我们将匿名用户的信息保存多少天" - -#: evibes/settings/constance.py:80 -msgid "How many days we store messages from authenticated users" -msgstr "我们会将已验证用户的信息保存多少天" - -#: evibes/settings/constance.py:84 -msgid "Disable buy functionality" -msgstr "禁用购买功能" - -#: evibes/settings/constance.py:88 -msgid "OpenStreetMap Nominatim API URL" -msgstr "OpenStreetMap Nominatim API URL" - -#: evibes/settings/constance.py:92 -msgid "OpenAI API Key" -msgstr "OpenAI API 密钥" - -#: evibes/settings/constance.py:96 -msgid "Abstract API Key" -msgstr "抽象应用程序接口密钥" - -#: evibes/settings/constance.py:104 -msgid "HTTP Proxy" -msgstr "HTTP 代理服务器" - -#: evibes/settings/constance.py:112 -msgid "An entity for storing advertisiment data" -msgstr "存储广告数据的实体" - -#: evibes/settings/constance.py:120 -msgid "An entity for storing analytics data" -msgstr "存储分析数据的实体" - -#: evibes/settings/constance.py:125 -msgid "Save responses from vendors' APIs" -msgstr "保存来自供应商应用程序接口的响应" - -#: evibes/settings/constance.py:126 -msgid "Backup database" -msgstr "备份数据库" - -#: evibes/settings/constance.py:127 -msgid "Backup media" -msgstr "备份介质" - -#: evibes/settings/constance.py:133 -msgid "Legal Options" -msgstr "法律选择" - -#: evibes/settings/constance.py:141 -msgid "Email Options" -msgstr "电子邮件选项" - -#: evibes/settings/constance.py:151 -msgid "Features Options" -msgstr "功能选项" - -#: evibes/settings/constance.py:160 -msgid "SEO Options" -msgstr "搜索引擎优化选项" - -#: evibes/settings/constance.py:164 -msgid "System Options" -msgstr "系统选项" - -#: evibes/settings/drf.py:49 -#, python-format -msgid "" -"\n" -"Welcome to the eVibes documentation.\n" -"\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" -"\n" -"## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" -"\n" -"## Available APIs\n" -"- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" -"\n" -"## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" -"- Access token lifetime is %(access_lifetime)d %(access_unit)s.\n" -"- Refresh token lifetime is %(refresh_hours)d hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" -"\n" -"## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" -"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" -"- All user-facing content supports multiple languages out of the box.\n" -"\n" -"## Response Formats\n" -"The API supports multiple response formats:\n" -"- **JSON** (default, camelCase formatted)\n" -"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" -"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" -"\n" -"## Health & Monitoring\n" -"- Health checks: `/health/`\n" -"- Prometheus metrics: `/prometheus/metrics/`\n" -"\n" -"## Version\n" -"Current API version: %(version)s\n" -msgstr "" -"\n" -"欢迎使用 eVibes 文档。\n" -"\n" -"eVibes 是一个功能强大的电子商务平台,只需点击几下,您就可以创建和管理任何类型的网上商店。\n" -"\n" -"## 关键功能\n" -"- 产品目录:** 管理多个类别的产品详情、定价、库存和可用性。\n" -"- 订单管理:** 处理订单、跟踪执行情况并有效处理客户请求。\n" -"- 身份验证和授权:** 使用 JWT 标记和基于角色的权限进行全面的用户身份验证。\n" -"- 支付处理:** 集成多种支付网关,安全管理交易。\n" -"- 博客和内容管理:** 为您的商店创建和管理博客文章和营销内容。\n" -"- B2B 业务:** 用于企业对企业交易和批发管理的专用端点。\n" -"- 多语言支持:** 通过全面的国际化(i18n)功能为全球客户提供服务。\n" -"- 自定义集成:** 可扩展的应用程序接口架构,用于与外部平台和服务集成。\n" -"- 分析和报告:** 生成有关销售、库存和客户行为的详细报告。\n" -"- 实时更新:** 获取有关库存水平、订单状态和定价变化的实时数据。\n" -"\n" -"## 可用的应用程序接口\n" -"- REST API:** 完整的 REST 接口(本文档)\n" -"- **GraphQL 应用程序接口:** 可在 `/graphql/`使用 GraphiQL 接口进行交互式查询\n" -"\n" -"## 验证\n" -"- 通过 JWT 标记进行身份验证。在请求的 `X-EVIBES-AUTH` 头中包含令牌,格式为 `Bearer `。\n" -"- 访问令牌的有效期为 %(access_lifetime)d %(access_unit)s_。\n" -"- 刷新令牌的有效期为 %(refresh_hours)d 小时。\n" -"- 刷新令牌在使用后会自动轮换和失效,以增强安全性。\n" -"\n" -"### 国际化(i18n)\n" -"- 设置 `Accept-Language` 标头以指定首选语言(例如,`Accept-Language: en-US`)。\n" -"- 可从 `/app/languages/` 端点检索可用语言。\n" -"- 所有面向用户的内容均支持多种语言。\n" -"\n" -"## 响应格式\n" -"应用程序接口支持多种响应格式:\n" -"- **JSON**(默认,驼峰编码格式)\n" -"- **XML**(添加 `?format=xml` 或设置 `Accept: application/xml`)\n" -"- **YAML**(添加 `?format=yaml`或设置`Accept: application/x-yaml)\n" -"\n" -"## 健康与监控\n" -"- 健康检查:健康检查\n" -"- Prometheus 指标:`/prometheus/metrics/`\n" -"\n" -"## 版本\n" -"当前的 API 版本:%(version)s\n" - -#: evibes/settings/unfold.py:28 -msgid "My site" -msgstr "我的网站" - -#: evibes/settings/unfold.py:36 -msgid "Health" -msgstr "健康" - -#: evibes/settings/unfold.py:40 -msgid "Support" -msgstr "支持" - -#: evibes/settings/unfold.py:77 -msgid "Menu" -msgstr "菜单" - -#: evibes/settings/unfold.py:82 -msgid "Dashboard" -msgstr "仪表板" - -#: evibes/settings/unfold.py:87 -msgid "Config" -msgstr "配置" - -#: evibes/settings/unfold.py:92 -msgid "Periodic Tasks" -msgstr "定期任务" - -#: evibes/settings/unfold.py:119 -msgid "Taskboard" -msgstr "任务板" - -#: evibes/settings/unfold.py:131 -msgid "Quick Links" -msgstr "快速链接" - -#: evibes/settings/unfold.py:136 -msgid "Users" -msgstr "用户" - -#: evibes/settings/unfold.py:141 -msgid "Groups" -msgstr "组别" - -#: evibes/settings/unfold.py:146 -msgid "Orders" -msgstr "订单" - -#: evibes/settings/unfold.py:151 -msgid "Products" -msgstr "产品" - -#: evibes/settings/unfold.py:156 -msgid "Categories" -msgstr "类别" - -#: evibes/settings/unfold.py:161 -msgid "Brands" -msgstr "品牌" - -#: evibes/settings/unfold.py:166 -msgid "Blogposts" -msgstr "博客文章" diff --git a/evibes/settings/drf.py b/evibes/settings/drf.py index df6c81e1..99e79b09 100644 --- a/evibes/settings/drf.py +++ b/evibes/settings/drf.py @@ -71,8 +71,8 @@ eVibes is a powerful e-commerce platform that allows you to launch and manage an ## Authentication - Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `. -- Access token lifetime is %(access_lifetime)d %(access_unit)s. -- Refresh token lifetime is %(refresh_hours)d hours. +- Access token lifetime is {access_lifetime} {access_unit}. +- Refresh token lifetime is {refresh_hours} hours. - Refresh tokens are automatically rotated and invalidated after usage for enhanced security. ## Internationalization (i18n) @@ -91,7 +91,7 @@ The API supports multiple response formats: - Prometheus metrics: `/prometheus/metrics/` ## Version -Current API version: %(version)s +Current API version: {version} """) # noqa: E501, F405 if not DEBUG: @@ -112,6 +112,7 @@ SPECTACULAR_DESCRIPTION = format_lazy( ) SPECTACULAR_SETTINGS = { + "OAS_VERSION": "3.1.0", "DEFAULT_GENERATOR_CLASS": "drf_spectacular_websocket.schemas.WsSchemaGenerator", "TITLE": f"{PROJECT_NAME} API", "DESCRIPTION": SPECTACULAR_DESCRIPTION, @@ -141,7 +142,7 @@ SPECTACULAR_SETTINGS = { "CONTACT": { "name": 'Egor "fureunoir" Gorbunov', "email": "contact@fureunoir.com", - "URL": "https://t.me/fureunoir", + "url": "https://t.me/fureunoir", }, "ENUM_NAME_OVERRIDES": { "OrderStatusEnum": "engine.core.choices.ORDER_STATUS_CHOICES", From e312cb8a7183718ac5b97293020ba94740457f3f Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Sun, 21 Dec 2025 02:12:01 +0300 Subject: [PATCH 7/9] Features: DRF docs I18N --- evibes/locale/ar_AR/LC_MESSAGES/django.mo | Bin 0 -> 10164 bytes evibes/locale/ar_AR/LC_MESSAGES/django.po | 299 +++++++++++++++++++ evibes/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 0 -> 8552 bytes evibes/locale/cs_CZ/LC_MESSAGES/django.po | 299 +++++++++++++++++++ evibes/locale/da_DK/LC_MESSAGES/django.mo | Bin 0 -> 8240 bytes evibes/locale/da_DK/LC_MESSAGES/django.po | 299 +++++++++++++++++++ evibes/locale/de_DE/LC_MESSAGES/django.mo | Bin 0 -> 8696 bytes evibes/locale/de_DE/LC_MESSAGES/django.po | 302 +++++++++++++++++++ evibes/locale/en_GB/LC_MESSAGES/django.mo | Bin 0 -> 8086 bytes evibes/locale/en_GB/LC_MESSAGES/django.po | 303 +++++++++++++++++++ evibes/locale/en_US/LC_MESSAGES/django.mo | Bin 0 -> 8091 bytes evibes/locale/en_US/LC_MESSAGES/django.po | 299 +++++++++++++++++++ evibes/locale/es_ES/LC_MESSAGES/django.mo | Bin 0 -> 8728 bytes evibes/locale/es_ES/LC_MESSAGES/django.po | 301 +++++++++++++++++++ evibes/locale/fa_IR/LC_MESSAGES/django.mo | Bin 0 -> 337 bytes evibes/locale/fa_IR/LC_MESSAGES/django.po | 272 ++++++++++++++++++ evibes/locale/fr_FR/LC_MESSAGES/django.mo | Bin 0 -> 8974 bytes evibes/locale/fr_FR/LC_MESSAGES/django.po | 304 ++++++++++++++++++++ evibes/locale/he_IL/LC_MESSAGES/django.mo | Bin 0 -> 9345 bytes evibes/locale/he_IL/LC_MESSAGES/django.po | 262 +++++++++++++++++ evibes/locale/hi_IN/LC_MESSAGES/django.mo | Bin 0 -> 337 bytes evibes/locale/hi_IN/LC_MESSAGES/django.po | 272 ++++++++++++++++++ evibes/locale/hr_HR/LC_MESSAGES/django.mo | Bin 0 -> 337 bytes evibes/locale/hr_HR/LC_MESSAGES/django.po | 272 ++++++++++++++++++ evibes/locale/id_ID/LC_MESSAGES/django.mo | Bin 0 -> 8283 bytes evibes/locale/id_ID/LC_MESSAGES/django.po | 299 +++++++++++++++++++ evibes/locale/it_IT/LC_MESSAGES/django.mo | Bin 0 -> 8661 bytes evibes/locale/it_IT/LC_MESSAGES/django.po | 300 +++++++++++++++++++ evibes/locale/ja_JP/LC_MESSAGES/django.mo | Bin 0 -> 9133 bytes evibes/locale/ja_JP/LC_MESSAGES/django.po | 297 +++++++++++++++++++ evibes/locale/kk_KZ/LC_MESSAGES/django.mo | Bin 0 -> 337 bytes evibes/locale/kk_KZ/LC_MESSAGES/django.po | 272 ++++++++++++++++++ evibes/locale/ko_KR/LC_MESSAGES/django.mo | Bin 0 -> 8481 bytes evibes/locale/ko_KR/LC_MESSAGES/django.po | 297 +++++++++++++++++++ evibes/locale/nl_NL/LC_MESSAGES/django.mo | Bin 0 -> 8361 bytes evibes/locale/nl_NL/LC_MESSAGES/django.po | 301 +++++++++++++++++++ evibes/locale/no_NO/LC_MESSAGES/django.mo | Bin 0 -> 8296 bytes evibes/locale/no_NO/LC_MESSAGES/django.po | 299 +++++++++++++++++++ evibes/locale/pl_PL/LC_MESSAGES/django.mo | Bin 0 -> 8608 bytes evibes/locale/pl_PL/LC_MESSAGES/django.po | 299 +++++++++++++++++++ evibes/locale/pt_BR/LC_MESSAGES/django.mo | Bin 0 -> 8671 bytes evibes/locale/pt_BR/LC_MESSAGES/django.po | 300 +++++++++++++++++++ evibes/locale/ro_RO/LC_MESSAGES/django.mo | Bin 0 -> 8745 bytes evibes/locale/ro_RO/LC_MESSAGES/django.po | 300 +++++++++++++++++++ evibes/locale/ru_RU/LC_MESSAGES/django.mo | Bin 0 -> 11120 bytes evibes/locale/ru_RU/LC_MESSAGES/django.po | 299 +++++++++++++++++++ evibes/locale/sv_SE/LC_MESSAGES/django.mo | Bin 0 -> 8357 bytes evibes/locale/sv_SE/LC_MESSAGES/django.po | 299 +++++++++++++++++++ evibes/locale/th_TH/LC_MESSAGES/django.mo | Bin 0 -> 12923 bytes evibes/locale/th_TH/LC_MESSAGES/django.po | 263 +++++++++++++++++ evibes/locale/tr_TR/LC_MESSAGES/django.mo | Bin 0 -> 8725 bytes evibes/locale/tr_TR/LC_MESSAGES/django.po | 300 +++++++++++++++++++ evibes/locale/vi_VN/LC_MESSAGES/django.mo | Bin 0 -> 9311 bytes evibes/locale/vi_VN/LC_MESSAGES/django.po | 265 +++++++++++++++++ evibes/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 0 -> 7825 bytes evibes/locale/zh_Hans/LC_MESSAGES/django.po | 297 +++++++++++++++++++ 56 files changed, 8171 insertions(+) create mode 100644 evibes/locale/ar_AR/LC_MESSAGES/django.mo create mode 100644 evibes/locale/ar_AR/LC_MESSAGES/django.po create mode 100644 evibes/locale/cs_CZ/LC_MESSAGES/django.mo create mode 100644 evibes/locale/cs_CZ/LC_MESSAGES/django.po create mode 100644 evibes/locale/da_DK/LC_MESSAGES/django.mo create mode 100644 evibes/locale/da_DK/LC_MESSAGES/django.po create mode 100644 evibes/locale/de_DE/LC_MESSAGES/django.mo create mode 100644 evibes/locale/de_DE/LC_MESSAGES/django.po create mode 100644 evibes/locale/en_GB/LC_MESSAGES/django.mo create mode 100644 evibes/locale/en_GB/LC_MESSAGES/django.po create mode 100644 evibes/locale/en_US/LC_MESSAGES/django.mo create mode 100644 evibes/locale/en_US/LC_MESSAGES/django.po create mode 100644 evibes/locale/es_ES/LC_MESSAGES/django.mo create mode 100644 evibes/locale/es_ES/LC_MESSAGES/django.po create mode 100644 evibes/locale/fa_IR/LC_MESSAGES/django.mo create mode 100644 evibes/locale/fa_IR/LC_MESSAGES/django.po create mode 100644 evibes/locale/fr_FR/LC_MESSAGES/django.mo create mode 100644 evibes/locale/fr_FR/LC_MESSAGES/django.po create mode 100644 evibes/locale/he_IL/LC_MESSAGES/django.mo create mode 100644 evibes/locale/he_IL/LC_MESSAGES/django.po create mode 100644 evibes/locale/hi_IN/LC_MESSAGES/django.mo create mode 100644 evibes/locale/hi_IN/LC_MESSAGES/django.po create mode 100644 evibes/locale/hr_HR/LC_MESSAGES/django.mo create mode 100644 evibes/locale/hr_HR/LC_MESSAGES/django.po create mode 100644 evibes/locale/id_ID/LC_MESSAGES/django.mo create mode 100644 evibes/locale/id_ID/LC_MESSAGES/django.po create mode 100644 evibes/locale/it_IT/LC_MESSAGES/django.mo create mode 100644 evibes/locale/it_IT/LC_MESSAGES/django.po create mode 100644 evibes/locale/ja_JP/LC_MESSAGES/django.mo create mode 100644 evibes/locale/ja_JP/LC_MESSAGES/django.po create mode 100644 evibes/locale/kk_KZ/LC_MESSAGES/django.mo create mode 100644 evibes/locale/kk_KZ/LC_MESSAGES/django.po create mode 100644 evibes/locale/ko_KR/LC_MESSAGES/django.mo create mode 100644 evibes/locale/ko_KR/LC_MESSAGES/django.po create mode 100644 evibes/locale/nl_NL/LC_MESSAGES/django.mo create mode 100644 evibes/locale/nl_NL/LC_MESSAGES/django.po create mode 100644 evibes/locale/no_NO/LC_MESSAGES/django.mo create mode 100644 evibes/locale/no_NO/LC_MESSAGES/django.po create mode 100644 evibes/locale/pl_PL/LC_MESSAGES/django.mo create mode 100644 evibes/locale/pl_PL/LC_MESSAGES/django.po create mode 100644 evibes/locale/pt_BR/LC_MESSAGES/django.mo create mode 100644 evibes/locale/pt_BR/LC_MESSAGES/django.po create mode 100644 evibes/locale/ro_RO/LC_MESSAGES/django.mo create mode 100644 evibes/locale/ro_RO/LC_MESSAGES/django.po create mode 100644 evibes/locale/ru_RU/LC_MESSAGES/django.mo create mode 100644 evibes/locale/ru_RU/LC_MESSAGES/django.po create mode 100644 evibes/locale/sv_SE/LC_MESSAGES/django.mo create mode 100644 evibes/locale/sv_SE/LC_MESSAGES/django.po create mode 100644 evibes/locale/th_TH/LC_MESSAGES/django.mo create mode 100644 evibes/locale/th_TH/LC_MESSAGES/django.po create mode 100644 evibes/locale/tr_TR/LC_MESSAGES/django.mo create mode 100644 evibes/locale/tr_TR/LC_MESSAGES/django.po create mode 100644 evibes/locale/vi_VN/LC_MESSAGES/django.mo create mode 100644 evibes/locale/vi_VN/LC_MESSAGES/django.po create mode 100644 evibes/locale/zh_Hans/LC_MESSAGES/django.mo create mode 100644 evibes/locale/zh_Hans/LC_MESSAGES/django.po diff --git a/evibes/locale/ar_AR/LC_MESSAGES/django.mo b/evibes/locale/ar_AR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..d5875e2cc7499fbe18c1daece58797729b22755a GIT binary patch literal 10164 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 Pmh^hr6zTJ%ay9xtVaBUV literal 0 HcmV?d00001 diff --git a/evibes/locale/ar_AR/LC_MESSAGES/django.po b/evibes/locale/ar_AR/LC_MESSAGES/django.po new file mode 100644 index 00000000..1aff001d --- /dev/null +++ b/evibes/locale/ar_AR/LC_MESSAGES/django.po @@ -0,0 +1,299 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: ar-ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "اسم الشركة" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "عنوان الشركة" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "رقم هاتف الشركة" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"معدل الضريبة في الولاية القضائية لشركتك. اترك 0 إذا كنت لا تريد معالجة " +"الضرائب." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "يوضح ما إذا كانت الضرائب مشمولة بالفعل في أسعار بيع المنتج" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "مفتاح API لسعر الصرف" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!، لا تتغير!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "مضيف SMTP" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "منفذ SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "استخدام TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "استخدام SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "اسم مستخدم SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "كلمة مرور SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "البريد من خيار البريد من" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "عدد الأيام التي نخزن فيها الرسائل من المستخدمين المجهولين" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "عدد الأيام التي نخزن فيها الرسائل من المستخدمين الموثقين" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "تعطيل وظيفة الشراء" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "عنوان URL الخاص بواجهة برمجة تطبيقات OpenStreetMap Nominatim" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "مفتاح واجهة برمجة تطبيقات OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "مفتاح واجهة برمجة التطبيقات المجردة" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "وكيل HTTP" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "كيان لتخزين بيانات الإعلانات" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "كيان لتخزين بيانات التحليلات" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "حفظ الاستجابات من واجهات برمجة تطبيقات البائعين" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "قاعدة البيانات الاحتياطية" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "وسائط النسخ الاحتياطي" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "الخيارات القانونية" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "خيارات البريد الإلكتروني" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "خيارات الميزات" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "خيارات تحسين محركات البحث" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "خيارات النظام" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"مرحباً بك في وثائق eVibes.\n" +"\n" +"eVibes عبارة عن منصة تجارة إلكترونية قوية تتيح لك إطلاق وإدارة متجر إلكتروني من أي نوع بنقرات قليلة.\n" +"\n" +"## الميزات الرئيسية\n" +"- ** كتالوج المنتجات:** إدارة تفاصيل المنتج والتسعير والمخزون والتوافر عبر فئات متعددة.\n" +"- **إدارة الطلبات:** معالجة الطلبات وتتبع التنفيذ والتعامل مع طلبات العملاء بكفاءة.\n" +"- **المصادقة والتخويل:** مصادقة شاملة للمستخدمين باستخدام رموز JWT المميزة والأذونات المستندة إلى الأدوار.\n" +"- ** معالجة المدفوعات:** دمج بوابات دفع متعددة وإدارة المعاملات بشكل آمن.\n" +"- ** إدارة المدونة والمحتوى:** إنشاء وإدارة منشورات المدونة والمحتوى التسويقي لمتجرك.\n" +"- ** عمليات B2B:** نقاط نهاية مخصصة للمعاملات بين الشركات وإدارة البيع بالجملة.\n" +"- **دعم متعدد اللغات:** خدمة العملاء في جميع أنحاء العالم مع إمكانات التدويل الكاملة (i18n).\n" +"- **تكامل مخصص:** بنية واجهة برمجة تطبيقات قابلة للتوسيع للتكامل مع المنصات والخدمات الخارجية.\n" +"- **التحليلات والتقارير:** إنشاء تقارير مفصلة عن المبيعات والمخزون وسلوك العملاء.\n" +"- ** تحديثات في الوقت الفعلي:** احصل على بيانات مباشرة عن مستويات المخزون وحالات الطلبات وتغييرات الأسعار.\n" +"\n" +"## واجهات برمجة التطبيقات المتاحة\n" +"- **واجهة برمجة تطبيقات REST:** واجهة REST كاملة (هذه الوثائق)\n" +"- ** واجهة برمجة تطبيقات GraphiQL:** متوفرة على '/graphql/' مع واجهة GraphiQL للاستعلامات التفاعلية\n" +"\n" +"## المصادقة\n" +"- يتم التعامل مع المصادقة عبر رموز JWT المميزة. قم بتضمين الرمز المميز في رأس \"X-EVIBES-AUTH\" لطلباتك بصيغة \"حامل \".\n" +"- عمر رمز الوصول الرمزي هو {access_lifetime} {access_unit}.\n" +"- عمر الرمز المميز للتحديث هو {refresh_hours} ساعة.\n" +"- يتم تدوير رموز التحديث تلقائيًا وإبطالها بعد الاستخدام لتعزيز الأمان.\n" +"\n" +"## التدويل (i18n)\n" +"- قم بتعيين رأس \"قبول اللغة\" لتحديد لغتك المفضلة (على سبيل المثال، \"قبول اللغة: en-US\").\n" +"- يمكن استرداد اللغات المتاحة من نقطة النهاية \"/ التطبيق/اللغات/\".\n" +"- جميع المحتويات التي تواجه المستخدم تدعم لغات متعددة خارج الصندوق.\n" +"\n" +"## تنسيقات الاستجابة\n" +"تدعم واجهة برمجة التطبيقات تنسيقات استجابة متعددة:\n" +"- **JSON** (افتراضي، بتنسيق camelCase)\n" +"- **XML** (أضف \"?format=xml\" أو قم بتعيين \"قبول: application/xml\")\n" +"- **YAML** (أضف '؟تنسيق=yaml' أو اضبط 'قبول: application/x-yaml')\n" +"\n" +"## الصحة والمراقبة\n" +"- فحوصات الصحة: '/الصحة/'\n" +"- مقاييس بروميثيوس: '//prometheus/metrics/'\n" +"\n" +"## الإصدار\n" +"إصدار API الحالي: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "موقعي" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "الصحة" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "الدعم" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "قائمة الطعام" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "لوحة التحكم" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "التكوين" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "المهام الدورية" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "لوحة المهام" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "روابط سريعة" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "المستخدمون" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "المجموعات" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "الطلبات" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "المنتجات" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "الفئات" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "العلامات التجارية" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "المدونات" diff --git a/evibes/locale/cs_CZ/LC_MESSAGES/django.mo b/evibes/locale/cs_CZ/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..10c29e2c1a5ee3e919b8b8657c563c654bcf908c GIT binary patch literal 8552 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,o@B*oNathp2S02 zN*Y!^v`NYmfJCs%RTU|8+VVEN?fv=b)U*peb5Olelp|#UEQN$}%yaE9Wmi1e3F^cB z%!UGNLu3xDBvL6Y(-s-|X^@?xN+uX*M#4n$DCt{8Cy$3zDM|0-9riVOP-=~LD@mS! zzvsgkX4VN|Jw)G)veDjijdH0I-pzDJs>-EU>QrjDG|BuXXHas-qeNZIG)kR+ZvVM1 zxpDDFe$z;$W64fL66Jh6&4?I;oCq(^w#lNvJLcpl0U=1qCxNSiNIH2~9gql-KT*?C z^uyQ~|>W1SKZ|P;U0H}L7>hhjTEXLhAZ|OqgbtZraUm7V%r=&^Tc81J$8kFpo zM0WoS{Zkp;kUh7^OZSs;)()am}Ix}5M;MRtFabxY% zX46@J$Z5X6{wT+tZL>Q#41U=6O|}yO<+OkX8HkS8IWF5h(`m0sdyOY=PJ3%vK+wFf z(;k}{Nx?4d9!r~zqmT@rZM4^y*Pj0A$scZ?X|fYnloAK+WDBh}8BS^_?|!M05*c(T z0IY;OK-^ZWB{4a`L)%Ps8Vdjg_`Pr$e~@r5RTEce*c9A_Q#-9E(tUR)M`PpXJ%sH~ z9-ZyGN5S1pOMVLgoWAi6P$GRdr7|?Zrb8d-^gxu%TUvr7xC^{J;;#lCuadw)QPqGh zRbaA6#@}zGA+G|DZKowyq68rRL?u-|KC|56-pO&$;h2~g5LoCQHk5bXxsv`oxEq1D zS#jGTXh7+)s(j^yEqdaygIf|Rbz{y7%GxvxQR7G0>ft1@D8Tvb-c12>a%qE1;wkrP z)1Dmha(PU1-klsr=x2>y4-aHdhGN&n1jF-|Kcg4lz6Z4Crv=X`>;;W{u+gA$&fY{T z#HXvplW)^rjDl_2nmuWEj)4gzwNzd$o^d*KE6u_v*cydBAQ&nGeUGN{#ERD5H|(yZ zzh&eIY3zedT6zC#r$O4F57H=3mDOu@&iL_Z5+b#ogA|+NBW)h(IA3dDDVe9CDF4\n" +"Language-Team: LANGUAGE \n" +"Language: cs-cz\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Název společnosti" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Adresa společnosti" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Telefonní číslo společnosti" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Sazba daně v jurisdikci vaší společnosti. Pokud nechcete zpracovávat daně, " +"ponechte 0." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "Zobrazuje, zda jsou daně již zahrnuty v prodejních cenách produktu." + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Klíč API pro směnný kurz" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!NEMĚŇTE!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP host" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "Port SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Použití protokolu TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Použití protokolu SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "Uživatelské jméno SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "Heslo SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Možnost Pošta z" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Kolik dní uchováváme zprávy od anonymních uživatelů" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Kolik dní uchováváme zprávy od ověřených uživatelů" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Zakázat funkci nákupu" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "URL rozhraní API OpenStreetMap Nominatim" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "Klíč API OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Abstraktní klíč API" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "Proxy server HTTP" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Subjekt pro ukládání dat inzerátů" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Subjekt pro ukládání analytických dat" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Ukládání odpovědí z rozhraní API dodavatelů" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Zálohování databáze" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Záložní média" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Právní možnosti" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Možnosti e-mailu" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Možnosti funkcí" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "Možnosti SEO" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Možnosti systému" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Vítejte v dokumentaci systému eVibes.\n" +"\n" +"eVibes je výkonná platforma pro elektronické obchodování, která vám umožní spustit a spravovat internetový obchod jakéhokoli druhu na několik kliknutí.\n" +"\n" +"## Klíčové funkce\n" +"- **Katalog produktů:** Správa podrobností o produktech, cen, skladových zásob a dostupnosti v několika kategoriích.\n" +"- **Správa objednávek:** Zpracovávejte objednávky, sledujte jejich plnění a efektivně vyřizujte požadavky zákazníků.\n" +"- **Ověřování a autorizace:** Komplexní ověřování uživatelů pomocí tokenů JWT a oprávnění na základě rolí.\n" +"- **Zpracování plateb:** Integrace více platebních bran a bezpečná správa transakcí.\n" +"- **Správa blogu a obsahu:** Vytváření a správa příspěvků na blogu a marketingového obsahu pro váš obchod.\n" +"- **Provoz B2B:** Vyhrazené koncové body pro transakce mezi podniky a správu velkoobchodu.\n" +"- **Vícejazyčná podpora:** Obsluhujte zákazníky po celém světě díky plným možnostem internacionalizace (i18n).\n" +"- **Vlastní integrace:** Rozšiřitelná architektura API pro integraci s externími platformami a službami.\n" +"- **Analytika a reporting:** Generování podrobných reportů o prodeji, zásobách a chování zákazníků.\n" +"- **Aktualizace v reálném čase:** Získávejte živé údaje o stavu zásob, stavu objednávek a změnách cen.\n" +"\n" +"## Dostupná rozhraní API\n" +"- **REST API:** Plné rozhraní RESTful (tato dokumentace).\n" +"- **GraphQL API:** K dispozici na adrese `/graphql/` s rozhraním GraphiQL pro interaktivní dotazy.\n" +"\n" +"## Ověřování\n" +"- Ověřování se provádí pomocí tokenů JWT. Token zahrňte do hlavičky `X-EVIBES-AUTH` svých požadavků ve formátu `Bearer `.\n" +"- Životnost přístupového tokenu je {access_lifetime}. {access_unit}.\n" +"- Životnost tokenu pro obnovení je {refresh_hours} hodin.\n" +"- Tokeny pro obnovení jsou po použití automaticky rotovány a zneplatněny z důvodu vyšší bezpečnosti.\n" +"\n" +"## Internacionalizace (i18n)\n" +"- Nastavte hlavičku `Accept-Language` tak, aby určovala preferovaný jazyk (např. `Accept-Language: en-US`).\n" +"- Dostupné jazyky lze získat z koncového bodu `/app/languages/`.\n" +"- Veškerý obsah směřující k uživateli podporuje více jazyků hned po vybalení z krabice.\n" +"\n" +"## Formáty odpovědí\n" +"Rozhraní API podporuje více formátů odpovědí:\n" +"- **JSON** (výchozí, formátováno camelCase).\n" +"- **XML** (přidejte `?format=xml` nebo nastavte `Accept: application/xml`).\n" +"- **YAML** (přidejte `?format=yaml` nebo nastavte `Accept: application/x-yaml`)\n" +"\n" +"## Stav a monitorování\n" +"- Kontroly stavu: `/health/`\n" +"- Metriky Prometheus: `/prometheus/metrics/`\n" +"\n" +"## Verze\n" +"Aktuální verze API: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Moje stránky" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Zdraví" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Podpora" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Nabídka" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Přístrojová deska" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Konfigurace" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Pravidelné úkoly" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Taskboard" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Rychlé odkazy" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Uživatelé" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Skupiny" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Objednávky" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Produkty" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Kategorie" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Značky" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogposty" diff --git a/evibes/locale/da_DK/LC_MESSAGES/django.mo b/evibes/locale/da_DK/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..b9df3bc342cde94632b0dcce6d16b164658a9584 GIT binary patch literal 8240 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 NT=zvhS6{Fs_&=D4M1lYS literal 0 HcmV?d00001 diff --git a/evibes/locale/da_DK/LC_MESSAGES/django.po b/evibes/locale/da_DK/LC_MESSAGES/django.po new file mode 100644 index 00000000..fef4186a --- /dev/null +++ b/evibes/locale/da_DK/LC_MESSAGES/django.po @@ -0,0 +1,299 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: da-dk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Virksomhedens navn" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Virksomhedens adresse" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Virksomhedens telefonnummer" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Skattesats i din virksomheds jurisdiktion. Lad 0 stå, hvis du ikke ønsker at" +" behandle skatter." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "Viser, om afgifterne allerede er inkluderet i produktets salgspris" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "API-nøgle til valutakurs" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!SKIFT IKKE!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP-vært" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTP-port" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Brug TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Brug SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "SMTP-brugernavn" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "SMTP-adgangskode" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Mulighed for mail fra" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Hvor mange dage vi gemmer beskeder fra anonyme brugere" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Hvor mange dage vi gemmer beskeder fra godkendte brugere" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Deaktiver købsfunktionalitet" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "OpenStreetMap Nominatim API URL" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI API-nøgle" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Abstrakt API-nøgle" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP-proxy" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "En enhed til lagring af annonceringsdata" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "En enhed til lagring af analysedata" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Gem svar fra leverandørers API'er" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Backup af database" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Backup-medier" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Juridiske muligheder" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Indstillinger for e-mail" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Funktioner Indstillinger" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "SEO-muligheder" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Systemindstillinger" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Velkommen til eVibes' dokumentation.\n" +"\n" +"eVibes er en stærk e-handelsplatform, der giver dig mulighed for at starte og administrere en onlinebutik af enhver art med blot nogle få klik.\n" +"\n" +"## Nøglefunktioner\n" +"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og tilgængelighed på tværs af flere kategorier.\n" +"- Ordrehåndtering:** Behandl ordrer, spor opfyldelse og håndter kundeanmodninger effektivt.\n" +"- Godkendelse og autorisation:** Omfattende brugergodkendelse med JWT-tokens og rollebaserede tilladelser.\n" +"- **Betalingsbehandling:** Integrer flere betalingsgateways og håndter transaktioner sikkert.\n" +"- Blog- og indholdsstyring: ** Opret og administrer blogindlæg og markedsføringsindhold til din butik.\n" +"- **B2B Operations:** Dedikerede slutpunkter til business-to-business-transaktioner og engrosadministration.\n" +"- Flersproget support:** Betjen kunder over hele verden med fuld internationalisering (i18n).\n" +"- Brugerdefinerede integrationer:** Udvidelig API-arkitektur til integration med eksterne platforme og tjenester.\n" +"- Analyse og rapportering:** Generer detaljerede rapporter om salg, lagerbeholdning og kundeadfærd.\n" +"- Opdateringer i realtid:** Få live-data om lagerniveauer, ordrestatus og prisændringer.\n" +"\n" +"## Tilgængelige API'er\n" +"- **REST API:** Fuld RESTful-grænseflade (denne dokumentation)\n" +"- GraphQL API:** Tilgængelig på `/graphql/` med GraphiQL-grænseflade til interaktive forespørgsler\n" +"\n" +"## Autentificering\n" +"- Autentificering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-AUTH`-headeren i dine anmodninger i formatet `Bearer `.\n" +"- Adgangstokenets levetid er {access_lifetime} {access_unit}.\n" +"- Opdateringstokenets levetid er {refresh_hours} timer.\n" +"- Refresh-tokens bliver automatisk roteret og ugyldiggjort efter brug for at øge sikkerheden.\n" +"\n" +"## Internationalisering (i18n)\n" +"- Indstil headeren `Accept-Language` til at angive dit foretrukne sprog (f.eks. `Accept-Language: en-US`).\n" +"- Tilgængelige sprog kan hentes fra `/app/languages/` endpoint.\n" +"- Alt brugervendt indhold understøtter flere sprog fra starten.\n" +"\n" +"## Svarformater\n" +"API'en understøtter flere svarformater:\n" +"- **JSON** (standard, camelCase-formateret)\n" +"- XML** (tilføj `?format=xml` eller indstil `Accept: application/xml`)\n" +"- **YAML** (tilføj `?format=yaml` eller indstil `Accept: application/x-yaml`)\n" +"\n" +"## Sundhed og overvågning\n" +"- Sundhedstjek: `/health/`\n" +"- Prometheus-målinger: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Nuværende API-version: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Min hjemmeside" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Sundhed" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Støtte" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menu" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Dashboard" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Konfig" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Periodiske opgaver" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Opgavetavle" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Hurtige links" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Brugere" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Grupper" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Bestillinger" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Produkter" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Kategorier" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Mærker" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogindlæg" diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.mo b/evibes/locale/de_DE/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..902a92d99790f6da470b568179bd4be483a478d7 GIT binary patch literal 8696 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 G;Qs)>mFN@z literal 0 HcmV?d00001 diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.po b/evibes/locale/de_DE/LC_MESSAGES/django.po new file mode 100644 index 00000000..8df68aa8 --- /dev/null +++ b/evibes/locale/de_DE/LC_MESSAGES/django.po @@ -0,0 +1,302 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: de-de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Name des Unternehmens" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Anschrift des Unternehmens" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Telefonnummer des Unternehmens" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Steuersatz in dem Land, in dem Ihr Unternehmen ansässig ist. Lassen Sie 0 " +"stehen, wenn Sie keine Steuern verarbeiten wollen." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "" +"Zeigt an, ob die Steuern bereits in den Verkaufspreisen des Produkts " +"enthalten sind" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Wechselkurs-API-Schlüssel" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!NICHT ÄNDERN!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP-Host" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTP-Port" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Use TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Use SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "SMTP-Benutzername" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "SMTP-Kennwort" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Option Mail von" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Wie viele Tage wir Nachrichten von anonymen Nutzern speichern" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "" +"Wie viele Tage wir Nachrichten von authentifizierten Benutzern speichern" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Kauffunktionalität deaktivieren" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "OpenStreetMap Nominatim API URL" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI API Key" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Abstrakter API-Schlüssel" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP-Proxy" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Eine Einheit zur Speicherung von Werbedaten" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Eine Einheit zur Speicherung von Analysedaten" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Speichern von Antworten aus den APIs von Anbietern" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Datenbank sichern" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Sicherungsmedien" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Rechtliche Optionen" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "E-Mail-Optionen" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Merkmale Optionen" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "SEO-Optionen" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "System Options" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Willkommen bei der eVibes-Dokumentation.\n" +"\n" +"eVibes ist eine leistungsstarke E-Commerce-Plattform, die es Ihnen ermöglicht, mit nur wenigen Klicks einen Online-Shop jeglicher Art zu eröffnen und zu verwalten.\n" +"\n" +"## Hauptmerkmale\n" +"- **Produktkatalog:** Verwalten Sie Produktdetails, Preise, Bestand und Verfügbarkeit über mehrere Kategorien hinweg.\n" +"- **Auftragsverwaltung:** Verarbeiten Sie Aufträge, verfolgen Sie die Ausführung und bearbeiten Sie Kundenanfragen effizient.\n" +"- **Authentifizierung & Autorisierung:** Umfassende Benutzerauthentifizierung mit JWT-Tokens und rollenbasierten Berechtigungen.\n" +"- **Zahlungsabwicklung:** Integrieren Sie mehrere Zahlungsgateways und verwalten Sie Transaktionen auf sichere Weise.\n" +"- **Blog & Content Management:** Erstellen und verwalten Sie Blogbeiträge und Marketinginhalte für Ihren Shop.\n" +"- **B2B-Betrieb:** Dedizierte Endpunkte für Business-to-Business-Transaktionen und Großhandelsmanagement.\n" +"- **Mehrsprachige Unterstützung:** Bedienen Sie Kunden auf der ganzen Welt mit vollständigen Internationalisierungsfunktionen (i18n).\n" +"- **Benutzerdefinierte Integrationen:** Erweiterbare API-Architektur für die Integration mit externen Plattformen und Diensten.\n" +"- **Analytik & Reporting:** Generieren Sie detaillierte Berichte über Verkäufe, Bestände und Kundenverhalten.\n" +"- **Echtzeit-Updates:** Erhalten Sie Live-Daten zu Lagerbeständen, Bestellstatus und Preisänderungen.\n" +"\n" +"## Verfügbare APIs\n" +"- **REST API:** Vollständige RESTful-Schnittstelle (diese Dokumentation)\n" +"- **GraphQL API:** Verfügbar unter `/graphql/` mit GraphiQL-Schnittstelle für interaktive Abfragen\n" +"\n" +"## Authentifizierung\n" +"- Die Authentifizierung erfolgt über JWT-Tokens. Fügen Sie das Token in den `X-EVIBES-AUTH`-Header Ihrer Anfragen im Format `Bearer ` ein.\n" +"- Die Lebensdauer des Zugangstokens beträgt {access_lifetime} {access_unit}.\n" +"- Die Lebensdauer von Auffrischungstoken beträgt {refresh_hours} Stunden.\n" +"- Refresh-Tokens werden automatisch rotiert und nach der Verwendung ungültig gemacht, um die Sicherheit zu erhöhen.\n" +"\n" +"## Internationalisierung (i18n)\n" +"- Setzen Sie den `Accept-Language`-Header, um Ihre bevorzugte Sprache anzugeben (z.B. `Accept-Language: en-US`).\n" +"- Die verfügbaren Sprachen können über den Endpunkt `/app/languages/` abgerufen werden.\n" +"- Alle benutzerseitigen Inhalte unterstützen von Haus aus mehrere Sprachen.\n" +"\n" +"## Antwortformate\n" +"Die API unterstützt mehrere Antwortformate:\n" +"- **JSON** (Standard, camelCase-formatiert)\n" +"- XML** (fügen Sie `?format=xml` hinzu oder setzen Sie `Accept: application/xml`)\n" +"- **YAML** (fügen Sie `?format=yaml` hinzu oder legen Sie `Accept: application/x-yaml` fest)\n" +"\n" +"## Gesundheit & Überwachung\n" +"- Gesundheitsprüfungen: `/health/`\n" +"- Prometheus Metriken: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Aktuelle API-Version: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Mein Standort" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Gesundheit" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Unterstützung" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menü" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Dashboard" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Konfigurieren Sie" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Regelmäßige Aufgaben" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Aufgabentafel" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Schnelle Links" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Benutzer" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Gruppen" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Bestellungen" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Produkte" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Kategorien" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Marken" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.mo b/evibes/locale/en_GB/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..7d096158f536ab0895c9678ce64cbbce779504ea GIT binary patch literal 8086 zcmeHL%Wot{884DR$b?tIBZLH~WntHL-1a&`$jt7B9goM4WX9w5j5i5LtZTY!W-9LK z>Qr^xot4|O2H@f9HXp$;TJ zoB(P6Pk|)o+d%TeEg;$94?yz6Uw~wfe*(!5>~o$z2h#jSAo<}dK=Q*Lko@qCfCC`u zWr4)+G>l&l<2QlihaUjR55EQy|A)Yg=syCa{TxVsSOC)Z*8+YANPc(&2sbz#$j)~^ zMB`$Zd<;mkQVNmmWT$1ki+IVFpTSEqt>FDMUb6R7c*(BxkiQ@%yFi2Rd%NQPjp<4WLAhm>1?S|3De4Q!E=2qO}|XJjIeVgO)Pny zilVR02sA{&MVjhk%g4GTvZ*Muc*sST@R7*GK;kFYS*kM0ZJ~|ix{s+bKU7$vGX7F& zL4)_@F^^LfA6f`-{ycw9j`@ZZMQNn1M0{ak*XX2-3tkt6NcEt)u)tfMK_0#&vJfh@ zi##_fR@qBQg zp}-ub=NC9lK!{h|m{`{JC^r&|tU8jsv>+$$+;pspA%FJyF06luWlmG0QyKMyl?l(K z87XT)J}9;;#w6-Q85oNAY-dp4zy@a)$-}|{W{<_#Qw~mr=9v{SNo~26G2ArKX${_i zCUp&pVB?)Mv0&Z6rxX*@@aWO%w$Ra zb(xSAp|H%7T&oQ9XlJjq2t8|~LPwL|PnBBT7X!C@Gjb zWu9x}f}tY~JTh^z<;U8j$+1c#cOF4hqzJ%5n#@Tl(%@A-r&d<8c?4YUV{saCbr&#G zSCDN)pobJF!4|oGN#mUDiRZN9U0BBme>HU=`>NjX%Ra|3h^644-3YK zJPTj#Nm43A!lul~u#)?Hf<=w{jIhr**$9DuS7J?!zBe@2o0~LvyPiSu#Unce%oi3S) z47Wippb4s9&J}%u@-{a2u+?>pvPG`zY6{oa!Pxeu$he5u{LbuuYPdA5PXHU6xXGu~ z3#}$C6iLDlzUIGOJsG73$Z@y}!RXCj<XV%;4O`4#o?L_phTFBhY~GE6^2LhVA=8kzTuc3Nm#6eMaf68TYxqr%r1vnET$@S z1HAxhb){Y+JaFQXC6D}EmA@K(omSYnbLZCEe5c*z^{v{@W&>kZ>se|d{3i4~td=CO zIclx<8G5c9-4d&1h=hXr78uc;gcJZG0rf&z9S3u%iOZ9Zg-cwa584zPi#vc)6qPJ%xFZ8C%xnd zra~FOQBN5pGM$Y_8g8R30h#}4(^+9gCi;y{Il$>Tk-bHVI0o8j!&)*cS!>KKj$yWg z(7)STXic)(whILEDGfV?k+NusobTw7qLyIfzVGifnQJvI+r??2(Z%qtu!k59HG1Z( z9QAxnrxc!q18hUhuw~avw9LGzGHmEH+EbZ3Em&}fu8O%|xv&=fNfJgl?ENoNH-iGK zBXC|#l0BFcy>p_Cy-0F``jEPO<-@WNCosAz*(o}@WQ+ps4k_2tBU4Dai_{sW=={;& zA&Det_(H`xV_V44R9Mp2hf`Oa_y}TR`$lxm9t<|5aZ8rFg#$IQ;y;Jdx zQPi>nl|*ahz(!qN<(1ubv?q^{cRGvKksVe3VxzVfwc62ojc>K9t?j42-ri|cn!*-Q zmzqu7n6#<#js0em@6=iiex=c>Z8xvg*4NRXbe_Rd-(f~wDMnS^M1j~RNv<@T*HX2l z&ERYeBxr578fRj!EM2OEemm-pbI4Pm2VBNIO=XvSNFRc(dyYc5(_6<)W~8) z9c}@9wWo^8Zdw|&Z5ycLD0^A%hW6^ym(fkqm#cFbKX;X{%wMj|?vu0oBrfK&`{e9C zxv)^1wivVfWH!4`qK%&2C()YD?vn=piJShHb<$#nd*bXqNw>_|eR6i6oZTn?-|v(E E29ZqJhyVZp literal 0 HcmV?d00001 diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.po b/evibes/locale/en_GB/LC_MESSAGES/django.po new file mode 100644 index 00000000..9361a477 --- /dev/null +++ b/evibes/locale/en_GB/LC_MESSAGES/django.po @@ -0,0 +1,303 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Name of the company" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Address of the company" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Phone number of the company" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "Shows if the taxes are already included in product's selling prices" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Exchange rate API key" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!DO NOT CHANGE!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP host" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTP port" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Use TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Use SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "SMTP username" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "SMTP password" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Mail from option" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "How many days we store messages from anonymous users" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "How many days we store messages from authenticated users" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Disable buy functionality" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "OpenStreetMap Nominatim API URL" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI API Key" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Abstract API Key" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP Proxy" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "An entity for storing advertisiment data" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "An entity for storing analytics data" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Save responses from vendors' APIs" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Backup database" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Backup media" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Legal Options" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Email Options" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Features Options" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "SEO Options" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "System Options" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "My site" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Health" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Support" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menu" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Dashboard" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Config" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Periodic Tasks" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Taskboard" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Quick Links" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Users" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Groups" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Orders" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Products" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Categories" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Brands" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/en_US/LC_MESSAGES/django.mo b/evibes/locale/en_US/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..7f4b0aa393735a4f0cd525732c9b4a94cefea085 GIT binary patch literal 8091 zcmeHLO^hQ)6)r*o!3hBZB>aR>%d)#Olj-qJgwWvK4eRlEeiC~;JNE1*99WmT%XVej zUALcz^r>#%jRj58@A=wFenH`3PfQ1AY?YpMR9Gj{|=T zd;<6<-~#YH;Fp0Gdxl`QhO&cz#aAimvlyG&7MX4g6r7|UW%tL z;YA3#hwQ;hH)I^@k>r`?*-&zMUG=2pkq+~bOfr!vovf5f#k8_q@Kleb>E|(*0d|h0 z2_;Wsk@dA1friMqh+{pre4=wA8;d*%hg>8PABjW^Bz|(8#43^8X4*)u`5i6eX$Jr%2L!bNDbwS1JvnMz~HLy^gWHcCPO;@2{f zGzAMX4l#rbp~NOl-@qs{B0S`W|qr-ACh5RJn>Ab zIoyzB3d~`8exB0=gm}e`iDgZXQX{d*sw2sB3v%M_O=Fb}`SUkAu>K*IIZcg@WzZ8= zMm&{fq^t$`La{wDAyKEwz)-|zCxQ9~HaN9NS}Yu3b}S~Ia^X~Ho>&o*)RtQr!c9}1 z*5Ms!Qq!OaHr`273)T#LN-;4Dj~*>gHJQiHnnRgEC>|CB5NQ-##)pr$+xoNXyammi znJme_AtSOP6qZSpYL$Q0tVs{B|lmaUBm~Fe~6RuOEr)IW;Lhf>QnB7~0anBU2|^KGr6V#wwEBc?3}rBLFjL5+|jI3$OA8wYrupBH&UVi?fic zxqz9uf^18w)sJCFt9p>Gy0^oH35P0^A*F^>k(iL{$Y_qW#0GGUXNl@fi`Y3*h~Fag zuwa77v+&ivB&CW-*pdkuR&t+Du&8mL5%viu8zJ!TNvx?6cux++kItumX zAdNuLX|p9W9#br1Mi9vvEgs7wN%`y23+_htTjE9@Dsq~KNUj0tKt-bJ6WSZbmx=v) zyF+Fo!)=laXoBjOb46dEd@W={l(xHy-l9wSEhEz5wZ?S&DRor2ZW$&{hqvN#*BjX_ zR#<&XnBvWiC^4WRvYzUR7xk{B1-pAv9}@Yp5%D7>?#SmA#6uY82rH`CF2}*d4Z1G| z_3Jz9^>$D_=xlfSPztJ9D6lSHW@V>XP9>W(S(n0K*=1UE(-C~GOAf1suDE#?vFalY z;W`NRs&HR!PUlW$GkK!26WY5k`zX}ILcZxjx7qklH-}(nPq>5owje?g&8Tb|A|jFF zc*2cF1R(s#{Rk2y5Csv&eS|kkA>|{PTqdwwh!3s~p|<!N6#&=do>xZrcA3U}K(=9DM-)`+9zZN3d7pRZR&}by%8qOPX2s{Wk z`ILIG*`S3Yig@?y{@az~QQSq2!(9kQZ~h90-Z=eTr7Y6|zx}1^f7m|}|CK=C)-1Zr z+eQ__33;A3HKG-VYchZm#cVi~XgMk{Jdy{?%3XZJF+Y;9SPqMlk3zQqZALL$E@rWq zs?c@x0;tucT8{9*iAR<^@^cmbYVqr&#Lk>Kv(e(atq!kkS9iDS7_(~6QWN1fq32=M zD1yyVYrW6VbEW8(ST#W;WYo97i0&k$01y$VXUZZ^!Iui^`z@Rmd$(vEZA+fI4b&vC zVm!hbDj1#L?mTAeI3^>@YREd@88IB{eKlYk!VY^{n22pCE9hYA<&X@WA2kF>)NI1) zBQ#q$q+N@^>c_rtb9b_kg$|+Yw85J#+cG*&E!*yN_Q(sz6XyNIw)L2f<_Tm*BQl=$ zk|UT3WdKJ#Wspd8G8t*Ojj{w}{-;f+g&CRXH#Xz|r{`4mCMn_=Xr~Qp$|Psa3AZ?g z*)Br=UT>i_Nvb<85Xh%AY-dKwtSM5yt4E4jf|2`vu-{;=)wFC6r-eor!#lzrVmQ?3 znUj3f^EI7Pcp46{4K>4-UCYrj^M*>WpnhRIEL*nHU z@v%S}pm0L~f0U7!E9?Musoick>@?bhhz{8BWpq)&P81XwT;Y4w+6&dKI=^1uZ|}5r zOTIA*ns%U~U_Bq$prb3iwATvuOSN!`$1dG-=oO8RnTA>n7P@YTgjrTL|DeyPOm ze155%Un-ZDs\n" +"Language-Team: LANGUAGE \n" +"Language: en-us\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Name of the company" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Address of the company" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Phone number of the company" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "Shows if the taxes are already included in product's selling prices" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Exchange rate API key" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!DO NOT CHANGE!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP host" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTP port" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Use TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Use SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "SMTP username" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "SMTP password" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Mail from option" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "How many days we store messages from anonymous users" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "How many days we store messages from authenticated users" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Disable buy functionality" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "OpenStreetMap Nominatim API URL" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI API Key" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Abstract API Key" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP Proxy" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "An entity for storing advertisiment data" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "An entity for storing analytics data" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Save responses from vendors' APIs" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Backup database" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Backup media" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Legal Options" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Email Options" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Features Options" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "SEO Options" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "System Options" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "My site" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Health" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Support" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menu" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Dashboard" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Config" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Periodic Tasks" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Taskboard" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Quick Links" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Users" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Groups" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Orders" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Products" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Categories" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Brands" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/es_ES/LC_MESSAGES/django.mo b/evibes/locale/es_ES/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..87c001aac53719d45de1b6edfc6faef29ffc0ec3 GIT binary patch literal 8728 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\n" +"Language-Team: LANGUAGE \n" +"Language: es-es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Nombre de la empresa" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Dirección de la empresa" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Número de teléfono de la empresa" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Tipo impositivo en la jurisdicción de su empresa. Deje 0 si no desea " +"procesar los impuestos." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "" +"Muestra si los impuestos ya están incluidos en los precios de venta del " +"producto" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Clave API de tipo de cambio" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!NO CAMBIES!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "Host SMTP" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "Puerto SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Utilizar TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Utilizar SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "Nombre de usuario SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "Contraseña SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Opción Correo de" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Cuántos días almacenamos los mensajes de usuarios anónimos" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Cuántos días almacenamos los mensajes de los usuarios autenticados" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Desactivar la función de compra" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "URL de la API Nominatim de OpenStreetMap" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "Clave API de OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Clave API abstracta" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "Proxy HTTP" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Una entidad para almacenar datos publicitarios" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Una entidad para almacenar datos analíticos" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Guardar las respuestas de las API de los proveedores" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Copia de seguridad de la base de datos" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Medios de copia de seguridad" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Opciones legales" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Opciones de correo electrónico" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Características Opciones" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "Opciones SEO" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Opciones del sistema" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Bienvenido a la documentación de eVibes.\n" +"\n" +"eVibes es una potente plataforma de comercio electrónico que le permite lanzar y gestionar una tienda en línea de cualquier tipo en tan sólo unos clics.\n" +"\n" +"## Características principales\n" +"- **Catálogo de productos:** Gestione los detalles de los productos, precios, inventario y disponibilidad en múltiples categorías.\n" +"- **Gestión de Pedidos:** Procesar pedidos, seguimiento de cumplimiento, y manejar las solicitudes de los clientes de manera eficiente.\n" +"- Autenticación y autorización:Autenticación de usuario integral con tokens JWT y permisos basados en roles.\n" +"- **Procesamiento de pagos:** Integre múltiples pasarelas de pago y gestione las transacciones de forma segura.\n" +"- **Blog y gestión de contenidos:** Crear y gestionar entradas de blog y contenido de marketing para su tienda.\n" +"- **Operaciones B2B:** Puntos finales dedicados para transacciones de empresa a empresa y gestión de ventas al por mayor.\n" +"- Soporte multilingüe:** Sirve a clientes de todo el mundo con capacidades de internacionalización completa (i18n).\n" +"- Integraciones personalizadas:** Arquitectura API extensible para la integración con plataformas y servicios externos.\n" +"- Análisis e informes:** Generación de informes detallados sobre ventas, inventario y comportamiento de los clientes.\n" +"- Actualizaciones en tiempo real:** Obtenga datos en tiempo real sobre los niveles de inventario, el estado de los pedidos y los cambios de precios.\n" +"\n" +"## API disponibles\n" +"- API REST:** Interfaz RESTful completa (esta documentación)\n" +"- API GraphQL:** Disponible en `/graphql/` con interfaz GraphiQL para consultas interactivas\n" +"\n" +"## Autenticación\n" +"- La autenticación se gestiona mediante tokens JWT. Incluya el token en la cabecera `X-EVIBES-AUTH` de sus peticiones con el formato `Bearer `.\n" +"- La duración del token de acceso es {access_lifetime} {access_unit}.\n" +"- La duración del token de actualización es de {refresh_hours} horas.\n" +"- Los tokens de actualización se rotan automáticamente y se invalidan después de su uso para mejorar la seguridad.\n" +"\n" +"## Internacionalización (i18n)\n" +"- Establezca la cabecera `Accept-Language` para especificar su idioma preferido (por ejemplo, `Accept-Language: en-US`).\n" +"- Los idiomas disponibles pueden recuperarse desde el punto final `/app/languages/`.\n" +"- Todos los contenidos orientados al usuario son compatibles con varios idiomas.\n" +"\n" +"## Formatos de respuesta\n" +"La API admite varios formatos de respuesta:\n" +"- JSON** (por defecto, con formato camelCase)\n" +"- XML** (añada `?format=xml` o establezca `Accept: application/xml`)\n" +"- YAML** (añada `?format=yaml` o establezca `Accept: application/x-yaml`)\n" +"\n" +"## Salud y supervisión\n" +"- Comprobaciones de salud: `/health/`\n" +"- Métricas de Prometheus: `/prometheus/metrics/`\n" +"\n" +"## Versión\n" +"Versión actual de la API: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Mi sitio" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Salud" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Ayuda" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menú" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Cuadro de mandos" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Configurar" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Tareas periódicas" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Taskboard" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Enlaces rápidos" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Usuarios" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Grupos" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Pedidos" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Productos" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Categorías" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Marcas" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/fa_IR/LC_MESSAGES/django.mo b/evibes/locale/fa_IR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..6c5906d1cd061dff54de8b533942893de34efc9e GIT binary patch literal 337 zcmYL@Jx{|h5Qd9j%E-dP;DHUUz!pqFHI3Uw*h!U-O0b#M1fyU_j*H-j@b~yFTo(FD zk8Zg4bkFbc(a#8TfSe*{$RTop42h8wT;AXuI{#UD_pUbq(k-mD?~SvRtk~?4EjU^8 zqD=EFDs<<30NFQY3lF=dhsseBt#T;zrx|V_Q9)Dk#909{hlG)3PGx%joM$`|st-_k zW&2hI=P8-jLXeC}P9|KkR7_ct6ud0&v1*&0YBW?@eNZA;wx|b_i4fD)jGb@x9W;=s z, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "" + diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.mo b/evibes/locale/fr_FR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..76dfaf962b8a200c766d6ee8fccc4a807fa9c105 GIT binary patch literal 8974 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 literal 0 HcmV?d00001 diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.po b/evibes/locale/fr_FR/LC_MESSAGES/django.po new file mode 100644 index 00000000..1b38ebf5 --- /dev/null +++ b/evibes/locale/fr_FR/LC_MESSAGES/django.po @@ -0,0 +1,304 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: fr-fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Nom de l'entreprise" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Adresse de l'entreprise" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Numéro de téléphone de l'entreprise" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Taux d'imposition dans la juridiction de votre entreprise. Laissez 0 si vous" +" ne souhaitez pas traiter les taxes." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "" +"Indique si les taxes sont déjà incluses dans le prix de vente du produit." + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Clé API pour le taux de change" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!NE PAS CHANGER !!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "Hôte SMTP" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTP port" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Utiliser TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Use SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "Nom d'utilisateur SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "Mot de passe SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Option Courrier de" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "" +"Pendant combien de jours les messages des utilisateurs anonymes sont-ils " +"conservés ?" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "" +"Pendant combien de jours les messages des utilisateurs authentifiés sont-ils" +" conservés ?" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Désactiver la fonctionnalité d'achat" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "URL de l'API OpenStreetMap Nominatim" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI API Key" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Clé API abstraite" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP Proxy" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Une entité pour stocker des données publicitaires" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Une entité pour stocker des données analytiques" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Sauvegarder les réponses des API des fournisseurs" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Sauvegarde de la base de données" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Supports de sauvegarde" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Options juridiques" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Options de courrier électronique" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Caractéristiques Options" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "Options de référencement" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Options du système" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Bienvenue dans la documentation d'eVibes.\n" +"\n" +"eVibes est une puissante plateforme de commerce électronique qui vous permet de lancer et de gérer une boutique en ligne de tout type en quelques clics.\n" +"\n" +"## Fonctionnalités principales\n" +"- Catalogue de produits:** Gérer les détails des produits, les prix, l'inventaire et la disponibilité à travers plusieurs catégories.\n" +"- Gestion des commandes:** Traiter les commandes, suivre l'exécution et traiter les demandes des clients de manière efficace.\n" +"- Authentification et autorisation:** Authentification complète des utilisateurs avec des jetons JWT et des autorisations basées sur les rôles.\n" +"- Traitement des paiements:** Intégration de plusieurs passerelles de paiement et gestion sécurisée des transactions.\n" +"- Gestion de blog et de contenu:** Créez et gérez des articles de blog et du contenu marketing pour votre boutique.\n" +"- Opérations B2B:** Points d'accès dédiés aux transactions interentreprises et à la gestion des ventes en gros.\n" +"- Support multilingue:** Servez vos clients dans le monde entier grâce à des capacités d'internationalisation complètes (i18n).\n" +"- Intégrations personnalisées:** Architecture API extensible pour l'intégration avec des plateformes et des services externes.\n" +"- Analyses et rapports:** Générer des rapports détaillés sur les ventes, les stocks et le comportement des clients.\n" +"- Mises à jour en temps réel:** Obtenez des données en direct sur les niveaux de stock, les statuts des commandes et les changements de prix.\n" +"\n" +"## API disponibles\n" +"- API REST:** Interface RESTful complète (cette documentation)\n" +"- API GraphQL:** Disponible sur `/graphql/` avec l'interface GraphiQL pour les requêtes interactives.\n" +"\n" +"## Authentification\n" +"- L'authentification est gérée par des jetons JWT. Incluez le jeton dans l'en-tête `X-EVIBES-AUTH` de vos requêtes au format `Bearer `.\n" +"- La durée de vie du jeton d'accès est de {access_lifetime} {access_unit}.\n" +"- La durée de vie du jeton de rafraîchissement est de {refresh_hours} heures.\n" +"- Les jetons de rafraîchissement font l'objet d'une rotation automatique et sont invalidés après utilisation pour une meilleure sécurité.\n" +"\n" +"## Internationalisation (i18n)\n" +"- Définissez l'en-tête `Accept-Language` pour spécifier votre langue préférée (par exemple, `Accept-Language : en-US`).\n" +"- Les langues disponibles peuvent être récupérées à partir du point de terminaison `/app/languages/`.\n" +"- Tous les contenus destinés à l'utilisateur supportent d'emblée plusieurs langues.\n" +"\n" +"## Formats de réponse\n" +"L'API prend en charge plusieurs formats de réponse :\n" +"- **JSON** (par défaut, formaté en camelCase)\n" +"- **XML** (ajoutez `?format=xml` ou définissez `Accept : application/xml`)\n" +"- **YAML** (ajouter `?format=yaml` ou définir `Accept : application/x-yaml`)\n" +"\n" +"## Santé et surveillance\n" +"- Contrôles de santé : `/health/`\n" +"- Métriques Prometheus : `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Version actuelle de l'API : {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Mon site" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Santé" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Soutien" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menu" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Config" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Tâches périodiques" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Tableau des tâches" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Liens rapides" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Utilisateurs" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Groupes" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Commandes" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Produits" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Catégories" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Marques" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/he_IL/LC_MESSAGES/django.mo b/evibes/locale/he_IL/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..95796a31c617ffb1921534944e93b507d974e5e1 GIT binary patch literal 9345 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\n" +"Language-Team: LANGUAGE \n" +"Language: he-il\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "שם החברה" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "כתובת החברה" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "מספר הטלפון של החברה" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"שיעור המס בתחום השיפוט של החברה שלך. השאר 0 אם אינך מעוניין לעבד מסים." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "מציג אם המסים כבר כלולים במחיר המכירה של המוצר." + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "מפתח API לשער החליפין" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!אין לשנות!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "מארח SMTP" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "יציאת SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "השתמש ב-TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "השתמש ב-SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "שם משתמש SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "סיסמת SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "דואר מאפשרות" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "כמה ימים אנו שומרים הודעות ממשתמשים אנונימיים" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "כמה ימים אנו שומרים הודעות ממשתמשים מאומתים" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "השבת פונקציונליות הרכישה" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "כתובת ה-API של OpenStreetMap Nominatim" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "מפתח API של OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "מפתח API מופשט" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "פרוקסי HTTP" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "ישות לאחסון נתוני פרסום" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "ישות לאחסון נתוני ניתוח" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "שמור תגובות מ-API של ספקים" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "גיבוי מסד נתונים" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "מדיה גיבוי" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "אפשרויות משפטיות" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "אפשרויות דוא\"ל" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "אפשרויות תכונות" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "אפשרויות SEO" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "אפשרויות מערכת" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\nברוכים הבאים לתיעוד של eVibes. eVibes היא פלטפורמת מסחר אלקטרוני עוצמתית המאפשרת לכם להקים ולנהל חנות מקוונת מכל סוג שהוא בכמה לחיצות בלבד. ## תכונות עיקריות - **קטלוג מוצרים:** ניהול פרטי מוצרים, מחירים, מלאי וזמינות בקטגוריות מרובות. - **ניהול הזמנות:** עיבוד הזמנות, מעקב אחר ביצוען וטיפול יעיל בבקשות לקוחות.\n" +"- **אימות ואישור:** אימות משתמשים מקיף באמצעות אסימוני JWT והרשאות מבוססות תפקידים. - **עיבוד תשלומים:** שלבו מספר שערי תשלום ונהלו עסקאות בצורה מאובטחת. - **ניהול בלוג ותוכן:** צרו ונהלו פוסטים בבלוג ותוכן שיווקי לחנות שלכם. - **פעולות B2B:** נקודות קצה ייעודיות לעסקאות בין עסקים וניהול סיטונאי.\n" +"- **תמיכה בריבוי שפות:** שירות ללקוחות ברחבי העולם עם יכולות בינלאומיות מלאות (i18n). - **אינטגרציות מותאמות אישית:** ארכיטקטורת API ניתנת להרחבה לשילוב עם פלטפורמות ושירותים חיצוניים. - **ניתוח ודיווח:** יצירת דוחות מפורטים על מכירות, מלאי והתנהגות לקוחות. - **עדכונים בזמן אמת:** קבלת נתונים בזמן אמת על רמות המלאי, סטטוס ההזמנות ושינויים במחירים.\n" +"\n" +"## ממשקי API זמינים - **REST API:** ממשק RESTful מלא (תיעוד זה) - **GraphQL API:** זמין ב-`/graphql/` עם ממשק GraphiQL לשאילתות אינטראקטיביות ## אימות - האימות מתבצע באמצעות אסימוני JWT. כלול את האסימון בכותרת `X-EVIBES-AUTH` של בקשותיך בפורמט `Bearer `.\n" +"- אורך חיי אסימון הגישה הוא {access_lifetime} {access_unit}. - אורך חיי אסימון הרענון הוא {refresh_hours} שעות. - אסימוני הרענון מסתובבים באופן אוטומטי ומבוטלים לאחר השימוש לשם אבטחה משופרת. ## בינלאומיות (i18n) - הגדר את הכותרת `Accept-Language` כדי לציין את השפה המועדפת עליך (לדוגמה, `Accept-Language: en-US`).\n" +"- ניתן לאחזר את השפות הזמינות מנקודת הקצה `/app/languages/`. - כל התוכן המוצג למשתמש תומך במספר שפות באופן מובנה. ## פורמטים של תגובה ה-API תומך במספר פורמטים של תגובה: - **JSON** (ברירת מחדל, בפורמט camelCase) - **XML** (הוסף `?format=xml` או הגדר `Accept: application/xml`)\n" +"- **YAML** (הוסף `?format=yaml` או הגדר `Accept: application/x-yaml`) ## תקינות וניטור - בדיקות תקינות: `/health/` - מדדי Prometheus: `/prometheus/metrics/` ## גרסה גרסת ה-API הנוכחית: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "האתר שלי" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "בריאות" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "תמיכה" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "תפריט" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "לוח מחוונים" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "תצורה" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "משימות תקופתיות" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "לוח משימות" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "קישורים מהירים" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "משתמשים" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "קבוצות" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "הזמנות" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "מוצרים" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "קטגוריות" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "מותגים" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "פוסטים בבלוג" diff --git a/evibes/locale/hi_IN/LC_MESSAGES/django.mo b/evibes/locale/hi_IN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..6c5906d1cd061dff54de8b533942893de34efc9e GIT binary patch literal 337 zcmYL@Jx{|h5Qd9j%E-dP;DHUUz!pqFHI3Uw*h!U-O0b#M1fyU_j*H-j@b~yFTo(FD zk8Zg4bkFbc(a#8TfSe*{$RTop42h8wT;AXuI{#UD_pUbq(k-mD?~SvRtk~?4EjU^8 zqD=EFDs<<30NFQY3lF=dhsseBt#T;zrx|V_Q9)Dk#909{hlG)3PGx%joM$`|st-_k zW&2hI=P8-jLXeC}P9|KkR7_ct6ud0&v1*&0YBW?@eNZA;wx|b_i4fD)jGb@x9W;=s z, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "" + diff --git a/evibes/locale/hr_HR/LC_MESSAGES/django.mo b/evibes/locale/hr_HR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..6c5906d1cd061dff54de8b533942893de34efc9e GIT binary patch literal 337 zcmYL@Jx{|h5Qd9j%E-dP;DHUUz!pqFHI3Uw*h!U-O0b#M1fyU_j*H-j@b~yFTo(FD zk8Zg4bkFbc(a#8TfSe*{$RTop42h8wT;AXuI{#UD_pUbq(k-mD?~SvRtk~?4EjU^8 zqD=EFDs<<30NFQY3lF=dhsseBt#T;zrx|V_Q9)Dk#909{hlG)3PGx%joM$`|st-_k zW&2hI=P8-jLXeC}P9|KkR7_ct6ud0&v1*&0YBW?@eNZA;wx|b_i4fD)jGb@x9W;=s z, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "" + diff --git a/evibes/locale/id_ID/LC_MESSAGES/django.mo b/evibes/locale/id_ID/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..195889a8da2250e94e84ffb59dd99e8c1323cc84 GIT binary patch literal 8283 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 F{{z2pB-sD} literal 0 HcmV?d00001 diff --git a/evibes/locale/id_ID/LC_MESSAGES/django.po b/evibes/locale/id_ID/LC_MESSAGES/django.po new file mode 100644 index 00000000..be12ee27 --- /dev/null +++ b/evibes/locale/id_ID/LC_MESSAGES/django.po @@ -0,0 +1,299 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: id-id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Nama perusahaan" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Alamat perusahaan" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Nomor telepon perusahaan" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Tarif pajak dalam yurisdiksi perusahaan Anda. Biarkan 0 jika Anda tidak " +"ingin memproses pajak." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "Menunjukkan apakah pajak sudah termasuk dalam harga jual produk" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Kunci API nilai tukar" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!JANGAN BERUBAH!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "Host SMTP" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "Port SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Gunakan TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Gunakan SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "Nama pengguna SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "Kata sandi SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Opsi Mail from (Surat dari)" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Berapa hari kami menyimpan pesan dari pengguna anonim" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Berapa hari kami menyimpan pesan dari pengguna yang diautentikasi" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Menonaktifkan fungsionalitas beli" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "URL API OpenStreetMap Nominatim" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "Kunci API OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Kunci API Abstrak" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "Proksi HTTP" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Entitas untuk menyimpan data iklan" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Entitas untuk menyimpan data analitik" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Menyimpan tanggapan dari API vendor" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Mencadangkan basis data" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Media cadangan" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Opsi Hukum" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Opsi Email" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Opsi Fitur" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "Opsi SEO" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Opsi Sistem" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Selamat datang di dokumentasi eVibes.\n" +"\n" +"eVibes adalah platform e-commerce yang kuat yang memungkinkan Anda untuk meluncurkan dan mengelola toko online dalam bentuk apa pun hanya dengan beberapa klik.\n" +"\n" +"## Fitur Utama\n" +"- Katalog Produk:** Kelola detail produk, harga, inventaris, dan ketersediaan di berbagai kategori.\n" +"- Manajemen Pesanan:** Memproses pesanan, melacak pemenuhan pesanan, dan menangani permintaan pelanggan secara efisien.\n" +"- Autentikasi & Otorisasi:** Autentikasi pengguna yang komprehensif dengan token JWT dan izin berbasis peran.\n" +"- Pemrosesan Pembayaran:** Mengintegrasikan beberapa gateway pembayaran dan mengelola transaksi dengan aman.\n" +"- Manajemen Blog & Konten:** Buat dan kelola posting blog dan konten pemasaran untuk toko Anda.\n" +"- ** Operasi B2B:** Titik akhir khusus untuk transaksi bisnis-ke-bisnis dan manajemen grosir.\n" +"- Dukungan Multi-bahasa:** Melayani pelanggan di seluruh dunia dengan kemampuan internasionalisasi penuh (i18n).\n" +"- Integrasi Khusus:** Arsitektur API yang dapat diperluas untuk berintegrasi dengan platform dan layanan eksternal.\n" +"- Analisis & Pelaporan:** Menghasilkan laporan terperinci tentang penjualan, inventaris, dan perilaku pelanggan.\n" +"- **Pembaruan Waktu Nyata:** Dapatkan data langsung tentang tingkat inventaris, status pesanan, dan perubahan harga.\n" +"\n" +"## API yang tersedia\n" +"- **REST API:** Antarmuka RESTful penuh (dokumentasi ini)\n" +"- API GraphQL:** Tersedia di `/graphql/` dengan antarmuka GraphiQL untuk kueri interaktif\n" +"\n" +"## Otentikasi\n" +"- Otentikasi ditangani melalui token JWT. Sertakan token di header `X-EVIBES-AUTH` pada permintaan Anda dalam format `Bearer `.\n" +"- Masa berlaku token akses adalah {access_lifetime} {access_unit}.\n" +"- Masa berlaku token refresh adalah {refresh_hours} jam.\n" +"- Refresh token secara otomatis dirotasi dan dibatalkan setelah digunakan untuk meningkatkan keamanan.\n" +"\n" +"## Internasionalisasi (i18n)\n" +"- Atur header `Accept-Language` untuk menentukan bahasa yang Anda inginkan (misalnya, `Accept-Language: en-US`).\n" +"- Bahasa yang tersedia dapat diambil dari titik akhir `/app/languages/`.\n" +"- Semua konten yang berhadapan dengan pengguna mendukung beberapa bahasa secara langsung.\n" +"\n" +"Format Tanggapan ## Format Tanggapan\n" +"API mendukung beberapa format respons:\n" +"- **JSON** (default, berformat camelCase)\n" +"- **XML** (tambahkan `?format=xml` atau setel `Accept: application/xml`)\n" +"- **YAML** (tambahkan `?format=yaml` atau setel `Accept: application/x-yaml`)\n" +"\n" +"## Kesehatan & Pemantauan\n" +"- Pemeriksaan kesehatan: `/health/`\n" +"- Metrik Prometheus: `/prometheus/metrics/`\n" +"\n" +"## Versi\n" +"Versi API saat ini: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Situs saya" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Kesehatan" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Dukungan" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menu" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Dasbor" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Konfigurasi" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Tugas Berkala" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Papan tugas" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Tautan Cepat" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Pengguna" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Grup" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Pesanan" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Produk" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Kategori" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Merek" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Posting blog" diff --git a/evibes/locale/it_IT/LC_MESSAGES/django.mo b/evibes/locale/it_IT/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..e520e7fbed98c20a68354c5332504e73f62c16c5 GIT binary patch literal 8661 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\n" +"Language-Team: LANGUAGE \n" +"Language: it-it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Nome della società" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Indirizzo dell'azienda" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Numero di telefono dell'azienda" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Aliquota fiscale nella giurisdizione della vostra azienda. Lasciare 0 se non" +" si desidera elaborare le imposte." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "" +"Mostra se le tasse sono già incluse nel prezzo di vendita del prodotto." + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Chiave API del tasso di cambio" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!! NON CAMBIARE!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "Host SMTP" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "Porta SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Utilizzare TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Utilizzare SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "Nome utente SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "Password SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Opzione Posta da" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Per quanti giorni conserviamo i messaggi degli utenti anonimi" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Per quanti giorni conserviamo i messaggi degli utenti autenticati" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Disattivare la funzionalità di acquisto" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "URL dell'API OpenStreetMap Nominatim" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "Chiave API OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Chiave API astratta" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "Proxy HTTP" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Un'entità per la memorizzazione dei dati pubblicitari" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Un'entità per la memorizzazione dei dati analitici" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Salvare le risposte dalle API dei fornitori" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Database di backup" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Supporti di backup" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Opzioni legali" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Opzioni e-mail" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Caratteristiche Opzioni" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "Opzioni SEO" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Opzioni di sistema" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Benvenuti nella documentazione di eVibes.\n" +"\n" +"eVibes è una potente piattaforma di e-commerce che consente di lanciare e gestire un negozio online di qualsiasi tipo in pochi clic.\n" +"\n" +"## Caratteristiche principali\n" +"- **Catalogo dei prodotti:** Gestione dei dettagli dei prodotti, dei prezzi, delle scorte e della disponibilità di più categorie.\n" +"- Gestione degli ordini:** Elaborazione degli ordini, monitoraggio dell'evasione e gestione efficiente delle richieste dei clienti.\n" +"- Autenticazione e autorizzazione:** Autenticazione completa degli utenti con token JWT e autorizzazioni basate sui ruoli.\n" +"- Elaborazione dei pagamenti:** Integrazione di più gateway di pagamento e gestione sicura delle transazioni.\n" +"- Gestione di blog e contenuti:** Creazione e gestione di post sul blog e di contenuti di marketing per il vostro negozio.\n" +"- Operazioni B2B:** Endpoint dedicati per le transazioni business-to-business e la gestione della vendita all'ingrosso.\n" +"- Supporto multilingue:** Servite i clienti in tutto il mondo con funzionalità di internazionalizzazione completa (i18n).\n" +"- Integrazioni personalizzate:** Architettura API estensibile per l'integrazione con piattaforme e servizi esterni.\n" +"- **Analitica e reportistica:** Generazione di report dettagliati su vendite, inventario e comportamento dei clienti.\n" +"- Aggiornamenti in tempo reale:** Ottenete dati in tempo reale sui livelli di inventario, sullo stato degli ordini e sulle modifiche dei prezzi.\n" +"\n" +"## API disponibili\n" +"- API REST:** Interfaccia REST completa (questa documentazione)\n" +"- API **GraphQL:** Disponibile su `/graphql/` con interfaccia GraphiQL per le query interattive.\n" +"\n" +"## Autenticazione\n" +"- L'autenticazione è gestita tramite token JWT. Includere il token nell'intestazione `X-EVIBES-AUTH` delle richieste nel formato `Bearer `.\n" +"- La durata di vita del token di accesso è {access_lifetime} {access_unit}.\n" +"- La durata del token di aggiornamento è di {refresh_hours} ore.\n" +"- I token di aggiornamento vengono ruotati e invalidati automaticamente dopo l'uso per una maggiore sicurezza.\n" +"\n" +"## Internazionalizzazione (i18n)\n" +"- Impostare l'intestazione `Accept-Language` per specificare la lingua preferita (ad esempio, `Accept-Language: en-US`).\n" +"- Le lingue disponibili possono essere recuperate dall'endpoint `/app/languages/`.\n" +"- Tutti i contenuti rivolti all'utente supportano immediatamente più lingue.\n" +"\n" +"## Formati di risposta\n" +"L'API supporta diversi formati di risposta:\n" +"- **JSON** (predefinito, formattato in camelCase)\n" +"- **XML** (aggiungere `?format=xml` o impostare `Accept: application/xml`)\n" +"- **YAML** (aggiungere `?format=yaml` o impostare `Accept: application/x-yaml`)\n" +"\n" +"## Salute e monitoraggio\n" +"- Controlli sulla salute: `/salute/`\n" +"- Metriche di Prometheus: `/prometheus/metriche/`\n" +"\n" +"## Versione\n" +"Versione attuale dell'API: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Il mio sito" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Salute" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Supporto" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menu" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Cruscotto" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Configurazione" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Compiti periodici" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Lavagna" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Collegamenti rapidi" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Utenti" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Gruppi" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Ordini" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Prodotti" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Categorie" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Marche" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/ja_JP/LC_MESSAGES/django.mo b/evibes/locale/ja_JP/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..5b876074eec05df5cc61b21568e69536438fea91 GIT binary patch literal 9133 zcmb7||8o@gdB@jI+NMg|v}u#HP1<}YtqlqXwx=`2vPmq2_>xEnBjLpDOwHJ2!Tk{^tgN%puR*UvMc&V$vi}pP?Ejzm`cvrNbNwsma_Az2%YGXw`#dPBTRWh? z2Yn4HcI=0;#TtWt8+sKg{C^SO|4-;QxvoOL1brN4Uxt1;rr&^yT??TiFBM-u7hktS z7jVBDD*h}&MgDE5$o&_n?EeLH6ZDh#`BQ&l)-8wr4)6|>4ov2)Pz(~in#?LwdD55mJPC_9_=h5|M0 z6@_iqF6Pn$%Fbofpq;b(9eye=mvwWF3JRX@D6fxO!)lAm5;vz_Ee7yVea?_dXWjIc z00kB#@A&NIqWJ&)p$=*l>=6isiY$PK(xo z3Y;`yN^Dw5bg-n&gCk;0kP;8J`NULmqLv=LvOMpJd(2&bi&H=;m5v#ZX_8#NNgw04 zmCvkHU09~w6o~$-oQ!x8gPmL^@3}en$Q|Q+;imcnktPv} zYg(l#u70sWK%&(Yv~i4qiH+^uJ>n*D+-eDd+z|ZIq3E-LuSJCcpluH5E!HK!#<%kW zFLor`>)b)P&C76ce&EO1Wt)wY^hu)1DquoEvA$QDah zI=0WU=Vj3=n&EdhOTb#w8r+PCtlLK!5;_$7sjZ*9lHA)~yHm`$h3&F;qtgda55)Q< z3-xB-JbGmSalv+_$pc%+P_h|h^H7mO&Sr;|?~wtdpM;+zp@1Zbxb7ppfkLTAak-Pj zb7>xE90J=-a;$rF?V)ftX($feELP_WsgAh9YhI+61$ig!_6-|vg2H`{?<1xL28*1f z{Y#fTz@i0>Qk%LrFV;@2rD(D(pz?E63T0IwJ+{KJ&-bL6qRlcppI=s6Nvo5kWOeP4WaS zxURYR``umZsjo#Dr_Tl-mtfJLlWn8lNI-}nVKOE4qs|UlXlF8N^Y_fN725{0o2hZa zMKT)qwn>~^MSRtr)PsiVcW1};$*G$hNLwQqcelZP%=vn;woT(RxcG~=e*qT zphwuGN?`L_ZK?w^m1s70IQ?|bME6cHL<{h=HCCsSD_WhyDxeKp>q-6j(PA{owXV~N zATgE8?tmL4?&YXjZFV~SBdcCdxZ0gstER~+m$m@Xxp zqyxT@VK}f}EHW~y4mZb!?)I*l&fT4OaDb`G(!cU{5HO!);wzfH`6cG&Fu>}z=~qdy z$L?fy&Uk+Cr05Cv0h#h$la>X08&21don@lS3${4171h9eOfOdRpv&rK-abjh_;Q-`KsbYkiX$ zj8dIJzne*|EcOSf9S$3fx3_Lgb#|pzwW_sUEuHJW^N(HY z+nYMsqw`qs{N^?ZA0>$;8?T34-NKT&GB7S#bj zY!XeL@920T>n`>D{`#60^{SnEHQ&^^uCu+a`_oIGYKn*MRL^i8r3ws!%Q&pLx#whV z@&Vixn|fBKme<#bZnU*jdoE4taTHL?d)-3QhHTMic3TaYgMGQYz6@48^Bg0kJXx_Q zrxvVGPcMG1$x4okVQC_)>|VB+)+-BmtpBj zxT91(d^Idz2`d-FN=1H@&WELPScc86uskv|K5>8SU13~i0sJn6^6^(Z7x|H?LMb%J}P{!ot+&+=%LwrQ?ob6!jjy)KXyKvcpoKa z&y}jz@b95$-|d;#ch4N(iK_MOqH`=u4wTwE_>1^l4@=`>w73a7kHvm0O;pD(+&^|u z3?|H&I{I35FSi~DECF}RE)Yc8u^yHmZzt`9U@ew+)-=Ox0}|KYXh zAbBI&Yc+@vVgE>!Dc=k$=k?{GXku^l+Bni5>aVbJ!~`m=e5}Jy2JDiJm7O&wVr0B% zcKq$>J0oFvXObq@bUaUMNn|P8>ibb~dg^3#&p}uxvUSQexKIwMI&qJOm7i%(#EMJa zOiz}oXD{DB@@914NHlpE_eT3~MW;VVm`zCbluN`cx>}xjYdkFDf8_5CEAPZbK<;XP zHaACSj?a$on7#OJSpHC+OO*B?C7Kx3?ztG9n7V)bL^OKjv&lUTzxSHtChezh9ho^i zI(_Rh0+VbZq;P}Pn^H36L)8NZr|(irb8=GG15YW5QzmF4_so&|74&^XmEqz>&ZY4r z+Q-PCn%&irv1szc=)e`qk2<6YNx`F!APj{@R+1X0jSr$dyQ=RV{A`l&;_3zuoc=(d zp`p->b<{{Sg4ZwIKSEuI+_*MNq-~vpWa3-zNtowZO^u5(8VdxHPE}9bs2;ic+2nDo zH#IG6s1qsfxNuEzC)FRF*~_Lz6%u?SA$My-?;&6E<1Q|5@VX40(Vh!rMWc79tmfv% z<8Lkc@ew$|PC`XcK|P8{&~TB)=7)gyLr=wx2VoLtt{&&b(^u}!Ubq%RfRrnV03y~C zTGfuukJ3nBQ`*2t0>uVC1Un3ll&*kJ8W(EtbY8>Wfv_xy%RUimq?=|@no#r4%VFhh z-2--rA4-=Velk{qd?j#lS2Xp0GJOS8K#Qg5c;Bz=Th#fb@+ zWz4_^sPe3ewgN6ggaC0MsBJ_(|1QW3C`nLJIyN-(zywLF~;4}m4}?&b?QHW*(G|+-lVGM_YBdmbX(^V z1zGQ((ZM&u(i`)ekRGA*7U{qZUEok-BX|HiBw-{Ufk`t;)g~b3BbkYs1Z+!JYK{6g zZUCnqkVrXDH8N3vio_~;X`sQ)NMw?rhcWMvN%UD}Mk% zBgMF!vkZ=$o*w?9Bdjp)5Sv?O{%V>zaF<>O8%dYB&k*=)p3ZqKLLUrEd+6{wUnmH{ zaI3m+YWCWgZu%%aX-&iM%-!j!1J%7dtmsZ9dShQ>mz=)$PIUS0IR4Uc^r%)QsRWxW zGah`74fUm!V{tx;x3FJ_LwY}ja@2b8mPTN_x*NH`KP%?Um*!eevz5KpoI?XvCIwD; zu=y&BcZ4F*K>JD2gk7`OC!^QS#!`Algdwkv>g^=bb!(=4r+R{H z)6-~WPu;r-uer<7K$wWoqxzkUFq4xHe>bhDbT+yJ8NC-B+~0^*p+>kQyU?DNq_d_p zVZu~BdX_VjmGp9h^zZ#vEM)9H%zj$doRF7Btm<{$U*?%S&joXJ6CdGYqBWv>=cF}r zUPf-gGMVc3#A%0tR{fohhO0?^25 zOouN<2X0!kr>8h*&fK^?{qYDHL9ay>+-Q!;Aodk`)icj9{XQqGoX{AtC%&R#fEeu4 zX(MlfYO`^?qOrs5#}yIaPGgJ0\n" +"Language-Team: LANGUAGE \n" +"Language: ja-jp\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "会社名" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "会社住所" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "会社の電話番号" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "貴社管轄の税率。税務処理を行わない場合は「0」のままにしてください。" + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "商品の販売価格に税金が含まれているかどうかを表示します。" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "為替レートAPIキー" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "変えないでくれ" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTPホスト" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTPポート" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "TLSを使用する" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "SSLの使用" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "SMTPユーザー名" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "SMTPパスワード" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "オプションからのメール" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "匿名ユーザーからのメッセージの保存日数" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "認証されたユーザーからのメッセージを何日間保存するか" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "購入機能を無効にする" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "OpenStreetMap Nominatim API URL" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI APIキー" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "抽象APIキー" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTPプロキシ" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "広告データを保存するエンティティ" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "分析データを保存するエンティティ" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "ベンダーのAPIからの応答を保存する" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "データベースのバックアップ" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "バックアップ・メディア" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "法的オプション" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Eメールオプション" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "機能オプション" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "SEOオプション" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "システムオプション" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"eVibes のドキュメントへようこそ。\n" +"\n" +"eVibesは、数クリックであらゆる種類のオンラインストアを立ち上げ、管理できる強力なeコマースプラットフォームです。\n" +"\n" +"## 主な機能\n" +"- 商品カタログ:** 複数のカテゴリにまたがる商品の詳細、価格、在庫、在庫状況を管理します。\n" +"- 注文管理:**注文を処理し、履行を追跡し、顧客の要求を効率的に処理します。\n" +"- JWT トークンとロールベースの権限による包括的なユーザー認証。\n" +"- 複数の決済ゲートウェイを統合し、トランザクションを安全に管理します。\n" +"- ブログ・コンテンツ管理:** ブログ記事やマーケティングコンテンツを作成・管理できます。\n" +"- B2B オペレーション:** 企業間取引と卸売管理のための専用エンドポイント。\n" +"- **多言語サポート:**完全な国際化(国際化)機能で世界中の顧客にサービスを提供します。\n" +"- カスタム統合:**外部プラットフォームやサービスと統合するための拡張可能なAPIアーキテクチャ。\n" +"- 分析&レポート:**売上、在庫、顧客行動に関する詳細なレポートを生成します。\n" +"- リアルタイム更新:**在庫レベル、注文状況、価格変更に関するライブデータを取得します。\n" +"\n" +"## 利用可能なAPI\n" +"- **REST API:** 完全なRESTfulインターフェース(このドキュメント)\n" +"- **GraphQL API:** `/graphql/` で利用可能で、対話的なクエリのための GraphiQL インターフェースがある。\n" +"\n" +"## 認証\n" +"- 認証はJWTトークンで行われる。リクエストの `X-EVIBES-AUTH` ヘッダーに `Bearer ` という形式でトークンを含めてください。\n" +"- アクセストークンの有効期限は {access_lifetime} です。{access_unit}です。\n" +"- リフレッシュ・トークンの有効期限は {refresh_hours} 時間です。\n" +"- リフレッシュ・トークンはセキュリティ強化のため、使用後に自動的にローテーションされ無効化されます。\n" +"\n" +"## 国際化 (i18n)\n" +"- Accept-Language`ヘッダを設定して、希望する言語を指定する (例: `Accept-Language: en-US`) 。\n" +"- 利用可能な言語は `/app/languages/` エンドポイントから取得できます。\n" +"- すべてのユーザー向けコンテンツは、すぐに多言語をサポートします。\n" +"\n" +"## レスポンスフォーマット\n" +"APIは複数のレスポンスフォーマットをサポートしています:\n" +"- JSON** (デフォルト、キャメルケースフォーマット)\n" +"- XML** (`?format=xml` を追加するか、`Accept: application/xml` を設定する)\n" +"- YAML** (`?format=yaml` を追加するか、`Accept: application/x-yaml` を設定してください)\n" +"\n" +"## ヘルス&モニタリング\n" +"- ヘルスチェックヘルスチェック: `/health/`\n" +"- Prometheus メトリクス:プロメテウスのメトリクス: `/prometheus/metrics/`\n" +"\n" +"## バージョン\n" +"現在のAPIバージョン:現在のAPIバージョン: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "私のサイト" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "健康" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "サポート" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "メニュー" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "ダッシュボード" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "コンフィグ" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "定期的なタスク" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "タスクボード" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "クイックリンク" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "ユーザー" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "グループ" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "受注状況" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "製品紹介" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "カテゴリー" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "ブランド" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "ブログ記事" diff --git a/evibes/locale/kk_KZ/LC_MESSAGES/django.mo b/evibes/locale/kk_KZ/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..6c5906d1cd061dff54de8b533942893de34efc9e GIT binary patch literal 337 zcmYL@Jx{|h5Qd9j%E-dP;DHUUz!pqFHI3Uw*h!U-O0b#M1fyU_j*H-j@b~yFTo(FD zk8Zg4bkFbc(a#8TfSe*{$RTop42h8wT;AXuI{#UD_pUbq(k-mD?~SvRtk~?4EjU^8 zqD=EFDs<<30NFQY3lF=dhsseBt#T;zrx|V_Q9)Dk#909{hlG)3PGx%joM$`|st-_k zW&2hI=P8-jLXeC}P9|KkR7_ct6ud0&v1*&0YBW?@eNZA;wx|b_i4fD)jGb@x9W;=s z, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "" + diff --git a/evibes/locale/ko_KR/LC_MESSAGES/django.mo b/evibes/locale/ko_KR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..0962bbafa32b4297bc4ae2f31de42206ccdc4af5 GIT binary patch literal 8481 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 literal 0 HcmV?d00001 diff --git a/evibes/locale/ko_KR/LC_MESSAGES/django.po b/evibes/locale/ko_KR/LC_MESSAGES/django.po new file mode 100644 index 00000000..aacd1361 --- /dev/null +++ b/evibes/locale/ko_KR/LC_MESSAGES/django.po @@ -0,0 +1,297 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: ko-kr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "회사 이름" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "회사 주소" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "회사 전화번호" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "회사 관할 지역의 세율입니다. 세금을 처리하지 않으려면 0을 그대로 둡니다." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "제품 판매 가격에 세금이 이미 포함되어 있는지 표시합니다." + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "환율 API 키" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!변경하지 마세요!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP 호스트" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTP 포트" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "TLS 사용" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "SSL 사용" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "SMTP 사용자 이름" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "SMTP 비밀번호" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "메일 발신자 옵션" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "익명 사용자의 메시지를 보관하는 일수" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "인증된 사용자의 메시지를 보관하는 일수" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "구매 기능 비활성화" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "오픈스트리트맵 노미나팀 API URL" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI API 키" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "추상 API 키" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP 프록시" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "광고 데이터를 저장하는 엔티티" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "분석 데이터를 저장하는 엔티티" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "공급업체 API의 응답 저장하기" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "백업 데이터베이스" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "백업 미디어" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "법적 옵션" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "이메일 옵션" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "기능 옵션" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "SEO 옵션" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "시스템 옵션" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"eVibes 문서에 오신 것을 환영합니다.\n" +"\n" +"eVibes는 클릭 몇 번으로 모든 종류의 온라인 스토어를 시작하고 관리할 수 있는 강력한 전자상거래 플랫폼입니다.\n" +"\n" +"주요 기능 ## 주요 기능\n" +"- **제품 카탈로그:** 여러 카테고리에서 제품 세부 정보, 가격, 재고 및 가용성을 관리합니다.\n" +"- 주문 관리:** 주문을 처리하고, 주문 이행을 추적하고, 고객 요청을 효율적으로 처리하세요.\n" +"- 인증 및 권한 부여:** JWT 토큰 및 역할 기반 권한으로 포괄적인 사용자 인증을 수행합니다.\n" +"- 결제 처리:** 여러 결제 게이트웨이를 통합하고 거래를 안전하게 관리하세요.\n" +"- **블로그 및 콘텐츠 관리:** 스토어용 블로그 게시물과 마케팅 콘텐츠를 생성하고 관리합니다.\n" +"- B2B 운영:** B2B 거래 및 도매 관리를 위한 전용 엔드포인트.\n" +"- 다국어 지원:** 완전한 국제화(i18n) 기능으로 전 세계 고객에게 서비스를 제공합니다.\n" +"- **맞춤형 통합:** 외부 플랫폼 및 서비스와의 통합을 위한 확장 가능한 API 아키텍처.\n" +"- **분석 및 보고:** 판매, 재고, 고객 행동에 대한 상세한 보고서를 생성합니다.\n" +"- **실시간 업데이트:** 재고 수준, 주문 상태, 가격 변동에 대한 실시간 데이터를 받아보세요.\n" +"\n" +"## 사용 가능한 API\n" +"- **REST API:** 전체 RESTful 인터페이스(이 문서)\n" +"- GraphQL API:** 대화형 쿼리를 위한 GraphiQL 인터페이스로 `/graphql/`에서 사용 가능\n" +"\n" +"## 인증\n" +"- 인증은 JWT 토큰을 통해 처리됩니다. 토큰을 요청의 `X-EVIBES-AUTH` 헤더에 `Bearer ` 형식으로 포함하세요.\n" +"- 액세스 토큰 수명은 {access_lifetime}입니다. {access_unit}입니다.\n" +"- 새로 고침 토큰 수명은 {refresh_hours} 시간입니다.\n" +"- 새로 고침 토큰은 보안 강화를 위해 사용 후 자동으로 교체되고 무효화됩니다.\n" +"\n" +"## 국제화(i18n)\n" +"- 수락 언어` 헤더를 설정하여 선호하는 언어를 지정합니다(예: `수락 언어: en-US`).\n" +"- 사용 가능한 언어는 `/app/languages/` 엔드포인트에서 검색할 수 있습니다.\n" +"- 모든 사용자 대상 콘텐츠는 기본적으로 여러 언어를 지원합니다.\n" +"\n" +"## 응답 형식\n" +"API는 여러 응답 형식을 지원합니다:\n" +"- JSON**(기본값, 카멜케이스 형식)\n" +"- XML** (`?format=xml` 추가 또는 `수락: application/xml` 설정)\n" +"- YAML** (`?format=yaml` 추가 또는 `수락: application/x-yaml` 설정)\n" +"\n" +"## 상태 및 모니터링\n" +"- 상태 확인: `/health/`\n" +"- 프로메테우스 메트릭: `/prometheus/metrics/`\n" +"\n" +"## 버전\n" +"현재 API 버전입니다: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "내 사이트" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "건강" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "지원" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "메뉴" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "대시보드" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "구성" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "정기 작업" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "작업 보드" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "빠른 링크" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "사용자" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "그룹" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "주문" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "제품" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "카테고리" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "브랜드" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "블로그 게시물" diff --git a/evibes/locale/nl_NL/LC_MESSAGES/django.mo b/evibes/locale/nl_NL/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..6fa06c5ef9022b9085a05c87b2dbfae453ea26bc GIT binary patch literal 8361 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 literal 0 HcmV?d00001 diff --git a/evibes/locale/nl_NL/LC_MESSAGES/django.po b/evibes/locale/nl_NL/LC_MESSAGES/django.po new file mode 100644 index 00000000..e5ee1895 --- /dev/null +++ b/evibes/locale/nl_NL/LC_MESSAGES/django.po @@ -0,0 +1,301 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: nl-nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Naam van het bedrijf" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Adres van het bedrijf" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Telefoonnummer van het bedrijf" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Belastingtarief in het rechtsgebied van je bedrijf. Laat 0 staan als je geen" +" belastingen wilt verwerken." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "" +"Geeft aan of de belastingen al zijn opgenomen in de verkoopprijzen van het " +"product" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Wisselkoers API sleutel" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "NIET VERANDEREN!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP host" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTP poort" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "TLS gebruiken" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "SSL gebruiken" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "SMTP gebruikersnaam" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "SMTP wachtwoord" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Mail van optie" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Hoeveel dagen we berichten van anonieme gebruikers bewaren" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Hoeveel dagen we berichten van geverifieerde gebruikers bewaren" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Koopfunctie uitschakelen" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "OpenStreetMap Nominatim API URL" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI API sleutel" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Abstracte API-sleutel" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP-proxy" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Een entiteit voor het opslaan van adverteerdersgegevens" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Een entiteit voor het opslaan van analytische gegevens" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Reacties opslaan van API's van leveranciers" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Back-up database" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Back-up media" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Juridische opties" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "E-mailopties" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Functies Opties" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "SEO Opties" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Systeemopties" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Welkom bij de eVibes documentatie.\n" +"\n" +"eVibes is een krachtig e-commerce platform waarmee je in een paar klikken een online winkel van elk type kunt starten en beheren.\n" +"\n" +"## Belangrijkste functies\n" +"- **Productcatalogus:**Beheer productgegevens, prijzen, voorraad en beschikbaarheid in meerdere categorieën.\n" +"- **Order Management:** Verwerk bestellingen, volg de leveringen en behandel verzoeken van klanten efficiënt.\n" +"- **Authenticatie en autorisatie:**Uitgebreide gebruikersverificatie met JWT tokens en rolgebaseerde rechten.\n" +"- **Betalingsverwerking:** Integreer meerdere betalingsgateways en beheer transacties veilig.\n" +"- **Blog & Content Management:** Creëer en beheer blog posts en marketing content voor uw winkel.\n" +"- **B2B Operations:** Specifieke eindpunten voor business-to-business transacties en groothandelsbeheer.\n" +"- Ondersteuning voor meerdere talen:** Bedien klanten wereldwijd met volledige internationalisatiemogelijkheden (i18n).\n" +"- Aangepaste integraties:** Extensibele API-architectuur voor integratie met externe platforms en diensten.\n" +"- Analyse en rapportage:** Genereer gedetailleerde rapporten over verkoop, voorraad en klantgedrag.\n" +"- Realtime updates:** Ontvang live gegevens over voorraadniveaus, orderstatussen en prijswijzigingen.\n" +"\n" +"## Beschikbare API's\n" +"- **REST API:** Volledige RESTful interface (deze documentatie)\n" +"- **GraphQL API:** Beschikbaar op `/graphql/` met GraphiQL interface voor interactieve queries\n" +"\n" +"## Authenticatie\n" +"- Authenticatie wordt afgehandeld via JWT tokens. Neem het token op in de `X-EVIBES-AUTH` header van je verzoeken in het formaat `Bearer `.\n" +"- De levensduur van het toegangstoken is {access_lifetime} {access_unit}.\n" +"- De levensduur van een verversingstoken is {refresh_hours} uur.\n" +"- Refresh tokens worden automatisch geroteerd en ongeldig gemaakt na gebruik voor een betere beveiliging.\n" +"\n" +"## Internationalisatie (i18n)\n" +"- Stel de `Accept-Language` header in om uw voorkeurstaal op te geven (bijvoorbeeld `Accept-Language: en-US`).\n" +"- Beschikbare talen kunnen worden opgehaald van het `/app/languages/` eindpunt.\n" +"- Alle gebruikerscontent ondersteunt standaard meerdere talen.\n" +"\n" +"## Antwoordformaten\n" +"De API ondersteunt meerdere antwoordformaten:\n" +"- **JSON** (standaard, camelCase geformatteerd)\n" +"- **XML** (voeg `?format=xml` toe of stel `Accept: application/xml` in)\n" +"- **YAML** (voeg `?format=yaml` toe of stel `Accept: application/x-yaml` in)\n" +"\n" +"## Gezondheid en bewaking\n" +"- Gezondheidscontroles: `/health/`\n" +"- Prometheus metingen: `/prometheus/metrics/`\n" +"\n" +"## Versie\n" +"Huidige API versie: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Mijn site" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Gezondheid" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Ondersteuning" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menu" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Dashboard" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Config" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Periodieke taken" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Taakbord" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Snelle links" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Gebruikers" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Groepen" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Bestellingen" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Producten" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Categorieën" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Merken" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/no_NO/LC_MESSAGES/django.mo b/evibes/locale/no_NO/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..41c094738c81c0ad5fe1a85ba9f2d462599df14d GIT binary patch literal 8296 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 vpu}X#XW~b^\n" +"Language-Team: LANGUAGE \n" +"Language: no-no\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Selskapets navn" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Selskapets adresse" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Telefonnummer til selskapet" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Skattesats i jurisdiksjonen til selskapet ditt. La 0 stå hvis du ikke ønsker" +" å behandle skatter." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "Viser om avgiftene allerede er inkludert i produktets salgspris" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "API-nøkkel for valutakurs" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!! IKKE ENDRE !!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP-vert" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTP-port" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Bruk TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Bruk SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "SMTP-brukernavn" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "SMTP-passord" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Alternativet Mail fra" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Hvor mange dager vi lagrer meldinger fra anonyme brukere" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Hvor mange dager vi lagrer meldinger fra autentiserte brukere" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Deaktiver kjøpsfunksjonalitet" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "OpenStreetMap Nominatim API URL" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI API-nøkkel" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Abstrakt API-nøkkel" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP-proxy" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "En enhet for lagring av annonseringsdata" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "En enhet for lagring av analysedata" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Lagre svar fra leverandørers API-er" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Sikkerhetskopiering av database" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Backup-medier" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Juridiske alternativer" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "E-postalternativer" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Funksjoner Alternativer" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "SEO-alternativer" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Systemalternativer" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Velkommen til eVibes-dokumentasjonen.\n" +"\n" +"eVibes er en kraftig e-handelsplattform som lar deg starte og administrere en hvilken som helst type nettbutikk med bare noen få klikk.\n" +"\n" +"## Nøkkelfunksjoner\n" +"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og tilgjengelighet på tvers av flere kategorier.\n" +"- Ordrehåndtering:** Behandle bestillinger, spore oppfyllelse og håndtere kundeforespørsler effektivt.\n" +"- Autentisering og autorisasjon:** Omfattende brukerautentisering med JWT-tokens og rollebaserte tillatelser.\n" +"- Betalingsbehandling: ** Integrer flere betalingsportaler og håndter transaksjoner på en sikker måte.\n" +"- Blogg- og innholdsadministrasjon: ** Opprett og administrer blogginnlegg og markedsføringsinnhold for butikken din.\n" +"- B2B-drift: ** Dedikerte endepunkter for business-to-business-transaksjoner og grossistadministrasjon.\n" +"- Flerspråklig støtte:** Betjen kunder over hele verden med full internasjonaliseringsfunksjonalitet (i18n).\n" +"- **Tilpassede integrasjoner:** Utvidbar API-arkitektur for integrering med eksterne plattformer og tjenester.\n" +"- Analyse og rapportering:** Generer detaljerte rapporter om salg, lagerbeholdning og kundeatferd.\n" +"- Sanntidsoppdateringer:** Få sanntidsdata om lagernivåer, ordrestatus og prisendringer.\n" +"\n" +"## Tilgjengelige API-er\n" +"- **REST API:** Fullt REST-grensesnitt (denne dokumentasjonen)\n" +"- GraphiQL API:** Tilgjengelig på `/graphql/` med GraphiQL-grensesnitt for interaktive spørringer\n" +"\n" +"## Autentisering\n" +"- Autentisering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-AUTH`-overskriften i forespørslene dine i formatet `Bearer `.\n" +"- Levetiden for tilgangstoken er {access_lifetime}. {access_unit}.\n" +"- Levetiden for oppdateringstoken er {refresh_hours} timer.\n" +"- Oppdateringstokener roteres automatisk og ugyldiggjøres etter bruk for økt sikkerhet.\n" +"\n" +"## Internasjonalisering (i18n)\n" +"- Angi `Accept-Language`-overskriften for å spesifisere ditt foretrukne språk (f.eks. `Accept-Language: en-US`).\n" +"- Tilgjengelige språk kan hentes fra endepunktet `/app/languages/`.\n" +"- Alt brukerrettet innhold støtter flere språk uten videre.\n" +"\n" +"## Svarformater\n" +"API-et støtter flere svarformater:\n" +"- **JSON** (standard, camelCase-formatert)\n" +"- XML** (legg til `?format=xml` eller angi `Accept: application/xml`)\n" +"- **YAML** (legg til `?format=yaml` eller angi `Accept: application/x-yaml`)\n" +"\n" +"## Helse og overvåking\n" +"- Helsesjekker: `/health/`\n" +"- Prometheus-beregninger: `/prometheus/metrics/`\n" +"\n" +"## Versjon\n" +"Gjeldende API-versjon: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Min side" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Helse" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Støtte" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Meny" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Dashbord" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Konfigurer" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Periodiske oppgaver" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Oppgavetavle" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Hurtigkoblinger" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Brukere" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Grupper" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Bestillinger" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Produkter" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Kategorier" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Merkevarer" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogginnlegg" diff --git a/evibes/locale/pl_PL/LC_MESSAGES/django.mo b/evibes/locale/pl_PL/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..ef071ace7bd65885d666178abef58ebb4b59760b GIT binary patch literal 8608 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 literal 0 HcmV?d00001 diff --git a/evibes/locale/pl_PL/LC_MESSAGES/django.po b/evibes/locale/pl_PL/LC_MESSAGES/django.po new file mode 100644 index 00000000..ee374e75 --- /dev/null +++ b/evibes/locale/pl_PL/LC_MESSAGES/django.po @@ -0,0 +1,299 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: pl-pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Nazwa firmy" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Adres spółki" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Numer telefonu firmy" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Stawka podatku w jurysdykcji Twojej firmy. Pozostaw 0, jeśli nie chcesz " +"przetwarzać podatków." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "Pokazuje, czy podatki są już uwzględnione w cenie sprzedaży produktu." + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Klucz API kursu wymiany" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!! NIE ZMIENIAJ !!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "Host SMTP" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "Port SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Używanie TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Używanie protokołu SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "Nazwa użytkownika SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "Hasło SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Poczta z opcji" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Ile dni przechowujemy wiadomości od anonimowych użytkowników?" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Ile dni przechowujemy wiadomości od uwierzytelnionych użytkowników?" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Wyłączenie funkcji kupowania" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "Adres URL interfejsu API OpenStreetMap Nominatim" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "Klucz API OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Abstrakcyjny klucz API" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "Serwer proxy HTTP" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Jednostka do przechowywania danych reklamowych" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Jednostka do przechowywania danych analitycznych" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Zapisywanie odpowiedzi z interfejsów API dostawców" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Kopia zapasowa bazy danych" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Nośniki kopii zapasowych" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Opcje prawne" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Opcje e-mail" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Opcje funkcji" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "Opcje SEO" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Opcje systemowe" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Witamy w dokumentacji eVibes.\n" +"\n" +"eVibes to potężna platforma e-commerce, która umożliwia uruchomienie i zarządzanie sklepem internetowym dowolnego rodzaju za pomocą zaledwie kilku kliknięć.\n" +"\n" +"## Kluczowe funkcje\n" +"- Katalog produktów:** Zarządzanie szczegółami produktów, cenami, zapasami i dostępnością w wielu kategoriach.\n" +"- **Zarządzanie zamówieniami:** Przetwarzanie zamówień, śledzenie realizacji i efektywna obsługa zgłoszeń klientów.\n" +"- Uwierzytelnianie i autoryzacja:** Kompleksowe uwierzytelnianie użytkowników za pomocą tokenów JWT i uprawnień opartych na rolach.\n" +"- Przetwarzanie płatności:** Integracja wielu bramek płatniczych i bezpieczne zarządzanie transakcjami.\n" +"- Blog i zarządzanie treścią:** Tworzenie i zarządzanie postami na blogu i treściami marketingowymi dla sklepu.\n" +"- Operacje B2B:** Dedykowane punkty końcowe dla transakcji między firmami i zarządzania sprzedażą hurtową.\n" +"- Obsługa wielu języków:** Obsługa klientów na całym świecie dzięki pełnym możliwościom internacjonalizacji (i18n).\n" +"- Integracje niestandardowe:** Rozszerzalna architektura API do integracji z zewnętrznymi platformami i usługami.\n" +"- Analityka i raportowanie:** Generowanie szczegółowych raportów dotyczących sprzedaży, zapasów i zachowań klientów.\n" +"- Aktualizacje w czasie rzeczywistym:** Uzyskaj dane na żywo o poziomach zapasów, statusach zamówień i zmianach cen.\n" +"\n" +"## Dostępne API\n" +"- **REST API:** Pełny interfejs RESTful (ta dokumentacja)\n" +"- API GraphQL:** Dostępne pod adresem `/graphql/` z interfejsem GraphiQL do interaktywnych zapytań.\n" +"\n" +"## Uwierzytelnianie\n" +"- Uwierzytelnianie jest obsługiwane za pomocą tokenów JWT. Dołącz token w nagłówku `X-EVIBES-AUTH` swoich żądań w formacie `Bearer `.\n" +"- Okres ważności tokenu dostępu wynosi {access_lifetime} {access_unit}.\n" +"- Okres ważności tokenu odświeżania wynosi {refresh_hours} godzin.\n" +"- Tokeny odświeżania są automatycznie obracane i unieważniane po użyciu w celu zwiększenia bezpieczeństwa.\n" +"\n" +"## Internacjonalizacja (i18n)\n" +"- Ustaw nagłówek `Accept-Language`, aby określić preferowany język (np. `Accept-Language: en-US`).\n" +"- Dostępne języki można pobrać z punktu końcowego `/app/languages/`.\n" +"- Cała zawartość skierowana do użytkownika obsługuje wiele języków od razu po wyjęciu z pudełka.\n" +"\n" +"## Formaty odpowiedzi\n" +"API obsługuje wiele formatów odpowiedzi:\n" +"- **JSON** (domyślny, sformatowany camelCase)\n" +"- **XML** (dodaj `?format=xml` lub ustaw `Accept: application/xml`)\n" +"- **YAML** (dodaj `?format=yaml` lub ustaw `Accept: application/x-yaml`)\n" +"\n" +"## Zdrowie i monitorowanie\n" +"- Sprawdzanie kondycji: `/health/`\n" +"- Metryki Prometheus: `/prometheus/metrics/`\n" +"\n" +"## Wersja\n" +"Aktualna wersja API: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Moja strona" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Zdrowie" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Wsparcie" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menu" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Pulpit nawigacyjny" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Konfiguracja" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Zadania okresowe" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Tablica zadań" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Szybkie łącza" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Użytkownicy" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Grupy" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Zamówienia" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Produkty" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Kategorie" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Marki" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/pt_BR/LC_MESSAGES/django.mo b/evibes/locale/pt_BR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..a6995505d4e95cdd9b0432fcb2917a3e1fe8b350 GIT binary patch literal 8671 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\n" +"Language-Team: LANGUAGE \n" +"Language: pt-br\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Nome da empresa" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Endereço da empresa" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Número de telefone da empresa" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Taxa de imposto na jurisdição de sua empresa. Deixe 0 se você não quiser " +"processar impostos." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "" +"Mostra se os impostos já estão incluídos nos preços de venda do produto" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Chave da API de taxa de câmbio" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!NÃO MUDE!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "Host SMTP" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "Porta SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Usar TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Usar SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "Nome de usuário SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "Senha SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Opção de correio eletrônico de" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Por quantos dias armazenamos mensagens de usuários anônimos" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Por quantos dias armazenamos mensagens de usuários autenticados" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Desativar a funcionalidade de compra" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "URL da API do OpenStreetMap Nominatim" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "Chave da API da OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Chave abstrata da API" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "Proxy HTTP" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Uma entidade para armazenar dados de propaganda" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Uma entidade para armazenar dados analíticos" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Salvar respostas das APIs dos fornecedores" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Banco de dados de backup" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Mídia de backup" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Opções legais" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Opções de e-mail" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Opções de recursos" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "Opções de SEO" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Opções do sistema" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Bem-vindo à documentação do eVibes.\n" +"\n" +"O eVibes é uma poderosa plataforma de comércio eletrônico que lhe permite lançar e gerenciar uma loja on-line de qualquer tipo com apenas alguns cliques.\n" +"\n" +"## Principais recursos\n" +"- Catálogo de produtos:** Gerencie detalhes, preços, estoque e disponibilidade de produtos em várias categorias.\n" +"- Gerenciamento de pedidos:** Processe pedidos, acompanhe o atendimento e trate as solicitações dos clientes com eficiência.\n" +"- Autenticação e autorização:** Autenticação abrangente de usuários com tokens JWT e permissões baseadas em funções.\n" +"- Processamento de pagamentos: integre vários gateways de pagamento e gerencie as transações com segurança.\n" +"- **Gerenciamento de blogs e conteúdo:** Crie e gerencie postagens de blogs e conteúdo de marketing para sua loja.\n" +"- Operações B2B:** Pontos de extremidade dedicados para transações business-to-business e gerenciamento de atacado.\n" +"- Suporte a vários idiomas:** Atenda a clientes em todo o mundo com recursos completos de internacionalização (i18n).\n" +"- Integrações personalizadas:** Arquitetura de API extensível para integração com plataformas e serviços externos.\n" +"- Análises e relatórios:** Gerar relatórios detalhados sobre vendas, estoque e comportamento do cliente.\n" +"- Atualizações em tempo real:** Obtenha dados em tempo real sobre níveis de estoque, status de pedidos e alterações de preços.\n" +"\n" +"## APIs disponíveis\n" +"- API REST:** Interface RESTful completa (esta documentação)\n" +"- API GraphQL:** Disponível em `/graphql/` com interface GraphiQL para consultas interativas\n" +"\n" +"## Autenticação\n" +"- A autenticação é tratada por meio de tokens JWT. Inclua o token no cabeçalho `X-EVIBES-AUTH` de suas solicitações no formato `Bearer `.\n" +"- O tempo de vida do token de acesso é {access_lifetime} {access_unit}.\n" +"- A vida útil do token de atualização é de {refresh_hours} horas.\n" +"- Os tokens de atualização são automaticamente girados e invalidados após o uso para aumentar a segurança.\n" +"\n" +"## Internacionalização (i18n)\n" +"- Defina o cabeçalho `Accept-Language` para especificar seu idioma preferido (por exemplo, `Accept-Language: en-US`).\n" +"- Os idiomas disponíveis podem ser recuperados no ponto de extremidade `/app/languages/`.\n" +"- Todo o conteúdo voltado para o usuário é compatível com vários idiomas desde o início.\n" +"\n" +"## Formatos de resposta\n" +"A API oferece suporte a vários formatos de resposta:\n" +"- **JSON** (padrão, formatado em camelCase)\n" +"- **XML** (adicione `?format=xml` ou defina `Accept: application/xml`)\n" +"- **YAML** (adicione `?format=yaml` ou defina `Accept: application/x-yaml`)\n" +"\n" +"## Saúde e monitoramento\n" +"- Verificações de integridade: `/health/`\n" +"- Métricas do Prometheus: `/prometheus/metrics/`\n" +"\n" +"## Versão\n" +"Versão atual da API: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Meu site" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Saúde" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Suporte" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menu" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Painel de controle" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Configuração" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Tarefas periódicas" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Quadro de tarefas" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Links rápidos" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Usuários" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Grupos" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Pedidos" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Produtos" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Categorias" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Marcas" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Postagens em blogs" diff --git a/evibes/locale/ro_RO/LC_MESSAGES/django.mo b/evibes/locale/ro_RO/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..cee87241d2fb2b8e562836737c9ae9586cc1bd33 GIT binary patch literal 8745 zcma)>TZ|mpS;s3O+$NBag%BK$zKe*q)2WvpemXou1hw2(fdf`%HJ) z)m4?c%(!Q<6l5ZS5D_mCBKt%Xc#Kv;2qEzTI}b*@^c;W$m|8uIk zXU4nh9jX0QojRBA^8aqf|MJX-z83NKJikx!`{oCtXc>C-d-#XHn;(jzhd&razXJVH z-v8o=s!U(LB9+AdFUrU5=9?{cA-B6eHF^`=r^F>2OUEfpjq>N+n&94GAOJ^Uxt1^ z^ea%w@%vDgM1KtZS?F6(?f>m&{2!n{&HKMYe*pSHHv2I2!wvleRB~N}>by?#{zCJ< z3cbL1A1Zy;P@VsmP@VhNP_6$qbQk)a=KGD0g?Trj-^=(*&^2sw8+ri-zWPky|E*6& z(U0-{1S)y{5&Fx}|AJnHe)?y^_id>3ID(4*hfvA+yHK6~2hI4`q2lXLp<4gvP>zcJ z4J!To5A+kzkMklqI#Ai+mm2yKRQi7fdJFp7P*{%s1}Z-P9x8eM11diL8!G(#FBH+E zXG}QfB2@e>L$&^8=tbzSLv`+#q2lv*pu*Q5LbcyF8~Rp5{|c&eA47iu`p?i!=*KXM z_OVdO7ejTUN3s@@B`jnztV~H(f(cLLGj=kKlwG{dp$wC9ixTMyJV0}oT)NXjh%6?#rv)_ z!)#DbTw2*G&eCfO3(as`8f)_G$Q1{5VqAxn6ITqJ$rD>0WW|I%Y-MbcWJjf$X0^6W zY@H6q#->9vv8f$79!-`eaq3K2WrZ`@0Yg)BKW0jtntOH09_GLunL!c{?w2rd@uGRf zP0ej*tGaOILdRUWvQ=cmdQh2VTiGNVEnc}|df|Y)`7(5sjg#`K$%}Xpr=zQEe~4IF zF}>;;vWI-P`*9LiQ)353R+eT`Csmv$&J1kjMp+R%7|?l}#n2Va5mJs0golA+QKoMk zR26n`-=Lj?I7u`qoHIsx?TBP3yD)|OQtisBH16O4&X|`>!y(-oGo)3_;i%p`Ycv28 z$NpVME@zXxa7-%WLucxe?d;h_M{zYaFMoaq?cZmbm$b+d*V(tF8=Bk|lejF|z7cH8 zPQ_{~42se@>nY+F=wPmqyqP#+^vF)b&W%x#JT2`&T$iSF1I*OQw1jn#WI1C;jtNF; zHMm@0Q(90=smW zXK~7YTDf1BK(8!2Rn}>rWw$x^I`wFb!b*$Lf_!2(oYWIOI*Cn3wZPo3^E@j&82YZj zBCU~2bCeay@F*TS<1GRz5&&4aBK2I_q_L{G6hD76y$s;;fW;Z)mOWr*rjTwW+Uf%o zS;qTt*WFq-wit}#$_?ZiUPK)t(@AOmXvYFhO=gZ7R101V4oW42;iS{tX2tT-;M2IoE71SZD*6tPE5Sn&4=vhrCD>8NrYua zthSu(WfFJjNHuX@o6)_xki#fL82QRIw&TDiS5|K7Xu=)7ajduBbccR?hbyS>>zm#0x3rhBrV`k4c7T)}u90LjQ zdc~8#>KUiyxO1)#M3;w_^`y zBXt^A54CpN9T2F;4S(%KzqkmWULSK@`OtXs#1aq+nu%-~EaJ#XGBrg80)U^)4@htz zfr$45;7ur$KT72;MRNl__&7vt58zmTci)5IJ}{I*_at>*bv7CgpJ|a?R_1OHA54Qb ziNXi2C^%*o3@*8Aqia{6*kTcmI=lV7%U-E7h_=g0JU_)#aH|S<9J1p)+X75+S zw_6V;$sRtAxd3BO|Dr)|vcHd%*EJz5|6=zY)=%wIH|Y2|m%ZoRAqtTppEbPF!K zc^JkP%^S_r!-eR=g$pa2=I-W>S-#V~ySB=E)ZH&tM1)1uJW+QzMCZiXU^8m2oN6iR zrXZnG-GUN*CKLedklm}e#7{X_0rlM`&Vs$4v_#ob=YD~Tgs6F+kV9>x{O$8`v_zU5 zmeDd^7b>HOq<#>Oq7_??_cL1zqm{U{N=*AToKg9yAiz8Ra+v>+Fp>shx*e zQ9dU=*?p`kKMt_0>;shULv}(%H=GineUkDeJ)R=&o>OI*Q2A5e;Y5x-LZFKJ)3S1t z8MBf%z-h-m2ng|wK@pdz!&k;_PHPl!&1^Vvd_xSW^B897bCo%=xB-D120|(mo7bXU z;!?lA;pxssUleqp!+TUwo%La-@!&dUQ5skv~=Jb(Fxg=k?(y`6phW=zy0 z!jd27#TBErX*0<^O=C$fgv-pT)00OguT`h$dJocK^cE!zdRM;dgch9z7<0qP5gzo_ijwRE~LEl*dJ3Dlaoh9ENvj}(2-%& z7x6DO>1f>kbHKM;~>nbtlN^6={zdwf8 zl?8~=DW?TjBY12FES1p0L>Z3&IHI3C3W7hioz=PL_f`Is>Lq}0a5aI3mbobf84OKq z+vk!Ts-kYe3M7VyO^fzqm%F7DOOZtaf!|@%^Ky#c;;b}nw|l1ZJ(tY zip&rNHbG&@AD_}}%1Jn~JzNoo z2D&w|0s>wqh9<;$yf|<>k4o}$-%@X_2cMb6q!9B?_tn0$I>10^yltEgv!m(n)^D#6 zXt)BwBk1_OGOgz$_1?&^Z@UA-@1q5O>UM=giZmkwggrUojdRU8_p|bcmxDHZhyjal ze~UZFtjvk#^3}4Y%Az?}8deg}rGk((@6pY$W^xhS*KiR%ZnLC-L&w_vO)1m4Gx&W?p&n8CMJonB6D&@h%-&rLf zk(vrcrCGy9aq_5yk8(lbaJGKFDj?Bw+)h2)#uIVqy<__LFco{w8v1i>{K=zw6|Kwhwvw!+#r`!Af$)i-jM3o`Dg(hEF1?5xOx6w`(qiSp>pKJMh zzR!p_>ffW~uT!_+I|m-fq+G|QGMrUfI^X!;-8KE?JL|or?&GhotMOkRySTZ} zZLR=L9?|^Mf`Q?T|0G~5ARkAYq4Ae|4agPaePmZkP*`vCKwj^AJ2GtF&pQ75gjSu3 zxV-?N>QdMSDr}){jm!mJHBz`^5+^*i*8_}4Jp%9`o?Q^|#*IKD-#u8PsvL525b4@M@Srl{zdhzc zaS;)%+2bKt((OaEWhvrq^DIau;hD2e$G={BW(qt@)d}whHT~jo=q92r zSP*cn8c5wuFu`Z3p}S|p)dW`n%Hi`aOal74O({*)G|rAx%Dqt^kGdD9bBUN+(hIuD zDO8t1cVIpkjwqTPliJu$C&{w9zQEAF%;p*|b^yAb5G@WfDkKEt9s|^Qm$=cepXxFr hG;Qi};fkvaKO+dnbw\n" +"Language-Team: LANGUAGE \n" +"Language: ro-ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Denumirea societății" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Adresa societății" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Numărul de telefon al societății" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Cota de impozitare în jurisdicția companiei dumneavoastră. Lăsați 0 dacă nu " +"doriți să procesați taxele." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "" +"Arată dacă taxele sunt deja incluse în prețurile de vânzare ale produsului" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Cheie API pentru rata de schimb" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!NU SCHIMBAȚI!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "Gazdă SMTP" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "Portul SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Utilizați TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Utilizați SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "Nume utilizator SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "Parola SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Posta de la opțiune" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Câte zile păstrăm mesajele de la utilizatorii anonimi" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Câte zile stocăm mesajele de la utilizatorii autentificați" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Dezactivați funcționalitatea de cumpărare" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "OpenStreetMap Nominatim API URL" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "Cheie API OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Cheie API abstractă" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "Proxy HTTP" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "O entitate pentru stocarea datelor privind publicitatea" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "O entitate pentru stocarea datelor analitice" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Salvați răspunsurile de la API-urile furnizorilor" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Backup bază de date" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Suporturi de rezervă" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Opțiuni juridice" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Opțiuni de e-mail" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Caracteristici Opțiuni" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "Opțiuni SEO" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Opțiuni de sistem" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Bine ați venit la documentația eVibes.\n" +"\n" +"eVibes este o platformă puternică de comerț electronic care vă permite să lansați și să gestionați un magazin online de orice tip în doar câteva clicuri.\n" +"\n" +"## Caracteristici principale\n" +"- **Product Catalog:** Gestionați detaliile produselor, prețurile, inventarul și disponibilitatea în mai multe categorii.\n" +"- **Order Management:** Procesați comenzile, urmăriți îndeplinirea și gestionați eficient cererile clienților.\n" +"- **Autentificare și autorizare: ** Autentificare cuprinzătoare a utilizatorilor cu token-uri JWT și permisiuni bazate pe roluri.\n" +"- **Payment Processing:** Integrați mai multe gateway-uri de plată și gestionați tranzacțiile în siguranță.\n" +"- **Blog & Content Management:** Creați și gestionați postări pe blog și conținut de marketing pentru magazinul dvs.\n" +"- **B2B Operations:** Puncte finale dedicate pentru tranzacțiile business-to-business și gestionarea comerțului cu ridicata.\n" +"- **Suport multilingv:** Serviți clienții din întreaga lume cu capacități complete de internaționalizare (i18n).\n" +"- **Integrații personalizate:** Arhitectură API extensibilă pentru integrarea cu platforme și servicii externe.\n" +"- **Analytics & Reporting:** Generați rapoarte detaliate privind vânzările, stocurile și comportamentul clienților.\n" +"- **Actualizări în timp real:** Obțineți date în timp real privind nivelurile stocurilor, starea comenzilor și modificările prețurilor.\n" +"\n" +"## API-uri disponibile\n" +"- **REST API:** Interfață RESTful completă (această documentație)\n" +"- **GraphQL API:** Disponibil la `/graphql/` cu interfața GraphiQL pentru interogări interactive\n" +"\n" +"## Autentificare\n" +"- Autentificarea este gestionată prin jetoane JWT. Includeți tokenul în antetul `X-EVIBES-AUTH` al cererilor dvs. în formatul `Bearer `.\n" +"- Durata de viață a jetonului de acces este {access_lifetime} {access_unit}.\n" +"- Durata de viață a jetonului de reînnoire este de {refresh_hours} ore.\n" +"- Jetoanele de reîmprospătare sunt rotite automat și invalidate după utilizare pentru o securitate sporită.\n" +"\n" +"## Internaționalizare (i18n)\n" +"- Setați antetul `Accept-Language` pentru a specifica limba preferată (de exemplu, `Accept-Language: en-US`).\n" +"- Limbile disponibile pot fi preluate de la punctul final `/app/languages/`.\n" +"- Toate conținuturile destinate utilizatorilor acceptă din start mai multe limbi.\n" +"\n" +"## Formate de răspuns\n" +"API acceptă mai multe formate de răspuns:\n" +"- **JSON** (implicit, formatat camelCase)\n" +"- **XML** (adăugați `?format=xml` sau setați `Accept: application/xml`)\n" +"- **YAML** (adăugați `?format=yaml` sau setați `Accept: application/x-yaml`)\n" +"\n" +"## Sănătate și monitorizare\n" +"- Verificări de sănătate: `/health/`\n" +"- Metrici Prometheus: `/prometheus/metrics/`\n" +"\n" +"## Versiune\n" +"Versiunea curentă a API: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Site-ul meu" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Sănătate" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Sprijin" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Meniu" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Tablou de bord" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Configurare" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Sarcini periodice" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Tablou de sarcini" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Linkuri rapide" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Utilizatori" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Grupuri" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Ordine" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Produse" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Categorii" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Mărci" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogposturi" diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.mo b/evibes/locale/ru_RU/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..46e77dfc1f128c263e46e671e892df2ff8e76735 GIT binary patch literal 11120 zcmbuENpKw3dB;1B9b0f##Y+|^d6W`~q&cAEC*ijWAnxPX>lq^{#MWskqVjrAC0z#q)id(izDmnC=QsqjeDwV3_lFG%mobvmB zuX`|9sHFnd@SE;_?_2-h(r^Cl?vK6{@b@5}&++;GPXxgTbl*?%AAbiv8U#<>6$HNv z{Y9>?{!9@3JoKNSpMm}>bT{2RTpN75#mArq1YX6U*+W+sx^?yTuhwC3h4?uS#T>C?)_9akM50;@H zhn|PZj%T543EqVM26PoF{&{i#U!cFr^?yP?0sRQfJ_-F~K|c$XUH3vIuToq;R9ufj zcX59TDt~sMl79^jBm!QH~2>l^+5h{Imecsc9Q2FO^C}A)xA$r^2UEGm>^!HglpWveulCA@M z_VbY)l4bm%5AqRj;U4yeKZx1?>rhFxe$N9)F?ZSFJSsPyOT!QK*jCddm>G0ood^Sgzd1N%n$9|>n6N_R`H}3wZpic?Q^X( zuEx#zeXu`+SxLII&lC#J@I0K2>v4O@h1E34GS}$T+i|NNxoX&s=94szP(bn~(^`}k zBIFziM2Bj`rbN#W)K0_dX@_^_;(A?+yqpEB7e_3^*{MsTuXm!Xow;ak4$W9sU-CkR zJA|RxjuDRQ-F;3sP~sbQEs-Nhqm@Q1%HlJT>twJCH*Z>u+Y9c?k5A+M(=0Pf)1)3% zX2UG1xmJ`m;w*!GVc3aqNvf8{;3&x%Yhr$i4>ml~Di+RjcQIV@oQt4hc{2;E(mHcl zR3%KMO^1jMmW(8DM2rto>A{hdmONH`ib<=Dvie8QutJqGqoCm#X)Es0e+!Ocbs;h8u| zy@-=hSg%aS)SFYS8XV1d~1<`D^J#xXJ!Z(iEX0r(KognwJeK z62m^By<>ctI5|2sEjP(=M-&3xQ2nw{%!QP%-R%WR+oqzo$5Q@i8nzZ59WS?UaHq=6 z?8n8eg|FB5&v+->;+WMNjDVhD{Yr>181 zm{WTYEw^Q4ev?cgt=hoj3>@duM9ma!_J^(3{@zNkR#r3P1)S9ZD!{nELT0`w^)<5| z2bXl(0)&{)CTG28PDWXa+7h`VhKOunnx`r)+Zhp5ztn>#8^U#a_kMY5@;LdmyB5ub z)W>~T)QIXM^cw|)2offrQcp~bYhhTcxtTBdXAhrk)Mv|YAsmqEqW?6J%{Mirt%-sdI~&`NV{&SOMzx4IB9atz^kl80scXLv@NZ$x;k zgGUvksx4s5DDLhr?y^`_=rLviYW2WK2YAr&~}XS_+1nAfc_f1t(f36ac~++}m+Ro+4KT z^-c?W#oiVjVr=QOY=ee`ptx?(L&HG*+xl^Eh&EZvf)TRLPeuVveJ-944u{#oY!arm z;BcIUYD}{oG-LA9KtQ6lmx9p-!xl~2MucGWtS{WoI*UAX8e_`=uea=Insi!OaBO<| zgrabEDe!R$jwOp~%}eOaAhKA_k_}u%8KBiGgTiLgTxukQO<4k)5435cFq4UX<9IYr z_bhdvkRc`@F>8W}sM!f7mRv>~4vqu;t0u!PHXLjv75>Wv_?Rba>Vy#9j>2 zIKv$_8J9h+aKNA&kEHPfQb=zewWN7}+bxEq0fid{d@GZhgTX24($v(r(dqFiQP6=8 zzs3|*8LL%_3?6bPhDW|Ke00=3HhOYuZ1VVkAB-v!*?e599O}$xmFZ;24V;*)oQ%$p zcS*BynCuvGUmYDjS(%uu93FPZCWj`*KL2}@$43Xo!>nDI*09MNQ<4t3Bd5m4-SOdx zQFm~3Vt8!)k>SIK8BnIa$WlLHR;Ht{G33T65T~Tc!SV4&>hWNb&Tp(4a%rcMb_OQK zCPp`Oe{k@Dfnw;cOfR)is?8v{pO>|``H<$Ol!E*4sp%t?0~_n48*QyJ+N=USUIpBN z*|(I4)wfl7UqRZD@{x;X|cF*NE@+1$8frl z-|GHxev_5YiS2b`_APEM^JrBZuk)n)EKjb$`f15$`Az=6=JIzTHzcjQEJ^wLKD#H@ zEG&55%CDm2Eiq!@(~is4{C4+TcZGH9UiWo}*0;5Xr7SG&nh`KZ9y=>iDSwO4Rb)wp z8;-@7^2>aE3v0v=BT##-yMn&DCuz?1ub8^myB9^J=XF-gf;Hc-^H;^Jdx4E>-DmPE z4kK20d|A$vIIplqguQ!NjN4H~A$UuYeI(?bHBH6&Uu@W84A#XFwYxp{u~`ShgWT3{_Imfc443BS9Xz{^v(Fbc z?WnRuv&B?E8MEzm1LCS24=bK}4gE6gKw};tTBvyk{QxQYnhWGx;rBW>WFiX4902(( zTw@@!4Fx7W=C_FwR(yDXy$_{_Jkkqmo(E#GQ;Dz+YX#dUgb75WHJ%8l>oU$#gT`fIMc;uF?Vt$UGl`QyzQA_km%oi(@X!hWtLeZ zZUN{1oGn!3rfP(uZNTwjh2rO zlr~q5o(3lQHZfnJ;vm^lp%kGcRM}faOWZGPpevQak{3cWo2_ITJ_d( zU{Zn8ZTJ>0FB0YjK>s#d6<%tIFE1vEr5B1DhQao{B z)x=toDlDQ&4+v0m+wn>`PY>n1aVf;uKN*9{X3wMyW_ILzAK| zEO*ayQ*Kv_JcsaA8#{4~+NVNePkWh2h*cKWP)+IW14r1mbznI}h{YMQY0ccyAD!n* z>kwcSPOGi@(#W`1_^Er*0`np&O60QHa4s*xVo~I#nqA=o)oILJb9TSl$fwcL;;pgYBBX`VR=HrfQT@~*yjZhLJ+o-h1o1=a zT}&H{bCRnXTKJq70GloP57%-t&=y>?L$*o@CNQXWc?}%x#^WlAMW5Pv3Vd$I(>G0( zJvFec$jDX7i#pE=IoW?EC(!mXtdvg(Zn)k--4@KlhU_wM5&-Kh9yyAMoS(1R>wW$n z?HaGV*JHsQMVVuz@Y6z-(i7j(06tLr9d!8%s!cZjSt9#s%KEb+Y$~fs_=%g&?Y15Z zB6ihk1GyjoS;BY&4I>+4pDJPRc+hWq619tQz@HN4ZyILbRVT0@n_bG2jg=a^h_!4s z6s>N6xfrA6gx)D)d0e=|xnll;qMhGRty0Cls!Z4-$!deb)t9rqxikFB>f>)V_SVBfK6H zYAmdw_yA|VNEz!hW}nR$-RFuteFfCMPeVa@|7(NndtobB08x1W*LVJjR_Zx;Tiktp zwN8#^7r5oyiB&&3E>mRDdP#P*GvDwjN!{i5IU3!R;l3)CyyT)@H?_>i3#z3E*Bd23 z*nU=OL3}|z){;%r5=}vR$qeZz6s;;8Pzh#qDf;0Sf6D`gs%voY=+nMl@%O52j2ZrY zLfD4054MjV+VmWyP!=KlK0aOc_^@t3{-vk_-#JA6=RLb z^73^viNxw&QrmHq&z@S`q#UXiV3B{FgLCh^chf1a@K3G?_8Q6n*QO(1wgY!HJ=H?- z6JL+A4|ooIX9@mL_`{3nKPk>%7JqLq&AlARHKs{R|3bz{u4HDRmP>N?7>9!s<=YN*J zyz(LVNU}dq*i=KswNFHle-HjwP`1zkiQP#`uaWUb0 zVyenZbTRc#XJcwH6mqYzO&0!@K)K6qc?Yd+tQFjZvDF~|LBU@Wlbo!VSU=d~me(n- zcFY#!FS0>O-G;x;@het&b^3<`<;}h{F&tQw)J{|*c`689qx{Q)5>&iBI`-e<-(^ix zEV8Il;CwH&97TJJtM^S`+my<_jDx%XzdW2GhU&g{d}9&WsFLrm!(YjNnA$fI2zood zMJlqs@ls^e_wYf_*;EzOxD=4*ddF0x^s*6<^XhWFs=Y%VzY5McQ?$_g-zx%si>R=# z%zgErJN$Ivv%+3Y1*11SBG6%*O&U0Tni4SSr2{PRqZ!U(qGm%lF;3aKsnqxy%W*;h zdiH;Z!OW_cB`aT7_;Q`CJ7xgCh}iEO72bkv8ZFbrnzGYRBi_Bs;K*OS;%Chr=K$)6 zU&MJ&2~8%J;#IZRY>Q6rlS;|v+ua(#Esk|fC`wyNvM7;B*;#wS$z{MUMgPr%3~LzU@oJ_4thx&0|YWlA8aZWYB5q%qc#EkuC$hdeqH#GB?NUlW7?A1>3Djhds$=Pl9Y#pd;%WBj!603OiHWJWWA+YChw zK$l|b6!!H)gAQHw+rl&Q9rWTRCt>s}u<3;mXZR55H=sK_($7NvjaG*`h%v^7(DmT| E0QZe@ZvX%Q literal 0 HcmV?d00001 diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.po b/evibes/locale/ru_RU/LC_MESSAGES/django.po new file mode 100644 index 00000000..f71bd6ff --- /dev/null +++ b/evibes/locale/ru_RU/LC_MESSAGES/django.po @@ -0,0 +1,299 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: ru-ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Название компании" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Адрес компании" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Номер телефона компании" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Ставка налога в юрисдикции вашей компании. Оставьте 0, если вы не хотите " +"обрабатывать налоги." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "Показывает, включены ли налоги в отпускную цену продукта." + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Ключ API обменного курса" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!НЕ МЕНЯЙТЕ!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP-хост" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "Порт SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Используйте TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Используйте SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "Имя пользователя SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "Пароль SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Почта из опции" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Сколько дней мы храним сообщения от анонимных пользователей" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Сколько дней мы храним сообщения от аутентифицированных пользователей" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Отключить функцию покупки" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "URL-адрес API OpenStreetMap Nominatim" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "Ключ API OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Абстрактный ключ API" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP-прокси" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Сущность для хранения данных о рекламе" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Сущность для хранения аналитических данных" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Сохраняйте ответы от API поставщиков" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Резервная копия базы данных" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Резервные носители" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Юридические возможности" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Параметры электронной почты" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Характеристики Опции" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "Параметры SEO" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Параметры системы" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Добро пожаловать в документацию eVibes.\n" +"\n" +"eVibes - это мощная платформа для электронной коммерции, которая позволяет запустить и управлять интернет-магазином любого типа всего за несколько кликов.\n" +"\n" +"## Ключевые особенности.\n" +"- **Каталог товаров:** Управление информацией о товарах, ценами, запасами и наличием товаров в нескольких категориях.\n" +"- **Управление заказами:** Обработка заказов, отслеживание выполнения и эффективная обработка запросов клиентов.\n" +"- **Аутентификация и авторизация:** Комплексная аутентификация пользователей с помощью JWT-токенов и ролевых разрешений.\n" +"- **Обработка платежей:** Интеграция нескольких платежных шлюзов и безопасное управление транзакциями.\n" +"- **Управление блогом и контентом:** Создание и управление записями в блоге и маркетинговым контентом для вашего магазина.\n" +"- **B2B-операции:** Выделенные конечные точки для транзакций между предпринимателями и управления оптовыми продажами.\n" +"- **Мультиязыковая поддержка:** Обслуживайте клиентов по всему миру, используя возможности полной интернационализации (i18n).\n" +"- **Заказные интеграции:** Расширяемая архитектура API для интеграции с внешними платформами и сервисами.\n" +"- **Аналитика и отчетность:** Генерируйте подробные отчеты о продажах, запасах и поведении клиентов.\n" +"- **Обновления в режиме реального времени:** Получайте данные об уровне запасов, состоянии заказов и изменениях цен в режиме реального времени.\n" +"\n" +"## Доступные API\n" +"- **REST API:** Полный REST-интерфейс (данная документация)\n" +"- **GraphQL API:** Доступен по адресу `/graphql/` с интерфейсом GraphiQL для интерактивных запросов\n" +"\n" +"## Аутентификация\n" +"- Аутентификация осуществляется с помощью JWT-токенов. Включите токен в заголовок `X-EVIBES-AUTH` ваших запросов в формате `Bearer <ваш_токен>`.\n" +"- Срок действия токена доступа составляет {access_lifetime} {access_unit}.\n" +"- Время жизни токена обновления составляет {refresh_hours} часов.\n" +"- Для повышения безопасности маркеры доступа автоматически аннулируются после использования.\n" +"\n" +"## Интернационализация (i18n)\n" +"- В заголовке `Accept-Language` укажите предпочтительный язык (например, `Accept-Language: en-US`).\n" +"- Доступные языки можно получить из `/app/languages/`.\n" +"- Весь контент, предназначенный для пользователей, изначально поддерживает несколько языков.\n" +"\n" +"## Форматы ответов\n" +"API поддерживает несколько форматов ответов:\n" +"- **JSON** (по умолчанию, с форматированием в camelCase)\n" +"- **XML** (добавьте `?format=xml` или установите `Accept: application/xml`)\n" +"- **YAML** (добавьте `?format=yaml` или установите `Accept: application/x-yaml`)\n" +"\n" +"## Здоровье и мониторинг\n" +"- Проверка здоровья: `/health/`\n" +"- Метрики Prometheus: `/prometheus/metrics/`\n" +"\n" +"## Версия\n" +"Текущая версия API: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Мой сайт" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Здоровье" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Поддержка" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Меню" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Приборная панель" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Конфигурация" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Периодические задания" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Доска задач" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Быстрые ссылки" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Пользователи" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Группы" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Заказы" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Продукция" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Категории" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Бренды" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Записи в блогах" diff --git a/evibes/locale/sv_SE/LC_MESSAGES/django.mo b/evibes/locale/sv_SE/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..95d2ef57174c4f6a7ceb1faab7fc711669f35b56 GIT binary patch literal 8357 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 EAMGumYybcN literal 0 HcmV?d00001 diff --git a/evibes/locale/sv_SE/LC_MESSAGES/django.po b/evibes/locale/sv_SE/LC_MESSAGES/django.po new file mode 100644 index 00000000..10e86569 --- /dev/null +++ b/evibes/locale/sv_SE/LC_MESSAGES/django.po @@ -0,0 +1,299 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: sv-se\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Företagets namn" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Företagets adress" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Telefonnummer till företaget" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Skattesats i ditt företags jurisdiktion. Lämna 0 om du inte vill behandla " +"skatter." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "Visar om skatterna redan är inkluderade i produktens försäljningspris" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "API-nyckel för växelkurs" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!ÄNDRA INTE!!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP-värd" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTP-port" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Använd TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Använd SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "SMTP-användarnamn" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "SMTP-lösenord" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Mail från alternativ" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Hur många dagar vi lagrar meddelanden från anonyma användare" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "Hur många dagar vi lagrar meddelanden från autentiserade användare" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Inaktivera köpfunktionalitet" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "OpenStreetMap Nominatim API URL" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI API-nyckel" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Abstrakt API-nyckel" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP-proxy" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "En enhet för lagring av annonseringsdata" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "En enhet för lagring av analysdata" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Spara svar från leverantörers API:er" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Säkerhetskopiera databas" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Backup media" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Juridiska alternativ" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Alternativ för e-post" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Funktioner Alternativ" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "SEO-alternativ" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Systemalternativ" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"Välkommen till eVibes dokumentation.\n" +"\n" +"eVibes är en kraftfull e-handelsplattform som gör att du kan starta och hantera en onlinebutik av alla slag med bara några få klick.\n" +"\n" +"## Viktiga funktioner\n" +"- Produktkatalog:** Hantera produktinformation, priser, lager och tillgänglighet i flera kategorier.\n" +"- ** Orderhantering:** Behandla beställningar, spåra uppfyllande och hantera kundförfrågningar effektivt.\n" +"- Autentisering och auktorisering: ** Omfattande användarautentisering med JWT-tokens och rollbaserade behörigheter.\n" +"- **Betalningshantering:** Integrera flera betalningsgateways och hantera transaktioner på ett säkert sätt.\n" +"- **Blogg & Content Management:** Skapa och hantera blogginlägg och marknadsföringsinnehåll för din butik.\n" +"- **B2B Operations:** Dedikerade slutpunkter för transaktioner mellan företag och grossisthantering.\n" +"- Stöd för flera språk: ** Betjäna kunder över hela världen med fullständiga internationaliseringsfunktioner (i18n).\n" +"- **Kundanpassade integrationer:** Utökad API-arkitektur för integrering med externa plattformar och tjänster.\n" +"- **Analys och rapportering:** Generera detaljerade rapporter om försäljning, lager och kundbeteende.\n" +"- Uppdateringar i realtid: ** Få live-data om lagernivåer, orderstatus och prisändringar.\n" +"\n" +"## Tillgängliga API:er\n" +"- **REST API:** Fullständigt RESTful-gränssnitt (denna dokumentation)\n" +"- **GraphQL API:** Tillgängligt på `/graphql/` med GraphiQL-gränssnitt för interaktiva frågor\n" +"\n" +"## Autentisering\n" +"- Autentisering hanteras via JWT-tokens. Inkludera token i `X-EVIBES-AUTH`-huvudet för dina förfrågningar i formatet `Bearer `.\n" +"- Åtkomsttokenens livstid är {access_lifetime} {access_unit}.\n" +"- Uppdateringstokenens livslängd är {refresh_hours} timmar.\n" +"- Uppdateringstokens roteras automatiskt och ogiltigförklaras efter användning för ökad säkerhet.\n" +"\n" +"## Internationalisering (i18n)\n" +"- Ange önskat språk i rubriken `Accept-Language` (t.ex. `Accept-Language: en-US`).\n" +"- Tillgängliga språk kan hämtas från slutpunkten `/app/languages/`.\n" +"- Allt innehåll som vänder sig till användare stöder flera språk direkt.\n" +"\n" +"## Svarsformat\n" +"API:et stöder flera olika svarsformat:\n" +"- **JSON** (standard, camelCase-formaterad)\n" +"- **XML** (lägg till `?format=xml` eller ställ in `Accept: application/xml`)\n" +"- **YAML** (lägg till `?format=yaml` eller ställ in `Accept: application/x-yaml`)\n" +"\n" +"## Hälsa och övervakning\n" +"- Hälsokontroller: `/hälsa/`\n" +"- Prometheus-mätvärden: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Aktuell API-version: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Min webbplats" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Hälsa" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Stöd" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Meny" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Instrumentpanel" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Konfig" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Periodiska uppgifter" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Uppgiftstavla" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Snabblänkar" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Användare" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Grupper" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Beställningar" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Produkter" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Kategorier" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Brands" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blogginlägg" diff --git a/evibes/locale/th_TH/LC_MESSAGES/django.mo b/evibes/locale/th_TH/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..770c4a7227c07f553d011ca161813d3564053f19 GIT binary patch literal 12923 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 U%A*4P4~gEH{GY_=_Y3cT0hilGxBvhE literal 0 HcmV?d00001 diff --git a/evibes/locale/th_TH/LC_MESSAGES/django.po b/evibes/locale/th_TH/LC_MESSAGES/django.po new file mode 100644 index 00000000..92c291df --- /dev/null +++ b/evibes/locale/th_TH/LC_MESSAGES/django.po @@ -0,0 +1,263 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: th-th\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "ชื่อบริษัท" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "ที่อยู่ของบริษัท" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "หมายเลขโทรศัพท์ของบริษัท" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"อัตราภาษีในเขตอำนาจศาลของบริษัทของคุณ. ให้เป็น 0 " +"หากคุณไม่ต้องการดำเนินการภาษี." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "แสดงว่าภาษีรวมอยู่ในราคาขายของสินค้าแล้วหรือไม่" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "คีย์ API อัตราแลกเปลี่ยน" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!ห้ามเปลี่ยนแปลง!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "โฮสต์ SMTP" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "พอร์ต SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "ใช้ TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "ใช้ SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "ชื่อผู้ใช้ SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "รหัสผ่าน SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "จดหมายจากตัวเลือก" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "เราเก็บข้อความจากผู้ใช้ที่ไม่ระบุตัวตนไว้กี่วัน" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "เราเก็บข้อความจากผู้ใช้ที่ผ่านการยืนยันตัวตนไว้กี่วัน" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "ปิดการใช้งานฟังก์ชันการซื้อ" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "URL ของ API OpenStreetMap Nominatim" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "คีย์ API ของ OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "คีย์ API แบบนามธรรม" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP พร็อกซี" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "หน่วยงานสำหรับเก็บข้อมูลโฆษณา" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "หน่วยงานสำหรับเก็บข้อมูลการวิเคราะห์" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "บันทึกการตอบกลับจาก API ของผู้ขาย" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "ฐานข้อมูลสำรอง" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "สื่อสำรองข้อมูล" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "ทางเลือกทางกฎหมาย" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "ตัวเลือกอีเมล" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "คุณสมบัติ ตัวเลือก" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "ตัวเลือก SEO" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "ตัวเลือกระบบ" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\nยินดีต้อนรับสู่เอกสารคู่มือของ eVibes eVibes เป็นแพลตฟอร์มอีคอมเมิร์ซที่ทรงพลังซึ่งช่วยให้คุณสามารถเปิดตัวและจัดการร้านค้าออนไลน์ได้ทุกประเภทเพียงแค่ไม่กี่คลิก ## คุณสมบัติหลัก - **แคตตาล็อกสินค้า:** จัดการรายละเอียดสินค้า ราคาสินค้า สินค้าคงคลัง และความพร้อมจำหน่ายในหลายหมวดหมู่ - **การจัดการคำสั่งซื้อ:** ประมวลผลคำสั่งซื้อ ติดตามการจัดส่ง และจัดการคำขอของลูกค้าอย่างมีประสิทธิภาพ\n" +"- **การตรวจสอบสิทธิ์และการอนุญาต:** การตรวจสอบสิทธิ์ผู้ใช้อย่างครอบคลุมด้วยโทเค็น JWT และสิทธิ์ตามบทบาท - **การประมวลผลการชำระเงิน:** ผสานรวมเกตเวย์การชำระเงินหลายช่องทางและจัดการธุรกรรมอย่างปลอดภัย - **การจัดการบล็อกและเนื้อหา:** สร้างและจัดการโพสต์บล็อกและเนื้อหาการตลาดสำหรับร้านค้าของคุณ - **การดำเนินงาน B2B:** จุดสิ้นสุดเฉพาะสำหรับการทำธุรกรรมระหว่างธุรกิจและการจัดการขายส่ง\n" +"- **รองรับหลายภาษา:** ให้บริการลูกค้าทั่วโลกด้วยความสามารถในการรองรับภาษาสากลอย่างเต็มรูปแบบ (i18n) - **การผสานระบบแบบกำหนดเอง:** สถาปัตยกรรม API ที่สามารถขยายได้สำหรับการผสานกับแพลตฟอร์มและบริการภายนอก - **การวิเคราะห์และรายงาน:** สร้างรายงานละเอียดเกี่ยวกับยอดขาย, สินค้าคงคลัง, และพฤติกรรมของลูกค้า - **การอัปเดตแบบเรียลไทม์:** รับข้อมูลสดเกี่ยวกับระดับสินค้าคงคลัง, สถานะการสั่งซื้อ, และการเปลี่ยนแปลงราคา\n" +"\n" +"## API ที่มีให้บริการ - **REST API:** อินเทอร์เฟซ RESTful แบบเต็มรูปแบบ (เอกสารนี้) - **GraphQL API:** สามารถใช้งานได้ที่ `/graphql/` พร้อมอินเทอร์เฟซ GraphiQL สำหรับการสืบค้นแบบโต้ตอบ ## การยืนยันตัวตน - การยืนยันตัวตนดำเนินการผ่านโทเค็น JWT โปรดใส่โทเค็นในหัวข้อ `X-EVIBES-AUTH` ของคำขอของคุณในรูปแบบ `Bearer `\n" +"- ระยะเวลาการใช้งานของโทเค็นการเข้าถึงคือ {access_lifetime} {access_unit}. - ระยะเวลาการใช้งานของโทเค็นการรีเฟรชคือ {refresh_hours} ชั่วโมง. - โทเค็นการรีเฟรชจะถูกหมุนเวียนและยกเลิกการใช้งานโดยอัตโนมัติหลังการใช้งานเพื่อเพิ่มความปลอดภัย. ## การแปลภาษา (i18n) - ตั้งค่าหัวข้อ `Accept-Language` เพื่อระบุภาษาที่คุณต้องการ (เช่น `Accept-Language: en-US`).\n" +"- ภาษาที่มีให้บริการสามารถดึงข้อมูลได้จากจุดสิ้นสุด `/app/languages/` - เนื้อหาที่แสดงต่อผู้ใช้ทั้งหมดรองรับหลายภาษาโดยอัตโนมัติ ## รูปแบบการตอบกลับ API รองรับรูปแบบการตอบกลับหลายรูปแบบ: - **JSON** (ค่าเริ่มต้น, รูปแบบ camelCase) - **XML** (เพิ่ม `?format=xml` หรือตั้งค่า `Accept: application/xml`)\n" +"- **YAML** (เพิ่ม `?format=yaml` หรือตั้งค่า `Accept: application/x-yaml`) ## สุขภาพและการตรวจสอบ - การตรวจสอบสุขภาพ: `/health/` - เมตริก Prometheus: `/prometheus/metrics/` ## เวอร์ชัน เวอร์ชัน API ปัจจุบัน: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "เว็บไซต์ของฉัน" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "สุขภาพ" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "การสนับสนุน" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "เมนู" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "แดชบอร์ด" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "การกำหนดค่า" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "งานประจำ" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "กระดานงาน" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "ลิงก์ด่วน" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "ผู้ใช้" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "กลุ่ม" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "คำสั่ง" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "ผลิตภัณฑ์" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "หมวดหมู่" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "แบรนด์" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "บทความบล็อก" diff --git a/evibes/locale/tr_TR/LC_MESSAGES/django.mo b/evibes/locale/tr_TR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..db871a8cbbc2582fc5bb40c8f3c9963356091e9f GIT binary patch literal 8725 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\n" +"Language-Team: LANGUAGE \n" +"Language: tr-tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Şirketin adı" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Şirketin adresi" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Şirketin telefon numarası" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Şirketinizin yetki alanındaki vergi oranı. Vergi işlemek istemiyorsanız 0 " +"bırakın." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "Vergilerin ürünün satış fiyatına dahil edilip edilmediğini gösterir" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Döviz kuru API anahtarı" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!! DEĞIŞTIRMEYIN!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP ana bilgisayarı" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTP bağlantı noktası" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "TLS kullanın" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "SSL kullanın" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "SMTP kullanıcı adı" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "SMTP şifresi" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Posta seçeneği" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "Anonim kullanıcılardan gelen mesajları kaç gün saklıyoruz" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "" +"Kimliği doğrulanmış kullanıcılardan gelen mesajları kaç gün saklıyoruz" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Satın alma işlevini devre dışı bırakın" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "OpenStreetMap Nominatim API URL'si" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI API Anahtarı" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Soyut API Anahtarı" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP Proxy" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Reklam verilerini depolamak için bir varlık" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Analitik verileri depolamak için bir varlık" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Satıcıların API'lerinden gelen yanıtları kaydedin" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Yedek veritabanı" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Yedekleme ortamı" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Yasal Seçenekler" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "E-posta Seçenekleri" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Özellikler Seçenekler" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "SEO Seçenekleri" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Sistem Seçenekleri" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"eVibes belgelerine hoş geldiniz.\n" +"\n" +"eVibes, sadece birkaç tıklamayla her türlü çevrimiçi mağazayı açmanıza ve yönetmenize olanak tanıyan güçlü bir e-ticaret platformudur.\n" +"\n" +"## Temel Özellikler\n" +"- Ürün Kataloğu:** Birden fazla kategoride ürün ayrıntılarını, fiyatlandırmayı, envanteri ve kullanılabilirliği yönetin.\n" +"- Sipariş Yönetimi:** Siparişleri işleyin, gönderimi takip edin ve müşteri taleplerini verimli bir şekilde ele alın.\n" +"- Kimlik Doğrulama ve Yetkilendirme:** JWT belirteçleri ve rol tabanlı izinler ile kapsamlı kullanıcı kimlik doğrulaması.\n" +"- **Ödeme İşleme:** Birden fazla ödeme ağ geçidini entegre edin ve işlemleri güvenli bir şekilde yönetin.\n" +"- **Blog ve İçerik Yönetimi:** Mağazanız için blog gönderileri ve pazarlama içeriği oluşturun ve yönetin.\n" +"- **B2B İşlemleri:** İşletmeler arası işlemler ve toptan satış yönetimi için özel uç noktalar.\n" +"- Çoklu Dil Desteği:** Tam uluslararasılaştırma (i18n) yetenekleri ile dünya çapındaki müşterilere hizmet verin.\n" +"- Özel Entegrasyonlar:** Harici platformlar ve hizmetlerle entegrasyon için genişletilebilir API mimarisi.\n" +"- Analitik ve Raporlama:** Satış, envanter ve müşteri davranışları hakkında ayrıntılı raporlar oluşturun.\n" +"- Gerçek Zamanlı Güncellemeler:** Envanter seviyeleri, sipariş durumları ve fiyat değişiklikleri hakkında canlı veriler alın.\n" +"\n" +"## Mevcut API'ler\n" +"- **REST API:** Tam RESTful arayüz (bu dokümantasyon)\n" +"- **GraphQL API:** Etkileşimli sorgular için GraphiQL arayüzü ile `/graphql/` adresinde mevcuttur\n" +"\n" +"## Kimlik Doğrulama\n" +"- Kimlik doğrulama JWT belirteçleri aracılığıyla gerçekleştirilir. Belirteci, isteklerinizin `X-EVIBES-AUTH` başlığına `Bearer ` biçiminde ekleyin.\n" +"- Erişim belirteci ömrü {access_lifetime} {access_unit}.\n" +"- Yenileme belirteci ömrü {refresh_hours} saattir.\n" +"- Yenileme belirteçleri, gelişmiş güvenlik için kullanımdan sonra otomatik olarak döndürülür ve geçersiz kılınır.\n" +"\n" +"## Uluslararasılaştırma (i18n)\n" +"- Tercih ettiğiniz dili belirtmek için `Accept-Language` başlığını ayarlayın (örneğin, `Accept-Language: en-US`).\n" +"- Mevcut diller `/app/languages/` uç noktasından alınabilir.\n" +"- Kullanıcıya yönelik tüm içerikler kutudan çıkar çıkmaz birden fazla dili destekler.\n" +"\n" +"## Yanıt Biçimleri\n" +"API birden fazla yanıt biçimini destekler:\n" +"- **JSON** (varsayılan, camelCase biçimlendirilmiş)\n" +"- **XML** (`?format=xml` ekleyin veya `Accept: application/xml` olarak ayarlayın)\n" +"- **YAML** (`?format=yaml` ekleyin veya `Accept: application/x-yaml` olarak ayarlayın)\n" +"\n" +"## Sağlık ve İzleme\n" +"- Sağlık kontrolleri: `/health/`\n" +"- Prometheus ölçümleri: `/prometheus/metrics/`\n" +"\n" +"## Sürüm\n" +"Geçerli API sürümü: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Benim sitem" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Sağlık" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Destek" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Menü" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Gösterge Tablosu" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Konfigürasyon" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Periyodik Görevler" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Görev Panosu" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Hızlı Bağlantılar" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Kullanıcılar" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Gruplar" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Siparişler" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Ürünler" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Kategoriler" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Markalar" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Blog Yazıları" diff --git a/evibes/locale/vi_VN/LC_MESSAGES/django.mo b/evibes/locale/vi_VN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..82d0c3b0a6167ddde9f7ce8c5698186353cf47af GIT binary patch literal 9311 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 ZA1V8hmqr>kxd$74miw@^1BYho{{WrEk@)}s literal 0 HcmV?d00001 diff --git a/evibes/locale/vi_VN/LC_MESSAGES/django.po b/evibes/locale/vi_VN/LC_MESSAGES/django.po new file mode 100644 index 00000000..b547a817 --- /dev/null +++ b/evibes/locale/vi_VN/LC_MESSAGES/django.po @@ -0,0 +1,265 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-21 00:51+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: vi-vn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "Tên công ty" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "Địa chỉ của công ty" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "Số điện thoại của công ty" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "" +"Tỷ lệ thuế tại khu vực pháp lý của công ty bạn. Để trống ô này nếu bạn không" +" muốn xử lý thuế." + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "Hiển thị xem thuế đã được tính vào giá bán của sản phẩm hay chưa." + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "Khóa API tỷ giá hối đoái" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "!!!KHÔNG THAY ĐỔI!!!" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "Máy chủ SMTP" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "Cổng SMTP" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "Sử dụng TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "Sử dụng SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "Tên người dùng SMTP" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "Mật khẩu SMTP" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "Thư từ tùy chọn" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "" +"Chúng tôi lưu trữ tin nhắn từ người dùng ẩn danh trong bao nhiêu ngày?" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "" +"Chúng tôi lưu trữ tin nhắn từ người dùng đã xác thực trong bao nhiêu ngày?" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "Vô hiệu hóa chức năng mua hàng" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "Địa chỉ URL API Nominatim của OpenStreetMap" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "Khóa API OpenAI" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "Tóm tắt Khóa API" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "Proxy HTTP" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "Một thực thể dùng để lưu trữ dữ liệu quảng cáo" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "Một thực thể dùng để lưu trữ dữ liệu phân tích." + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "Lưu trữ các phản hồi từ API của nhà cung cấp" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "Sao lưu cơ sở dữ liệu" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "Phương tiện sao lưu" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "Các lựa chọn pháp lý" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "Tùy chọn email" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "Tính năng và tùy chọn" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "Các tùy chọn SEO" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "Tùy chọn hệ thống" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\nChào mừng đến với tài liệu hướng dẫn của eVibes. eVibes là một nền tảng thương mại điện tử mạnh mẽ cho phép bạn khởi chạy và quản lý cửa hàng trực tuyến bất kỳ loại nào chỉ với vài cú nhấp chuột. ## Tính năng chính - **Danh mục sản phẩm:** Quản lý chi tiết sản phẩm, giá cả, tồn kho và tình trạng sẵn có trên nhiều danh mục. - **Quản lý đơn hàng:** Xử lý đơn hàng, theo dõi quá trình giao hàng và xử lý yêu cầu của khách hàng một cách hiệu quả.\n" +"- **Xác thực & Quyền truy cập:** Hệ thống xác thực người dùng toàn diện với token JWT và quyền truy cập dựa trên vai trò. - **Xử lý thanh toán:** Tích hợp nhiều cổng thanh toán và quản lý giao dịch an toàn. - **Quản lý blog và nội dung:** Tạo và quản lý bài viết blog và nội dung tiếp thị cho cửa hàng của bạn. - **Hoạt động B2B:** Các điểm cuối chuyên dụng cho giao dịch giữa doanh nghiệp và quản lý bán buôn.\n" +"- **Hỗ trợ đa ngôn ngữ:** Phục vụ khách hàng toàn cầu với khả năng quốc tế hóa (i18n) đầy đủ. - **Tích hợp tùy chỉnh:** Kiến trúc API mở rộng để tích hợp với các nền tảng và dịch vụ bên ngoài. - **Phân tích & Báo cáo:** Tạo báo cáo chi tiết về doanh số, hàng tồn kho và hành vi khách hàng. - **Cập nhật thời gian thực:** Nhận dữ liệu trực tiếp về mức tồn kho, trạng thái đơn hàng và thay đổi giá cả.\n" +"\n" +"## Các API có sẵn - **REST API:** Giao diện RESTful đầy đủ (tài liệu này) - **GraphQL API:** Có sẵn tại `/graphql/` với giao diện GraphiQL cho các truy vấn tương tác ## Xác thực - Xác thực được xử lý thông qua token JWT. Bao gồm token trong tiêu đề `X-EVIBES-AUTH` của yêu cầu của bạn theo định dạng `Bearer `.\n" +"- Thời hạn sử dụng của token truy cập là {access_lifetime} {access_unit}. - Thời hạn sử dụng của token làm mới là {refresh_hours} giờ. - Token làm mới được tự động xoay vòng và vô hiệu hóa sau khi sử dụng để tăng cường bảo mật. ## Quốc tế hóa (i18n) - Đặt tiêu đề `Accept-Language` để chỉ định ngôn ngữ ưa thích của bạn (ví dụ: `Accept-Language: en-US`).\n" +"- Các ngôn ngữ có sẵn có thể được lấy từ điểm cuối `/app/languages/`. - Tất cả nội dung hiển thị cho người dùng đều hỗ trợ nhiều ngôn ngữ ngay từ đầu. ## Định dạng phản hồi API hỗ trợ nhiều định dạng phản hồi: - **JSON** (mặc định, định dạng camelCase) - **XML** (thêm `?format=xml` hoặc đặt `Accept: application/xml`)\n" +"- **YAML** (thêm `?format=yaml` hoặc đặt `Accept: application/x-yaml`) ## Sức khỏe & Giám sát - Kiểm tra sức khỏe: `/health/` - Chỉ số Prometheus: `/prometheus/metrics/` ## Phiên bản Phiên bản API hiện tại: {version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "Trang web của tôi" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "Sức khỏe" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "Hỗ trợ" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "Thực đơn" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "Bảng điều khiển" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "Cấu hình" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "Các tác vụ định kỳ" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "Bảng nhiệm vụ" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "Liên kết nhanh" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "Người dùng" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "Nhóm" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "Đơn hàng" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "Sản phẩm" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "Các danh mục" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "Thương hiệu" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "Bài viết trên blog" diff --git a/evibes/locale/zh_Hans/LC_MESSAGES/django.mo b/evibes/locale/zh_Hans/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..abbd27ac39fc3b9851251e436133297643491ec8 GIT binary patch literal 7825 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\n" +"Language-Team: LANGUAGE \n" +"Language: zh-hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: evibes/settings/constance.py:24 +msgid "Name of the company" +msgstr "公司名称" + +#: evibes/settings/constance.py:25 +msgid "Address of the company" +msgstr "公司地址" + +#: evibes/settings/constance.py:28 +msgid "Phone number of the company" +msgstr "公司电话号码" + +#: evibes/settings/constance.py:35 +msgid "" +"Tax rate in jurisdiction of your company. Leave 0 if you don't want to " +"process taxes." +msgstr "贵公司所在地区的税率。如果不想处理税款,请留下 0。" + +#: evibes/settings/constance.py:44 +msgid "Shows if the taxes are already included in product's selling prices" +msgstr "显示税费是否已包含在产品售价中" + +#: evibes/settings/constance.py:52 +msgid "Exchange rate API key" +msgstr "汇率 API 密钥" + +#: evibes/settings/constance.py:58 +msgid "!!!DO NOT CHANGE!!!" +msgstr "不要换" + +#: evibes/settings/constance.py:60 +msgid "SMTP host" +msgstr "SMTP 主机" + +#: evibes/settings/constance.py:61 +msgid "SMTP port" +msgstr "SMTP 端口" + +#: evibes/settings/constance.py:62 +msgid "Use TLS" +msgstr "使用 TLS" + +#: evibes/settings/constance.py:63 +msgid "Use SSL" +msgstr "使用 SSL" + +#: evibes/settings/constance.py:66 +msgid "SMTP username" +msgstr "SMTP 用户名" + +#: evibes/settings/constance.py:70 +msgid "SMTP password" +msgstr "SMTP 密码" + +#: evibes/settings/constance.py:72 +msgid "Mail from option" +msgstr "从选项发送邮件" + +#: evibes/settings/constance.py:76 +msgid "How many days we store messages from anonymous users" +msgstr "我们将匿名用户的信息保存多少天" + +#: evibes/settings/constance.py:80 +msgid "How many days we store messages from authenticated users" +msgstr "我们会将已验证用户的信息保存多少天" + +#: evibes/settings/constance.py:84 +msgid "Disable buy functionality" +msgstr "禁用购买功能" + +#: evibes/settings/constance.py:88 +msgid "OpenStreetMap Nominatim API URL" +msgstr "OpenStreetMap Nominatim API URL" + +#: evibes/settings/constance.py:92 +msgid "OpenAI API Key" +msgstr "OpenAI API 密钥" + +#: evibes/settings/constance.py:96 +msgid "Abstract API Key" +msgstr "抽象应用程序接口密钥" + +#: evibes/settings/constance.py:104 +msgid "HTTP Proxy" +msgstr "HTTP 代理服务器" + +#: evibes/settings/constance.py:112 +msgid "An entity for storing advertisiment data" +msgstr "存储广告数据的实体" + +#: evibes/settings/constance.py:120 +msgid "An entity for storing analytics data" +msgstr "存储分析数据的实体" + +#: evibes/settings/constance.py:125 +msgid "Save responses from vendors' APIs" +msgstr "保存来自供应商应用程序接口的响应" + +#: evibes/settings/constance.py:126 +msgid "Backup database" +msgstr "备份数据库" + +#: evibes/settings/constance.py:127 +msgid "Backup media" +msgstr "备份介质" + +#: evibes/settings/constance.py:133 +msgid "Legal Options" +msgstr "法律选择" + +#: evibes/settings/constance.py:141 +msgid "Email Options" +msgstr "电子邮件选项" + +#: evibes/settings/constance.py:151 +msgid "Features Options" +msgstr "功能选项" + +#: evibes/settings/constance.py:160 +msgid "SEO Options" +msgstr "搜索引擎优化选项" + +#: evibes/settings/constance.py:164 +msgid "System Options" +msgstr "系统选项" + +#: evibes/settings/drf.py:51 +#, python-brace-format +msgid "" +"\n" +"Welcome to the eVibes documentation.\n" +"\n" +"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"\n" +"## Available APIs\n" +"- **REST API:** Full RESTful interface (this documentation)\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {access_lifetime} {access_unit}.\n" +"- Refresh token lifetime is {refresh_hours} hours.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"\n" +"## Internationalization (i18n)\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Available languages can be retrieved from the `/app/languages/` endpoint.\n" +"- All user-facing content supports multiple languages out of the box.\n" +"\n" +"## Response Formats\n" +"The API supports multiple response formats:\n" +"- **JSON** (default, camelCase formatted)\n" +"- **XML** (add `?format=xml` or set `Accept: application/xml`)\n" +"- **YAML** (add `?format=yaml` or set `Accept: application/x-yaml`)\n" +"\n" +"## Health & Monitoring\n" +"- Health checks: `/health/`\n" +"- Prometheus metrics: `/prometheus/metrics/`\n" +"\n" +"## Version\n" +"Current API version: {version}\n" +msgstr "" +"\n" +"欢迎使用 eVibes 文档。\n" +"\n" +"eVibes 是一个功能强大的电子商务平台,只需点击几下,您就可以创建和管理任何类型的网上商店。\n" +"\n" +"## 关键功能\n" +"- 产品目录:** 管理多个类别的产品详情、定价、库存和可用性。\n" +"- 订单管理:** 处理订单、跟踪执行情况并有效处理客户请求。\n" +"- 身份验证和授权:** 使用 JWT 标记和基于角色的权限进行全面的用户身份验证。\n" +"- 支付处理:** 集成多种支付网关,安全管理交易。\n" +"- 博客和内容管理:** 为您的商店创建和管理博客文章和营销内容。\n" +"- B2B 业务:** 用于企业对企业交易和批发管理的专用端点。\n" +"- 多语言支持:** 通过全面的国际化(i18n)功能为全球客户提供服务。\n" +"- 自定义集成:** 可扩展的应用程序接口架构,用于与外部平台和服务集成。\n" +"- 分析和报告:** 生成有关销售、库存和客户行为的详细报告。\n" +"- 实时更新:** 获取有关库存水平、订单状态和定价变化的实时数据。\n" +"\n" +"## 可用的应用程序接口\n" +"- REST API:** 完整的 REST 接口(本文档)\n" +"- **GraphQL 应用程序接口:** 可在 `/graphql/`使用 GraphiQL 接口进行交互式查询\n" +"\n" +"## 验证\n" +"- 通过 JWT 标记进行身份验证。在请求的 `X-EVIBES-AUTH` 头中包含令牌,格式为 `Bearer `。\n" +"- 访问令牌的有效期为 {access_lifetime} {access_unit}。\n" +"- 刷新令牌的有效期为 {refresh_hours} 小时。\n" +"- 刷新令牌在使用后会自动轮换和失效,以增强安全性。\n" +"\n" +"### 国际化(i18n)\n" +"- 设置 `Accept-Language` 标头,指定首选语言(例如,`Accept-Language: en-US`)。\n" +"- 可从 `/app/languages/` 端点检索可用语言。\n" +"- 所有面向用户的内容均支持多种语言。\n" +"\n" +"## 响应格式\n" +"应用程序接口支持多种响应格式:\n" +"- **JSON**(默认,驼峰编码格式)\n" +"- **XML**(添加 `?format=xml` 或设置 `Accept: application/xml`)\n" +"- **YAML**(添加 `?format=yaml`或设置`Accept: application/x-yaml)\n" +"\n" +"## 健康与监控\n" +"- 健康检查:健康检查\n" +"- Prometheus 指标:`/prometheus/metrics/`\n" +"\n" +"## 版本\n" +"当前的 API 版本:{version}\n" + +#: evibes/settings/unfold.py:28 +msgid "My site" +msgstr "我的网站" + +#: evibes/settings/unfold.py:36 +msgid "Health" +msgstr "健康" + +#: evibes/settings/unfold.py:40 +msgid "Support" +msgstr "支持" + +#: evibes/settings/unfold.py:77 +msgid "Menu" +msgstr "菜单" + +#: evibes/settings/unfold.py:82 +msgid "Dashboard" +msgstr "仪表板" + +#: evibes/settings/unfold.py:87 +msgid "Config" +msgstr "配置" + +#: evibes/settings/unfold.py:92 +msgid "Periodic Tasks" +msgstr "定期任务" + +#: evibes/settings/unfold.py:119 +msgid "Taskboard" +msgstr "任务板" + +#: evibes/settings/unfold.py:131 +msgid "Quick Links" +msgstr "快速链接" + +#: evibes/settings/unfold.py:136 +msgid "Users" +msgstr "用户" + +#: evibes/settings/unfold.py:141 +msgid "Groups" +msgstr "组别" + +#: evibes/settings/unfold.py:146 +msgid "Orders" +msgstr "订单" + +#: evibes/settings/unfold.py:151 +msgid "Products" +msgstr "产品" + +#: evibes/settings/unfold.py:156 +msgid "Categories" +msgstr "类别" + +#: evibes/settings/unfold.py:161 +msgid "Brands" +msgstr "品牌" + +#: evibes/settings/unfold.py:166 +msgid "Blogposts" +msgstr "博客文章" From e9219c8918d1091fbcc64420e609b4b7a26f61ab Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Mon, 22 Dec 2025 13:53:04 +0300 Subject: [PATCH 8/9] Fixes: 1) Correct invalid return type in `get_children`; 2) Update default return value from `{}` to `[]`; Extra: 1) Adjust inline comments for better clarity; 2) General cleanup in `simple.py`. --- engine/core/serializers/simple.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engine/core/serializers/simple.py b/engine/core/serializers/simple.py index f862b01b..a2fec54c 100644 --- a/engine/core/serializers/simple.py +++ b/engine/core/serializers/simple.py @@ -52,7 +52,7 @@ class CategorySimpleSerializer(ModelSerializer): "children", ] - def get_children(self, obj: Category) -> dict[str, Any]: + def get_children(self, obj: Category) -> list[dict[str, Any]]: request = self.context.get("request") if request is not None and request.user.has_perm("view_category"): children = obj.children.all() @@ -63,8 +63,8 @@ class CategorySimpleSerializer(ModelSerializer): serializer = CategorySimpleSerializer( children, many=True, context=self.context ) - return dict(serializer.data) # ty: ignore[invalid-return-type] - return {} + return list(serializer.data) + return [] class BrandSimpleSerializer(ModelSerializer): From b6d38d07e54f31b268c9d3b4862bf9e840d410f3 Mon Sep 17 00:00:00 2001 From: fureunoir Date: Thu, 25 Dec 2025 14:50:37 +0300 Subject: [PATCH 9/9] - Improve pagination logic: add default and validation for page size, fix `get_paginated_response` behavior. - Update type annotations in `check_translated` command for app config handling. - Pin and upgrade dependencies in `pyproject.toml` for consistency and latest features. --- .../management/commands/check_translated.py | 4 +- evibes/pagination.py | 16 +- pyproject.toml | 30 +- uv.lock | 303 ++++++++++-------- 4 files changed, 190 insertions(+), 163 deletions(-) diff --git a/engine/core/management/commands/check_translated.py b/engine/core/management/commands/check_translated.py index c3a1eeb6..d496c2f2 100644 --- a/engine/core/management/commands/check_translated.py +++ b/engine/core/management/commands/check_translated.py @@ -6,7 +6,7 @@ from tempfile import NamedTemporaryFile from typing import Any import polib -from django.apps import apps +from django.apps import AppConfig, apps from django.conf import settings from django.core.management.base import BaseCommand, CommandError @@ -103,7 +103,7 @@ class Command(BaseCommand): apps_to_scan = set(TRANSLATABLE_APPS) root_path: str = options.get("root_path") or "/app/" - configs = list(apps.get_app_configs()) + configs: list[AppConfig | RootDirectory] = list(apps.get_app_configs()) # noinspection PyTypeChecker configs.append(RootDirectory()) diff --git a/evibes/pagination.py b/evibes/pagination.py index bdda17f3..24bf41ea 100644 --- a/evibes/pagination.py +++ b/evibes/pagination.py @@ -1,5 +1,6 @@ from typing import Any +from django.core.paginator import Paginator from rest_framework.pagination import PageNumberPagination from rest_framework.response import Response @@ -9,9 +10,14 @@ class CustomPagination(PageNumberPagination): "page_size" # name of the query parameter, you can use any ) - def get_paginated_response(self, data: dict[str, Any]) -> Response: + def get_paginated_response(self, data: list[dict[Any, Any]]) -> Response: + if not self.page_size: + self.page_size = 88 + if not 1 <= self.page_size <= 255: + raise ValueError("Page size must be between 1 and 255") if not self.page: - raise RuntimeError + paginator = Paginator(data, self.page_size) + self.page = paginator.page(1) return Response( { "links": { @@ -19,9 +25,9 @@ class CustomPagination(PageNumberPagination): "backward": self.get_previous_link(), }, "counts": { - "total_pages": None or self.page.paginator.num_pages, - "page_size": None or self.page_size, - "total_items": None or self.page.paginator.count, + "total_pages": self.page.paginator.num_pages, + "page_size": self.page_size, + "total_items": self.page.paginator.count, }, "data": data, } diff --git a/pyproject.toml b/pyproject.toml index be495925..8ee773b2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ dependencies = [ "aiogram==3.23.0", "aiosmtpd==1.4.6", "channels==4.3.2", - "channels-redis>=4.3.0", + "channels-redis==4.3.0", "colorlog==6.10.1", "coverage==7.13.0", "click==8.3.1", @@ -22,8 +22,8 @@ dependencies = [ "django-elasticsearch-dsl==8.2", "django-extensions==4.1", "django-filter==25.2", - "django-health-check==3.20.0", - "django-import-export[all]>=4.3.14", + "django-health-check==3.20.8", + "django-import-export[all]==4.3.14", "django-json-widget==2.1.1", "django-mailbox==4.10.1", "django-model-utils==5.0.0", @@ -44,10 +44,10 @@ dependencies = [ "djangorestframework-xml==2.0.0", "djangorestframework-yaml==2.0.0", "djangoql==0.18.1", - "docutils==0.22.3", + "docutils==0.22.4", "drf-spectacular[sidecar]==0.29.0", - "drf-spectacular-websocket>=1.3.1", - "drf-orjson-renderer>=1.8.0", + "drf-spectacular-websocket==1.3.1", + "drf-orjson-renderer==1.8.0", "elasticsearch-dsl==8.18.0", "filelock==3.20.1", "filetype==1.2.0", @@ -57,24 +57,24 @@ dependencies = [ "httpx==0.28.1", "paramiko==4.0.0", "pillow==12.0.0", - "pip>=25.3", + "pip==25.3", "polib==1.2.0", "PyJWT==2.10.1", "pytest==9.0.2", "pytest-django==4.11.1", "python-slugify==8.0.4", - "psutil==7.1.3", - "psycopg2==2.9.11", + "psutil==7.2.0", + "psycopg2-binary==2.9.11", "pymdown-extensions==10.19.1", "redis==7.1.0", "requests==2.32.5", "sentry-sdk[django,celery,opentelemetry]==2.48.0", "six==1.17.0", "swapper==1.4.0", - "uvicorn==0.38.0", + "uvicorn==0.40.0", "zeep==4.3.2", "websockets==15.0.1", - "whitenoise>=6.11.0", + "whitenoise==6.11.0", ] [project.optional-dependencies] @@ -86,9 +86,9 @@ worker = [ "celery-prometheus-exporter==1.7.0", ] linting = [ - "ty==0.0.3", - "ruff==0.14.9", - "celery-types>=0.23.0", + "ty==0.0.7", + "ruff==0.14.10", + "celery-types==0.24.0", "django-stubs==5.2.8", "djangorestframework-stubs==3.16.6", "types-requests==2.32.4.20250913", @@ -99,7 +99,7 @@ linting = [ "types-docutils==0.22.3.20251115", "types-six==1.17.0.20251009", ] -openai = ["openai==2.13.0"] +openai = ["openai==2.14.0"] jupyter = ["jupyter==1.1.1"] [tool.uv] diff --git a/uv.lock b/uv.lock index 5c6f470e..64b775ef 100644 --- a/uv.lock +++ b/uv.lock @@ -382,14 +382,14 @@ sdist = { url = "https://files.pythonhosted.org/packages/c5/3f/c7ae53ad33c736c48 [[package]] name = "celery-types" -version = "0.23.0" +version = "0.24.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e9/d1/0823e71c281e4ad0044e278cf1577d1a68e05f2809424bf94e1614925c5d/celery_types-0.23.0.tar.gz", hash = "sha256:402ed0555aea3cd5e1e6248f4632e4f18eec8edb2435173f9e6dc08449fa101e", size = 31479, upload-time = "2025-03-03T23:56:51.547Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/25/2276a1f00f8ab9fc88128c939333933a24db7df1d75aa57ecc27b7dd3a22/celery_types-0.24.0.tar.gz", hash = "sha256:c93fbcd0b04a9e9c2f55d5540aca4aa1ea4cc06a870c0c8dee5062fdd59663fe", size = 33148, upload-time = "2025-12-23T17:16:30.847Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/8b/92bb54dd74d145221c3854aa245c84f4dc04cc9366147496182cec8e88e3/celery_types-0.23.0-py3-none-any.whl", hash = "sha256:0cc495b8d7729891b7e070d0ec8d4906d2373209656a6e8b8276fe1ed306af9a", size = 50189, upload-time = "2025-03-03T23:56:50.458Z" }, + { url = "https://files.pythonhosted.org/packages/3a/7e/3252cba5f5c9a65a3f52a69734d8e51e023db8981022b503e8183cf0225e/celery_types-0.24.0-py3-none-any.whl", hash = "sha256:a21e04681e68719a208335e556a79909da4be9c5e0d6d2fd0dd4c5615954b3fd", size = 60473, upload-time = "2025-12-23T17:16:29.89Z" }, ] [[package]] @@ -869,14 +869,14 @@ wheels = [ [[package]] name = "django-health-check" -version = "3.20.0" +version = "3.20.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1e/a5/5c33c7dc834df3351f9acf448e8fec97b096db32c94265885a1062841199/django_health_check-3.20.0.tar.gz", hash = "sha256:cd69ac5facf73fe7241d9492d939b57bd20e24f46c4edea91e6a900bf22c2d8e", size = 20641, upload-time = "2025-06-16T09:22:35.015Z" } +sdist = { url = "https://files.pythonhosted.org/packages/03/e4/6700a587b75c89ea3ba14240be5d5412b825dcb6ec0b1f76e60a310daafb/django_health_check-3.20.8.tar.gz", hash = "sha256:bbb7286af4b4e2079d262eeb3e68014c8980f8fcfbd295bca1ec31cbf827b83c", size = 15664, upload-time = "2025-12-22T23:58:58.78Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/7f/49ba63f078015b0a52e09651b94ba16b41154ac7079c83153edd14e15ca0/django_health_check-3.20.0-py3-none-any.whl", hash = "sha256:bcb2b8f36f463cead0564a028345c5b17e2a2d18e9cc88ecd611b13a26521926", size = 31788, upload-time = "2025-06-16T09:22:32.069Z" }, + { url = "https://files.pythonhosted.org/packages/2b/1f/6f508be8c39d45cff06c4fda7f50a137c627a2fbe970cef451111c6199f2/django_health_check-3.20.8-py3-none-any.whl", hash = "sha256:89f06fd3ecfefb13a8444cbc49508c76f1f49c816624026f720a28e0e67a458c", size = 29522, upload-time = "2025-12-22T23:58:57.226Z" }, ] [[package]] @@ -1202,11 +1202,11 @@ wheels = [ [[package]] name = "docutils" -version = "0.22.3" +version = "0.22.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d9/02/111134bfeb6e6c7ac4c74594e39a59f6c0195dc4846afbeac3cba60f1927/docutils-0.22.3.tar.gz", hash = "sha256:21486ae730e4ca9f622677b1412b879af1791efcfba517e4c6f60be543fc8cdd", size = 2290153, upload-time = "2025-11-06T02:35:55.655Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/b6/03bb70946330e88ffec97aefd3ea75ba575cb2e762061e0e62a213befee8/docutils-0.22.4.tar.gz", hash = "sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968", size = 2291750, upload-time = "2025-12-18T19:00:26.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/a8/c6a4b901d17399c77cd81fb001ce8961e9f5e04d3daf27e8925cb012e163/docutils-0.22.3-py3-none-any.whl", hash = "sha256:bd772e4aca73aff037958d44f2be5229ded4c09927fcf8690c577b66234d6ceb", size = 633032, upload-time = "2025-11-06T02:35:52.391Z" }, + { url = "https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de", size = 633196, upload-time = "2025-12-18T19:00:18.077Z" }, ] [[package]] @@ -1288,16 +1288,16 @@ wheels = [ [[package]] name = "elasticsearch" -version = "8.19.2" +version = "8.19.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "elastic-transport" }, { name = "python-dateutil" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/7b/70b9d16069eda6f91d45fadd9e12faed8e4442f242ca8a81de84bc626f1b/elasticsearch-8.19.2.tar.gz", hash = "sha256:622efa6a3e662db45285f16ab57bf198ea73ac9e137e7ed8b1d1d1e47638959d", size = 797401, upload-time = "2025-10-28T16:36:44.953Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/79/365e306017a9fcfbbefab1a3b588d2404bea8806b36766ff0f886509a20e/elasticsearch-8.19.3.tar.gz", hash = "sha256:e84dd618a220cac25b962790085045dd27ac72e01c0a5d81bd29a2d47a71f03f", size = 800298, upload-time = "2025-12-23T12:56:00.72Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/56/01/6f77d042b83260ef9ed73ea9647dfa0ef8414eba0a3fc57a509a088ad39b/elasticsearch-8.19.2-py3-none-any.whl", hash = "sha256:c16ba20c4c76cf6952e836dae7f4e724e00ba7bf31b94b79472b873683accdd4", size = 949706, upload-time = "2025-10-28T16:36:41.003Z" }, + { url = "https://files.pythonhosted.org/packages/56/0f/ac126833c385b06166d41c486e4911f58ad7791fd1a53dd6e0b8d16ff214/elasticsearch-8.19.3-py3-none-any.whl", hash = "sha256:fe1db2555811192e8a1be78b01234d0a49d32b185ea7eeeb6f059331dee32838", size = 952820, upload-time = "2025-12-23T12:55:56.796Z" }, ] [[package]] @@ -1383,7 +1383,7 @@ dependencies = [ { name = "pip" }, { name = "polib" }, { name = "psutil" }, - { name = "psycopg2" }, + { name = "psycopg2-binary" }, { name = "pyjwt" }, { name = "pymdown-extensions" }, { name = "pytest" }, @@ -1437,9 +1437,9 @@ requires-dist = [ { name = "aiosmtpd", specifier = "==1.4.6" }, { name = "celery", marker = "extra == 'worker'", specifier = "==5.6.0" }, { name = "celery-prometheus-exporter", marker = "extra == 'worker'", specifier = "==1.7.0" }, - { name = "celery-types", marker = "extra == 'linting'", specifier = ">=0.23.0" }, + { name = "celery-types", marker = "extra == 'linting'", specifier = "==0.24.0" }, { name = "channels", specifier = "==4.3.2" }, - { name = "channels-redis", specifier = ">=4.3.0" }, + { name = "channels-redis", specifier = "==4.3.0" }, { name = "click", specifier = "==8.3.1" }, { name = "colorlog", specifier = "==6.10.1" }, { name = "coverage", specifier = "==7.13.0" }, @@ -1454,8 +1454,8 @@ requires-dist = [ { name = "django-elasticsearch-dsl", specifier = "==8.2" }, { name = "django-extensions", specifier = "==4.1" }, { name = "django-filter", specifier = "==25.2" }, - { name = "django-health-check", specifier = "==3.20.0" }, - { name = "django-import-export", extras = ["all"], specifier = ">=4.3.14" }, + { name = "django-health-check", specifier = "==3.20.8" }, + { name = "django-import-export", extras = ["all"], specifier = "==4.3.14" }, { name = "django-json-widget", specifier = "==2.1.1" }, { name = "django-mailbox", specifier = "==4.10.1" }, { name = "django-md-field", specifier = "==0.1.0" }, @@ -1478,10 +1478,10 @@ requires-dist = [ { name = "djangorestframework-stubs", marker = "extra == 'linting'", specifier = "==3.16.6" }, { name = "djangorestframework-xml", specifier = "==2.0.0" }, { name = "djangorestframework-yaml", specifier = "==2.0.0" }, - { name = "docutils", specifier = "==0.22.3" }, - { name = "drf-orjson-renderer", specifier = ">=1.8.0" }, + { name = "docutils", specifier = "==0.22.4" }, + { name = "drf-orjson-renderer", specifier = "==1.8.0" }, { name = "drf-spectacular", extras = ["sidecar"], specifier = "==0.29.0" }, - { name = "drf-spectacular-websocket", specifier = ">=1.3.1" }, + { name = "drf-spectacular-websocket", specifier = "==1.3.1" }, { name = "elasticsearch-dsl", specifier = "==8.18.0" }, { name = "filelock", specifier = "==3.20.1" }, { name = "filetype", specifier = "==1.2.0" }, @@ -1490,13 +1490,13 @@ requires-dist = [ { name = "gunicorn", specifier = "==23.0.0" }, { name = "httpx", specifier = "==0.28.1" }, { name = "jupyter", marker = "extra == 'jupyter'", specifier = "==1.1.1" }, - { name = "openai", marker = "extra == 'openai'", specifier = "==2.13.0" }, + { name = "openai", marker = "extra == 'openai'", specifier = "==2.14.0" }, { name = "paramiko", specifier = "==4.0.0" }, { name = "pillow", specifier = "==12.0.0" }, - { name = "pip", specifier = ">=25.3" }, + { name = "pip", specifier = "==25.3" }, { name = "polib", specifier = "==1.2.0" }, - { name = "psutil", specifier = "==7.1.3" }, - { name = "psycopg2", specifier = "==2.9.11" }, + { name = "psutil", specifier = "==7.2.0" }, + { name = "psycopg2-binary", specifier = "==2.9.11" }, { name = "pygraphviz", marker = "sys_platform != 'win32' and extra == 'graph'", specifier = "==1.14" }, { name = "pyjwt", specifier = "==2.10.1" }, { name = "pymdown-extensions", specifier = "==10.19.1" }, @@ -1505,11 +1505,11 @@ requires-dist = [ { name = "python-slugify", specifier = "==8.0.4" }, { name = "redis", specifier = "==7.1.0" }, { name = "requests", specifier = "==2.32.5" }, - { name = "ruff", marker = "extra == 'linting'", specifier = "==0.14.9" }, + { name = "ruff", marker = "extra == 'linting'", specifier = "==0.14.10" }, { name = "sentry-sdk", extras = ["django", "celery", "opentelemetry"], specifier = "==2.48.0" }, { name = "six", specifier = "==1.17.0" }, { name = "swapper", specifier = "==1.4.0" }, - { name = "ty", marker = "extra == 'linting'", specifier = "==0.0.3" }, + { name = "ty", marker = "extra == 'linting'", specifier = "==0.0.7" }, { name = "types-docutils", marker = "extra == 'linting'", specifier = "==0.22.3.20251115" }, { name = "types-paramiko", marker = "extra == 'linting'", specifier = "==4.0.0.20250822" }, { name = "types-pillow", marker = "extra == 'linting'", specifier = "==10.2.0.20240822" }, @@ -1517,9 +1517,9 @@ requires-dist = [ { name = "types-redis", marker = "extra == 'linting'", specifier = "==4.6.0.20241004" }, { name = "types-requests", marker = "extra == 'linting'", specifier = "==2.32.4.20250913" }, { name = "types-six", marker = "extra == 'linting'", specifier = "==1.17.0.20251009" }, - { name = "uvicorn", specifier = "==0.38.0" }, + { name = "uvicorn", specifier = "==0.40.0" }, { name = "websockets", specifier = "==15.0.1" }, - { name = "whitenoise", specifier = ">=6.11.0" }, + { name = "whitenoise", specifier = "==6.11.0" }, { name = "zeep", specifier = "==4.3.2" }, ] provides-extras = ["graph", "worker", "linting", "openai", "jupyter"] @@ -1772,14 +1772,14 @@ wheels = [ [[package]] name = "importlib-metadata" -version = "8.7.0" +version = "8.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" }, ] [[package]] @@ -2367,11 +2367,11 @@ wheels = [ [[package]] name = "mistune" -version = "3.1.4" +version = "3.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/02/a7fb8b21d4d55ac93cdcde9d3638da5dd0ebdd3a4fed76c7725e10b81cbe/mistune-3.1.4.tar.gz", hash = "sha256:b5a7f801d389f724ec702840c11d8fc48f2b33519102fc7ee739e8177b672164", size = 94588, upload-time = "2025-08-29T07:20:43.594Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/55/d01f0c4b45ade6536c51170b9043db8b2ec6ddf4a35c7ea3f5f559ac935b/mistune-3.2.0.tar.gz", hash = "sha256:708487c8a8cdd99c9d90eb3ed4c3ed961246ff78ac82f03418f5183ab70e398a", size = 95467, upload-time = "2025-12-23T11:36:34.994Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl", hash = "sha256:93691da911e5d9d2e23bc54472892aff676df27a75274962ff9edc210364266d", size = 53481, upload-time = "2025-08-29T07:20:42.218Z" }, + { url = "https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl", hash = "sha256:febdc629a3c78616b94393c6580551e0e34cc289987ec6c35ed3f4be42d0eee1", size = 53598, upload-time = "2025-12-23T11:36:33.211Z" }, ] [[package]] @@ -2465,7 +2465,7 @@ wheels = [ [[package]] name = "nbclient" -version = "0.10.2" +version = "0.10.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-client" }, @@ -2473,9 +2473,9 @@ dependencies = [ { name = "nbformat" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/56/91/1c1d5a4b9a9ebba2b4e32b8c852c2975c872aec1fe42ab5e516b2cecd193/nbclient-0.10.4.tar.gz", hash = "sha256:1e54091b16e6da39e297b0ece3e10f6f29f4ac4e8ee515d29f8a7099bd6553c9", size = 62554, upload-time = "2025-12-23T07:45:46.369Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, + { url = "https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl", hash = "sha256:9162df5a7373d70d606527300a95a975a47c137776cd942e52d9c7e29ff83440", size = 25465, upload-time = "2025-12-23T07:45:44.51Z" }, ] [[package]] @@ -2557,43 +2557,42 @@ wheels = [ [[package]] name = "numpy" -version = "2.3.5" +version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/65/21b3bc86aac7b8f2862db1e808f1ea22b028e30a225a34a5ede9bf8678f2/numpy-2.3.5.tar.gz", hash = "sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0", size = 20584950, upload-time = "2025-11-16T22:52:42.067Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a4/7a/6a3d14e205d292b738db449d0de649b373a59edb0d0b4493821d0a3e8718/numpy-2.4.0.tar.gz", hash = "sha256:6e504f7b16118198f138ef31ba24d985b124c2c469fe8467007cf30fd992f934", size = 20685720, upload-time = "2025-12-20T16:18:19.023Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/37/e669fe6cbb2b96c62f6bbedc6a81c0f3b7362f6a59230b23caa673a85721/numpy-2.3.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:74ae7b798248fe62021dbf3c914245ad45d1a6b0cb4a29ecb4b31d0bfbc4cc3e", size = 16733873, upload-time = "2025-11-16T22:49:49.84Z" }, - { url = "https://files.pythonhosted.org/packages/c5/65/df0db6c097892c9380851ab9e44b52d4f7ba576b833996e0080181c0c439/numpy-2.3.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee3888d9ff7c14604052b2ca5535a30216aa0a58e948cdd3eeb8d3415f638769", size = 12259838, upload-time = "2025-11-16T22:49:52.863Z" }, - { url = "https://files.pythonhosted.org/packages/5b/e1/1ee06e70eb2136797abe847d386e7c0e830b67ad1d43f364dd04fa50d338/numpy-2.3.5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:612a95a17655e213502f60cfb9bf9408efdc9eb1d5f50535cc6eb365d11b42b5", size = 5088378, upload-time = "2025-11-16T22:49:55.055Z" }, - { url = "https://files.pythonhosted.org/packages/6d/9c/1ca85fb86708724275103b81ec4cf1ac1d08f465368acfc8da7ab545bdae/numpy-2.3.5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3101e5177d114a593d79dd79658650fe28b5a0d8abeb8ce6f437c0e6df5be1a4", size = 6628559, upload-time = "2025-11-16T22:49:57.371Z" }, - { url = "https://files.pythonhosted.org/packages/74/78/fcd41e5a0ce4f3f7b003da85825acddae6d7ecb60cf25194741b036ca7d6/numpy-2.3.5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b973c57ff8e184109db042c842423ff4f60446239bd585a5131cc47f06f789d", size = 14250702, upload-time = "2025-11-16T22:49:59.632Z" }, - { url = "https://files.pythonhosted.org/packages/b6/23/2a1b231b8ff672b4c450dac27164a8b2ca7d9b7144f9c02d2396518352eb/numpy-2.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0d8163f43acde9a73c2a33605353a4f1bc4798745a8b1d73183b28e5b435ae28", size = 16606086, upload-time = "2025-11-16T22:50:02.127Z" }, - { url = "https://files.pythonhosted.org/packages/a0/c5/5ad26fbfbe2012e190cc7d5003e4d874b88bb18861d0829edc140a713021/numpy-2.3.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:51c1e14eb1e154ebd80e860722f9e6ed6ec89714ad2db2d3aa33c31d7c12179b", size = 16025985, upload-time = "2025-11-16T22:50:04.536Z" }, - { url = "https://files.pythonhosted.org/packages/d2/fa/dd48e225c46c819288148d9d060b047fd2a6fb1eb37eae25112ee4cb4453/numpy-2.3.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b46b4ec24f7293f23adcd2d146960559aaf8020213de8ad1909dba6c013bf89c", size = 18542976, upload-time = "2025-11-16T22:50:07.557Z" }, - { url = "https://files.pythonhosted.org/packages/05/79/ccbd23a75862d95af03d28b5c6901a1b7da4803181513d52f3b86ed9446e/numpy-2.3.5-cp312-cp312-win32.whl", hash = "sha256:3997b5b3c9a771e157f9aae01dd579ee35ad7109be18db0e85dbdbe1de06e952", size = 6285274, upload-time = "2025-11-16T22:50:10.746Z" }, - { url = "https://files.pythonhosted.org/packages/2d/57/8aeaf160312f7f489dea47ab61e430b5cb051f59a98ae68b7133ce8fa06a/numpy-2.3.5-cp312-cp312-win_amd64.whl", hash = "sha256:86945f2ee6d10cdfd67bcb4069c1662dd711f7e2a4343db5cecec06b87cf31aa", size = 12782922, upload-time = "2025-11-16T22:50:12.811Z" }, - { url = "https://files.pythonhosted.org/packages/78/a6/aae5cc2ca78c45e64b9ef22f089141d661516856cf7c8a54ba434576900d/numpy-2.3.5-cp312-cp312-win_arm64.whl", hash = "sha256:f28620fe26bee16243be2b7b874da327312240a7cdc38b769a697578d2100013", size = 10194667, upload-time = "2025-11-16T22:50:16.16Z" }, - { url = "https://files.pythonhosted.org/packages/db/69/9cde09f36da4b5a505341180a3f2e6fadc352fd4d2b7096ce9778db83f1a/numpy-2.3.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d0f23b44f57077c1ede8c5f26b30f706498b4862d3ff0a7298b8411dd2f043ff", size = 16728251, upload-time = "2025-11-16T22:50:19.013Z" }, - { url = "https://files.pythonhosted.org/packages/79/fb/f505c95ceddd7027347b067689db71ca80bd5ecc926f913f1a23e65cf09b/numpy-2.3.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aa5bc7c5d59d831d9773d1170acac7893ce3a5e130540605770ade83280e7188", size = 12254652, upload-time = "2025-11-16T22:50:21.487Z" }, - { url = "https://files.pythonhosted.org/packages/78/da/8c7738060ca9c31b30e9301ee0cf6c5ffdbf889d9593285a1cead337f9a5/numpy-2.3.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:ccc933afd4d20aad3c00bcef049cb40049f7f196e0397f1109dba6fed63267b0", size = 5083172, upload-time = "2025-11-16T22:50:24.562Z" }, - { url = "https://files.pythonhosted.org/packages/a4/b4/ee5bb2537fb9430fd2ef30a616c3672b991a4129bb1c7dcc42aa0abbe5d7/numpy-2.3.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:afaffc4393205524af9dfa400fa250143a6c3bc646c08c9f5e25a9f4b4d6a903", size = 6622990, upload-time = "2025-11-16T22:50:26.47Z" }, - { url = "https://files.pythonhosted.org/packages/95/03/dc0723a013c7d7c19de5ef29e932c3081df1c14ba582b8b86b5de9db7f0f/numpy-2.3.5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c75442b2209b8470d6d5d8b1c25714270686f14c749028d2199c54e29f20b4d", size = 14248902, upload-time = "2025-11-16T22:50:28.861Z" }, - { url = "https://files.pythonhosted.org/packages/f5/10/ca162f45a102738958dcec8023062dad0cbc17d1ab99d68c4e4a6c45fb2b/numpy-2.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11e06aa0af8c0f05104d56450d6093ee639e15f24ecf62d417329d06e522e017", size = 16597430, upload-time = "2025-11-16T22:50:31.56Z" }, - { url = "https://files.pythonhosted.org/packages/2a/51/c1e29be863588db58175175f057286900b4b3327a1351e706d5e0f8dd679/numpy-2.3.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed89927b86296067b4f81f108a2271d8926467a8868e554eaf370fc27fa3ccaf", size = 16024551, upload-time = "2025-11-16T22:50:34.242Z" }, - { url = "https://files.pythonhosted.org/packages/83/68/8236589d4dbb87253d28259d04d9b814ec0ecce7cb1c7fed29729f4c3a78/numpy-2.3.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51c55fe3451421f3a6ef9a9c1439e82101c57a2c9eab9feb196a62b1a10b58ce", size = 18533275, upload-time = "2025-11-16T22:50:37.651Z" }, - { url = "https://files.pythonhosted.org/packages/40/56/2932d75b6f13465239e3b7b7e511be27f1b8161ca2510854f0b6e521c395/numpy-2.3.5-cp313-cp313-win32.whl", hash = "sha256:1978155dd49972084bd6ef388d66ab70f0c323ddee6f693d539376498720fb7e", size = 6277637, upload-time = "2025-11-16T22:50:40.11Z" }, - { url = "https://files.pythonhosted.org/packages/0c/88/e2eaa6cffb115b85ed7c7c87775cb8bcf0816816bc98ca8dbfa2ee33fe6e/numpy-2.3.5-cp313-cp313-win_amd64.whl", hash = "sha256:00dc4e846108a382c5869e77c6ed514394bdeb3403461d25a829711041217d5b", size = 12779090, upload-time = "2025-11-16T22:50:42.503Z" }, - { url = "https://files.pythonhosted.org/packages/8f/88/3f41e13a44ebd4034ee17baa384acac29ba6a4fcc2aca95f6f08ca0447d1/numpy-2.3.5-cp313-cp313-win_arm64.whl", hash = "sha256:0472f11f6ec23a74a906a00b48a4dcf3849209696dff7c189714511268d103ae", size = 10194710, upload-time = "2025-11-16T22:50:44.971Z" }, - { url = "https://files.pythonhosted.org/packages/13/cb/71744144e13389d577f867f745b7df2d8489463654a918eea2eeb166dfc9/numpy-2.3.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:414802f3b97f3c1eef41e530aaba3b3c1620649871d8cb38c6eaff034c2e16bd", size = 16827292, upload-time = "2025-11-16T22:50:47.715Z" }, - { url = "https://files.pythonhosted.org/packages/71/80/ba9dc6f2a4398e7f42b708a7fdc841bb638d353be255655498edbf9a15a8/numpy-2.3.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5ee6609ac3604fa7780e30a03e5e241a7956f8e2fcfe547d51e3afa5247ac47f", size = 12378897, upload-time = "2025-11-16T22:50:51.327Z" }, - { url = "https://files.pythonhosted.org/packages/2e/6d/db2151b9f64264bcceccd51741aa39b50150de9b602d98ecfe7e0c4bff39/numpy-2.3.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:86d835afea1eaa143012a2d7a3f45a3adce2d7adc8b4961f0b362214d800846a", size = 5207391, upload-time = "2025-11-16T22:50:54.542Z" }, - { url = "https://files.pythonhosted.org/packages/80/ae/429bacace5ccad48a14c4ae5332f6aa8ab9f69524193511d60ccdfdc65fa/numpy-2.3.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:30bc11310e8153ca664b14c5f1b73e94bd0503681fcf136a163de856f3a50139", size = 6721275, upload-time = "2025-11-16T22:50:56.794Z" }, - { url = "https://files.pythonhosted.org/packages/74/5b/1919abf32d8722646a38cd527bc3771eb229a32724ee6ba340ead9b92249/numpy-2.3.5-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1062fde1dcf469571705945b0f221b73928f34a20c904ffb45db101907c3454e", size = 14306855, upload-time = "2025-11-16T22:50:59.208Z" }, - { url = "https://files.pythonhosted.org/packages/a5/87/6831980559434973bebc30cd9c1f21e541a0f2b0c280d43d3afd909b66d0/numpy-2.3.5-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce581db493ea1a96c0556360ede6607496e8bf9b3a8efa66e06477267bc831e9", size = 16657359, upload-time = "2025-11-16T22:51:01.991Z" }, - { url = "https://files.pythonhosted.org/packages/dd/91/c797f544491ee99fd00495f12ebb7802c440c1915811d72ac5b4479a3356/numpy-2.3.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:cc8920d2ec5fa99875b670bb86ddeb21e295cb07aa331810d9e486e0b969d946", size = 16093374, upload-time = "2025-11-16T22:51:05.291Z" }, - { url = "https://files.pythonhosted.org/packages/74/a6/54da03253afcbe7a72785ec4da9c69fb7a17710141ff9ac5fcb2e32dbe64/numpy-2.3.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9ee2197ef8c4f0dfe405d835f3b6a14f5fee7782b5de51ba06fb65fc9b36e9f1", size = 18594587, upload-time = "2025-11-16T22:51:08.585Z" }, - { url = "https://files.pythonhosted.org/packages/80/e9/aff53abbdd41b0ecca94285f325aff42357c6b5abc482a3fcb4994290b18/numpy-2.3.5-cp313-cp313t-win32.whl", hash = "sha256:70b37199913c1bd300ff6e2693316c6f869c7ee16378faf10e4f5e3275b299c3", size = 6405940, upload-time = "2025-11-16T22:51:11.541Z" }, - { url = "https://files.pythonhosted.org/packages/d5/81/50613fec9d4de5480de18d4f8ef59ad7e344d497edbef3cfd80f24f98461/numpy-2.3.5-cp313-cp313t-win_amd64.whl", hash = "sha256:b501b5fa195cc9e24fe102f21ec0a44dffc231d2af79950b451e0d99cea02234", size = 12920341, upload-time = "2025-11-16T22:51:14.312Z" }, - { url = "https://files.pythonhosted.org/packages/bb/ab/08fd63b9a74303947f34f0bd7c5903b9c5532c2d287bead5bdf4c556c486/numpy-2.3.5-cp313-cp313t-win_arm64.whl", hash = "sha256:a80afd79f45f3c4a7d341f13acbe058d1ca8ac017c165d3fa0d3de6bc1a079d7", size = 10262507, upload-time = "2025-11-16T22:51:16.846Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ff/f6400ffec95de41c74b8e73df32e3fff1830633193a7b1e409be7fb1bb8c/numpy-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2a8b6bb8369abefb8bd1801b054ad50e02b3275c8614dc6e5b0373c305291037", size = 16653117, upload-time = "2025-12-20T16:16:06.709Z" }, + { url = "https://files.pythonhosted.org/packages/fd/28/6c23e97450035072e8d830a3c411bf1abd1f42c611ff9d29e3d8f55c6252/numpy-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2e284ca13d5a8367e43734148622caf0b261b275673823593e3e3634a6490f83", size = 12369711, upload-time = "2025-12-20T16:16:08.758Z" }, + { url = "https://files.pythonhosted.org/packages/bc/af/acbef97b630ab1bb45e6a7d01d1452e4251aa88ce680ac36e56c272120ec/numpy-2.4.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:49ff32b09f5aa0cd30a20c2b39db3e669c845589f2b7fc910365210887e39344", size = 5198355, upload-time = "2025-12-20T16:16:10.902Z" }, + { url = "https://files.pythonhosted.org/packages/c1/c8/4e0d436b66b826f2e53330adaa6311f5cac9871a5b5c31ad773b27f25a74/numpy-2.4.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:36cbfb13c152b1c7c184ddac43765db8ad672567e7bafff2cc755a09917ed2e6", size = 6545298, upload-time = "2025-12-20T16:16:12.607Z" }, + { url = "https://files.pythonhosted.org/packages/ef/27/e1f5d144ab54eac34875e79037011d511ac57b21b220063310cb96c80fbc/numpy-2.4.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35ddc8f4914466e6fc954c76527aa91aa763682a4f6d73249ef20b418fe6effb", size = 14398387, upload-time = "2025-12-20T16:16:14.257Z" }, + { url = "https://files.pythonhosted.org/packages/67/64/4cb909dd5ab09a9a5d086eff9586e69e827b88a5585517386879474f4cf7/numpy-2.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc578891de1db95b2a35001b695451767b580bb45753717498213c5ff3c41d63", size = 16363091, upload-time = "2025-12-20T16:16:17.32Z" }, + { url = "https://files.pythonhosted.org/packages/9d/9c/8efe24577523ec6809261859737cf117b0eb6fdb655abdfdc81b2e468ce4/numpy-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98e81648e0b36e325ab67e46b5400a7a6d4a22b8a7c8e8bbfe20e7db7906bf95", size = 16176394, upload-time = "2025-12-20T16:16:19.524Z" }, + { url = "https://files.pythonhosted.org/packages/61/f0/1687441ece7b47a62e45a1f82015352c240765c707928edd8aef875d5951/numpy-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d57b5046c120561ba8fa8e4030fbb8b822f3063910fa901ffadf16e2b7128ad6", size = 18287378, upload-time = "2025-12-20T16:16:22.866Z" }, + { url = "https://files.pythonhosted.org/packages/d3/6f/f868765d44e6fc466467ed810ba9d8d6db1add7d4a748abfa2a4c99a3194/numpy-2.4.0-cp312-cp312-win32.whl", hash = "sha256:92190db305a6f48734d3982f2c60fa30d6b5ee9bff10f2887b930d7b40119f4c", size = 5955432, upload-time = "2025-12-20T16:16:25.06Z" }, + { url = "https://files.pythonhosted.org/packages/d4/b5/94c1e79fcbab38d1ca15e13777477b2914dd2d559b410f96949d6637b085/numpy-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:680060061adb2d74ce352628cb798cfdec399068aa7f07ba9fb818b2b3305f98", size = 12306201, upload-time = "2025-12-20T16:16:26.979Z" }, + { url = "https://files.pythonhosted.org/packages/70/09/c39dadf0b13bb0768cd29d6a3aaff1fb7c6905ac40e9aaeca26b1c086e06/numpy-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:39699233bc72dd482da1415dcb06076e32f60eddc796a796c5fb6c5efce94667", size = 10308234, upload-time = "2025-12-20T16:16:29.417Z" }, + { url = "https://files.pythonhosted.org/packages/a7/0d/853fd96372eda07c824d24adf02e8bc92bb3731b43a9b2a39161c3667cc4/numpy-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a152d86a3ae00ba5f47b3acf3b827509fd0b6cb7d3259665e63dafbad22a75ea", size = 16649088, upload-time = "2025-12-20T16:16:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/e3/37/cc636f1f2a9f585434e20a3e6e63422f70bfe4f7f6698e941db52ea1ac9a/numpy-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:39b19251dec4de8ff8496cd0806cbe27bf0684f765abb1f4809554de93785f2d", size = 12364065, upload-time = "2025-12-20T16:16:33.491Z" }, + { url = "https://files.pythonhosted.org/packages/ed/69/0b78f37ca3690969beee54103ce5f6021709134e8020767e93ba691a72f1/numpy-2.4.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:009bd0ea12d3c784b6639a8457537016ce5172109e585338e11334f6a7bb88ee", size = 5192640, upload-time = "2025-12-20T16:16:35.636Z" }, + { url = "https://files.pythonhosted.org/packages/1d/2a/08569f8252abf590294dbb09a430543ec8f8cc710383abfb3e75cc73aeda/numpy-2.4.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5fe44e277225fd3dff6882d86d3d447205d43532c3627313d17e754fb3905a0e", size = 6541556, upload-time = "2025-12-20T16:16:37.276Z" }, + { url = "https://files.pythonhosted.org/packages/93/e9/a949885a4e177493d61519377952186b6cbfdf1d6002764c664ba28349b5/numpy-2.4.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f935c4493eda9069851058fa0d9e39dbf6286be690066509305e52912714dbb2", size = 14396562, upload-time = "2025-12-20T16:16:38.953Z" }, + { url = "https://files.pythonhosted.org/packages/99/98/9d4ad53b0e9ef901c2ef1d550d2136f5ac42d3fd2988390a6def32e23e48/numpy-2.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8cfa5f29a695cb7438965e6c3e8d06e0416060cf0d709c1b1c1653a939bf5c2a", size = 16351719, upload-time = "2025-12-20T16:16:41.503Z" }, + { url = "https://files.pythonhosted.org/packages/28/de/5f3711a38341d6e8dd619f6353251a0cdd07f3d6d101a8fd46f4ef87f895/numpy-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ba0cb30acd3ef11c94dc27fbfba68940652492bc107075e7ffe23057f9425681", size = 16176053, upload-time = "2025-12-20T16:16:44.552Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5b/2a3753dc43916501b4183532e7ace862e13211042bceafa253afb5c71272/numpy-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:60e8c196cd82cbbd4f130b5290007e13e6de3eca79f0d4d38014769d96a7c475", size = 18277859, upload-time = "2025-12-20T16:16:47.174Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c5/a18bcdd07a941db3076ef489d036ab16d2bfc2eae0cf27e5a26e29189434/numpy-2.4.0-cp313-cp313-win32.whl", hash = "sha256:5f48cb3e88fbc294dc90e215d86fbaf1c852c63dbdb6c3a3e63f45c4b57f7344", size = 5953849, upload-time = "2025-12-20T16:16:49.554Z" }, + { url = "https://files.pythonhosted.org/packages/4f/f1/719010ff8061da6e8a26e1980cf090412d4f5f8060b31f0c45d77dd67a01/numpy-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:a899699294f28f7be8992853c0c60741f16ff199205e2e6cdca155762cbaa59d", size = 12302840, upload-time = "2025-12-20T16:16:51.227Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5a/b3d259083ed8b4d335270c76966cb6cf14a5d1b69e1a608994ac57a659e6/numpy-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:9198f447e1dc5647d07c9a6bbe2063cc0132728cc7175b39dbc796da5b54920d", size = 10308509, upload-time = "2025-12-20T16:16:53.313Z" }, + { url = "https://files.pythonhosted.org/packages/31/01/95edcffd1bb6c0633df4e808130545c4f07383ab629ac7e316fb44fff677/numpy-2.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74623f2ab5cc3f7c886add4f735d1031a1d2be4a4ae63c0546cfd74e7a31ddf6", size = 12491815, upload-time = "2025-12-20T16:16:55.496Z" }, + { url = "https://files.pythonhosted.org/packages/59/ea/5644b8baa92cc1c7163b4b4458c8679852733fa74ca49c942cfa82ded4e0/numpy-2.4.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:0804a8e4ab070d1d35496e65ffd3cf8114c136a2b81f61dfab0de4b218aacfd5", size = 5320321, upload-time = "2025-12-20T16:16:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/26/4e/e10938106d70bc21319bd6a86ae726da37edc802ce35a3a71ecdf1fdfe7f/numpy-2.4.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:02a2038eb27f9443a8b266a66911e926566b5a6ffd1a689b588f7f35b81e7dc3", size = 6641635, upload-time = "2025-12-20T16:16:59.379Z" }, + { url = "https://files.pythonhosted.org/packages/b3/8d/a8828e3eaf5c0b4ab116924df82f24ce3416fa38d0674d8f708ddc6c8aac/numpy-2.4.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1889b3a3f47a7b5bee16bc25a2145bd7cb91897f815ce3499db64c7458b6d91d", size = 14456053, upload-time = "2025-12-20T16:17:01.768Z" }, + { url = "https://files.pythonhosted.org/packages/68/a1/17d97609d87d4520aa5ae2dcfb32305654550ac6a35effb946d303e594ce/numpy-2.4.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85eef4cb5625c47ee6425c58a3502555e10f45ee973da878ac8248ad58c136f3", size = 16401702, upload-time = "2025-12-20T16:17:04.235Z" }, + { url = "https://files.pythonhosted.org/packages/18/32/0f13c1b2d22bea1118356b8b963195446f3af124ed7a5adfa8fdecb1b6ca/numpy-2.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6dc8b7e2f4eb184b37655195f421836cfae6f58197b67e3ffc501f1333d993fa", size = 16242493, upload-time = "2025-12-20T16:17:06.856Z" }, + { url = "https://files.pythonhosted.org/packages/ae/23/48f21e3d309fbc137c068a1475358cbd3a901b3987dcfc97a029ab3068e2/numpy-2.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:44aba2f0cafd287871a495fb3163408b0bd25bbce135c6f621534a07f4f7875c", size = 18324222, upload-time = "2025-12-20T16:17:09.392Z" }, + { url = "https://files.pythonhosted.org/packages/ac/52/41f3d71296a3dcaa4f456aaa3c6fc8e745b43d0552b6bde56571bb4b4a0f/numpy-2.4.0-cp313-cp313t-win32.whl", hash = "sha256:20c115517513831860c573996e395707aa9fb691eb179200125c250e895fcd93", size = 6076216, upload-time = "2025-12-20T16:17:11.437Z" }, + { url = "https://files.pythonhosted.org/packages/35/ff/46fbfe60ab0710d2a2b16995f708750307d30eccbb4c38371ea9e986866e/numpy-2.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:b48e35f4ab6f6a7597c46e301126ceba4c44cd3280e3750f85db48b082624fa4", size = 12444263, upload-time = "2025-12-20T16:17:13.182Z" }, + { url = "https://files.pythonhosted.org/packages/a3/e3/9189ab319c01d2ed556c932ccf55064c5d75bb5850d1df7a482ce0badead/numpy-2.4.0-cp313-cp313t-win_arm64.whl", hash = "sha256:4d1cfce39e511069b11e67cd0bd78ceff31443b7c9e5c04db73c7a19f572967c", size = 10378265, upload-time = "2025-12-20T16:17:15.211Z" }, ] [[package]] @@ -2607,7 +2606,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/97/73/8ade73f6749177003 [[package]] name = "openai" -version = "2.13.0" +version = "2.14.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -2619,9 +2618,9 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/39/8e347e9fda125324d253084bb1b82407e5e3c7777a03dc398f79b2d95626/openai-2.13.0.tar.gz", hash = "sha256:9ff633b07a19469ec476b1e2b5b26c5ef700886524a7a72f65e6f0b5203142d5", size = 626583, upload-time = "2025-12-16T18:19:44.387Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/b1/12fe1c196bea326261718eb037307c1c1fe1dedc2d2d4de777df822e6238/openai-2.14.0.tar.gz", hash = "sha256:419357bedde9402d23bf8f2ee372fca1985a73348debba94bddff06f19459952", size = 626938, upload-time = "2025-12-19T03:28:45.742Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/d5/eb52edff49d3d5ea116e225538c118699ddeb7c29fa17ec28af14bc10033/openai-2.13.0-py3-none-any.whl", hash = "sha256:746521065fed68df2f9c2d85613bb50844343ea81f60009b60e6a600c9352c79", size = 1066837, upload-time = "2025-12-16T18:19:43.124Z" }, + { url = "https://files.pythonhosted.org/packages/27/4b/7c1a00c2c3fbd004253937f7520f692a9650767aa73894d7a34f0d65d3f4/openai-2.14.0-py3-none-any.whl", hash = "sha256:7ea40aca4ffc4c4a776e77679021b47eec1160e341f42ae086ba949c9dcc9183", size = 1067558, upload-time = "2025-12-19T03:28:43.727Z" }, ] [[package]] @@ -3006,32 +3005,54 @@ wheels = [ [[package]] name = "psutil" -version = "7.1.3" +version = "7.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e1/88/bdd0a41e5857d5d703287598cbf08dad90aed56774ea52ae071bae9071b6/psutil-7.1.3.tar.gz", hash = "sha256:6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74", size = 489059, upload-time = "2025-11-02T12:25:54.619Z" } +sdist = { url = "https://files.pythonhosted.org/packages/be/7c/31d1c3ceb1260301f87565f50689dc6da3db427ece1e1e012af22abca54e/psutil-7.2.0.tar.gz", hash = "sha256:2e4f8e1552f77d14dc96fb0f6240c5b34a37081c0889f0853b3b29a496e5ef64", size = 489863, upload-time = "2025-12-23T20:26:24.616Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/93/0c49e776b8734fef56ec9c5c57f923922f2cf0497d62e0f419465f28f3d0/psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc", size = 239751, upload-time = "2025-11-02T12:25:58.161Z" }, - { url = "https://files.pythonhosted.org/packages/6f/8d/b31e39c769e70780f007969815195a55c81a63efebdd4dbe9e7a113adb2f/psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0", size = 240368, upload-time = "2025-11-02T12:26:00.491Z" }, - { url = "https://files.pythonhosted.org/packages/62/61/23fd4acc3c9eebbf6b6c78bcd89e5d020cfde4acf0a9233e9d4e3fa698b4/psutil-7.1.3-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7", size = 287134, upload-time = "2025-11-02T12:26:02.613Z" }, - { url = "https://files.pythonhosted.org/packages/30/1c/f921a009ea9ceb51aa355cb0cc118f68d354db36eae18174bab63affb3e6/psutil-7.1.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251", size = 289904, upload-time = "2025-11-02T12:26:05.207Z" }, - { url = "https://files.pythonhosted.org/packages/a6/82/62d68066e13e46a5116df187d319d1724b3f437ddd0f958756fc052677f4/psutil-7.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa", size = 249642, upload-time = "2025-11-02T12:26:07.447Z" }, - { url = "https://files.pythonhosted.org/packages/df/ad/c1cd5fe965c14a0392112f68362cfceb5230819dbb5b1888950d18a11d9f/psutil-7.1.3-cp313-cp313t-win_arm64.whl", hash = "sha256:c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee", size = 245518, upload-time = "2025-11-02T12:26:09.719Z" }, - { url = "https://files.pythonhosted.org/packages/ef/94/46b9154a800253e7ecff5aaacdf8ebf43db99de4a2dfa18575b02548654e/psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab", size = 238359, upload-time = "2025-11-02T12:26:25.284Z" }, - { url = "https://files.pythonhosted.org/packages/68/3a/9f93cff5c025029a36d9a92fef47220ab4692ee7f2be0fba9f92813d0cb8/psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880", size = 239171, upload-time = "2025-11-02T12:26:27.23Z" }, - { url = "https://files.pythonhosted.org/packages/ce/b1/5f49af514f76431ba4eea935b8ad3725cdeb397e9245ab919dbc1d1dc20f/psutil-7.1.3-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3", size = 263261, upload-time = "2025-11-02T12:26:29.48Z" }, - { url = "https://files.pythonhosted.org/packages/e0/95/992c8816a74016eb095e73585d747e0a8ea21a061ed3689474fabb29a395/psutil-7.1.3-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b", size = 264635, upload-time = "2025-11-02T12:26:31.74Z" }, - { url = "https://files.pythonhosted.org/packages/55/4c/c3ed1a622b6ae2fd3c945a366e64eb35247a31e4db16cf5095e269e8eb3c/psutil-7.1.3-cp37-abi3-win_amd64.whl", hash = "sha256:f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd", size = 247633, upload-time = "2025-11-02T12:26:33.887Z" }, - { url = "https://files.pythonhosted.org/packages/c9/ad/33b2ccec09bf96c2b2ef3f9a6f66baac8253d7565d8839e024a6b905d45d/psutil-7.1.3-cp37-abi3-win_arm64.whl", hash = "sha256:bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1", size = 244608, upload-time = "2025-11-02T12:26:36.136Z" }, + { url = "https://files.pythonhosted.org/packages/a8/8e/b35aae6ed19bc4e2286cac4832e4d522fcf00571867b0a85a3f77ef96a80/psutil-7.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c31e927555539132a00380c971816ea43d089bf4bd5f3e918ed8c16776d68474", size = 129593, upload-time = "2025-12-23T20:26:28.019Z" }, + { url = "https://files.pythonhosted.org/packages/61/a2/773d17d74e122bbffe08b97f73f2d4a01ef53fb03b98e61b8e4f64a9c6b9/psutil-7.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:db8e44e766cef86dea47d9a1fa535d38dc76449e5878a92f33683b7dba5bfcb2", size = 130104, upload-time = "2025-12-23T20:26:30.27Z" }, + { url = "https://files.pythonhosted.org/packages/0d/e3/d3a9b3f4bd231abbd70a988beb2e3edd15306051bccbfc4472bd34a56e01/psutil-7.2.0-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85ef849ac92169dedc59a7ac2fb565f47b3468fbe1524bf748746bc21afb94c7", size = 180579, upload-time = "2025-12-23T20:26:32.628Z" }, + { url = "https://files.pythonhosted.org/packages/66/f8/6c73044424aabe1b7824d4d4504029d406648286d8fe7ba8c4682e0d3042/psutil-7.2.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26782bdbae2f5c14ce9ebe8ad2411dc2ca870495e0cd90f8910ede7fa5e27117", size = 183171, upload-time = "2025-12-23T20:26:34.972Z" }, + { url = "https://files.pythonhosted.org/packages/48/7d/76d7a863340885d41826562225a566683e653ee6c9ba03c9f3856afa7d80/psutil-7.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:b7665f612d3b38a583391b95969667a53aaf6c5706dc27a602c9a4874fbf09e4", size = 139055, upload-time = "2025-12-23T20:26:36.848Z" }, + { url = "https://files.pythonhosted.org/packages/a0/48/200054ada0ae4872c8a71db54f3eb6a9af4101680ee6830d373b7fda526b/psutil-7.2.0-cp313-cp313t-win_arm64.whl", hash = "sha256:4413373c174520ae28a24a8974ad8ce6b21f060d27dde94e25f8c73a7effe57a", size = 134737, upload-time = "2025-12-23T20:26:38.784Z" }, + { url = "https://files.pythonhosted.org/packages/40/c5/a49160bf3e165b7b93a60579a353cf5d939d7f878fe5fd369110f1d18043/psutil-7.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:977a2fcd132d15cb05b32b2d85b98d087cad039b0ce435731670ba74da9e6133", size = 128116, upload-time = "2025-12-23T20:26:53.516Z" }, + { url = "https://files.pythonhosted.org/packages/10/a1/c75feb480f60cd768fb6ed00ac362a16a33e5076ec8475a22d8162fb2659/psutil-7.2.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:24151011c21fadd94214d7139d7c6c54569290d7e553989bdf0eab73b13beb8c", size = 128925, upload-time = "2025-12-23T20:26:55.573Z" }, + { url = "https://files.pythonhosted.org/packages/12/ff/e93136587c00a543f4bc768b157fac2c47cd77b180d4f4e5c6efb6ea53a2/psutil-7.2.0-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:91f211ba9279e7c61d9d8f84b713cfc38fa161cb0597d5cb3f1ca742f6848254", size = 154666, upload-time = "2025-12-23T20:26:57.312Z" }, + { url = "https://files.pythonhosted.org/packages/b8/dd/4c2de9c3827c892599d277a69d2224136800870a8a88a80981de905de28d/psutil-7.2.0-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f37415188b7ea98faf90fed51131181646c59098b077550246e2e092e127418b", size = 156109, upload-time = "2025-12-23T20:26:58.851Z" }, + { url = "https://files.pythonhosted.org/packages/81/3f/090943c682d3629968dd0b04826ddcbc760ee1379021dbe316e2ddfcd01b/psutil-7.2.0-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0d12c7ce6ed1128cd81fd54606afa054ac7dbb9773469ebb58cf2f171c49f2ac", size = 148081, upload-time = "2025-12-23T20:27:01.318Z" }, + { url = "https://files.pythonhosted.org/packages/c4/88/c39648ebb8ec182d0364af53cdefe6eddb5f3872ba718b5855a8ff65d6d4/psutil-7.2.0-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ca0faef7976530940dcd39bc5382d0d0d5eb023b186a4901ca341bd8d8684151", size = 147376, upload-time = "2025-12-23T20:27:03.347Z" }, + { url = "https://files.pythonhosted.org/packages/01/a2/5b39e08bd9b27476bc7cce7e21c71a481ad60b81ffac49baf02687a50d7f/psutil-7.2.0-cp37-abi3-win_amd64.whl", hash = "sha256:abdb74137ca232d20250e9ad471f58d500e7743bc8253ba0bfbf26e570c0e437", size = 136910, upload-time = "2025-12-23T20:27:05.289Z" }, + { url = "https://files.pythonhosted.org/packages/59/54/53839db1258c1eaeb4ded57ff202144ebc75b23facc05a74fd98d338b0c6/psutil-7.2.0-cp37-abi3-win_arm64.whl", hash = "sha256:284e71038b3139e7ab3834b63b3eb5aa5565fcd61a681ec746ef9a0a8c457fd2", size = 133807, upload-time = "2025-12-23T20:27:06.825Z" }, ] [[package]] -name = "psycopg2" +name = "psycopg2-binary" version = "2.9.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/89/8d/9d12bc8677c24dad342ec777529bce705b3e785fa05d85122b5502b9ab55/psycopg2-2.9.11.tar.gz", hash = "sha256:964d31caf728e217c697ff77ea69c2ba0865fa41ec20bb00f0977e62fdcc52e3", size = 379598, upload-time = "2025-10-10T11:14:46.075Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/6c/8767aaa597ba424643dc87348c6f1754dd9f48e80fdc1b9f7ca5c3a7c213/psycopg2-binary-2.9.11.tar.gz", hash = "sha256:b6aed9e096bf63f9e75edf2581aa9a7e7186d97ab5c177aa6c87797cd591236c", size = 379620, upload-time = "2025-10-10T11:14:48.041Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/bf/635fbe5dd10ed200afbbfbe98f8602829252ca1cce81cc48fb25ed8dadc0/psycopg2-2.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:e03e4a6dbe87ff81540b434f2e5dc2bddad10296db5eea7bdc995bf5f4162938", size = 2713969, upload-time = "2025-10-10T11:10:15.946Z" }, - { url = "https://files.pythonhosted.org/packages/88/5a/18c8cb13fc6908dc41a483d2c14d927a7a3f29883748747e8cb625da6587/psycopg2-2.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:8dc379166b5b7d5ea66dcebf433011dfc51a7bb8a5fc12367fa05668e5fc53c8", size = 2714048, upload-time = "2025-10-10T11:10:19.816Z" }, + { url = "https://files.pythonhosted.org/packages/d8/91/f870a02f51be4a65987b45a7de4c2e1897dd0d01051e2b559a38fa634e3e/psycopg2_binary-2.9.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:be9b840ac0525a283a96b556616f5b4820e0526addb8dcf6525a0fa162730be4", size = 3756603, upload-time = "2025-10-10T11:11:52.213Z" }, + { url = "https://files.pythonhosted.org/packages/27/fa/cae40e06849b6c9a95eb5c04d419942f00d9eaac8d81626107461e268821/psycopg2_binary-2.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f090b7ddd13ca842ebfe301cd587a76a4cf0913b1e429eb92c1be5dbeb1a19bc", size = 3864509, upload-time = "2025-10-10T11:11:56.452Z" }, + { url = "https://files.pythonhosted.org/packages/2d/75/364847b879eb630b3ac8293798e380e441a957c53657995053c5ec39a316/psycopg2_binary-2.9.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ab8905b5dcb05bf3fb22e0cf90e10f469563486ffb6a96569e51f897c750a76a", size = 4411159, upload-time = "2025-10-10T11:12:00.49Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a0/567f7ea38b6e1c62aafd58375665a547c00c608a471620c0edc364733e13/psycopg2_binary-2.9.11-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:bf940cd7e7fec19181fdbc29d76911741153d51cab52e5c21165f3262125685e", size = 4468234, upload-time = "2025-10-10T11:12:04.892Z" }, + { url = "https://files.pythonhosted.org/packages/30/da/4e42788fb811bbbfd7b7f045570c062f49e350e1d1f3df056c3fb5763353/psycopg2_binary-2.9.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fa0f693d3c68ae925966f0b14b8edda71696608039f4ed61b1fe9ffa468d16db", size = 4166236, upload-time = "2025-10-10T11:12:11.674Z" }, + { url = "https://files.pythonhosted.org/packages/3c/94/c1777c355bc560992af848d98216148be5f1be001af06e06fc49cbded578/psycopg2_binary-2.9.11-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a1cf393f1cdaf6a9b57c0a719a1068ba1069f022a59b8b1fe44b006745b59757", size = 3983083, upload-time = "2025-10-30T02:55:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/bd/42/c9a21edf0e3daa7825ed04a4a8588686c6c14904344344a039556d78aa58/psycopg2_binary-2.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ef7a6beb4beaa62f88592ccc65df20328029d721db309cb3250b0aae0fa146c3", size = 3652281, upload-time = "2025-10-10T11:12:17.713Z" }, + { url = "https://files.pythonhosted.org/packages/12/22/dedfbcfa97917982301496b6b5e5e6c5531d1f35dd2b488b08d1ebc52482/psycopg2_binary-2.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:31b32c457a6025e74d233957cc9736742ac5a6cb196c6b68499f6bb51390bd6a", size = 3298010, upload-time = "2025-10-10T11:12:22.671Z" }, + { url = "https://files.pythonhosted.org/packages/66/ea/d3390e6696276078bd01b2ece417deac954dfdd552d2edc3d03204416c0c/psycopg2_binary-2.9.11-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:edcb3aeb11cb4bf13a2af3c53a15b3d612edeb6409047ea0b5d6a21a9d744b34", size = 3044641, upload-time = "2025-10-30T02:55:19.929Z" }, + { url = "https://files.pythonhosted.org/packages/12/9a/0402ded6cbd321da0c0ba7d34dc12b29b14f5764c2fc10750daa38e825fc/psycopg2_binary-2.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b6d93d7c0b61a1dd6197d208ab613eb7dcfdcca0a49c42ceb082257991de9d", size = 3347940, upload-time = "2025-10-10T11:12:26.529Z" }, + { url = "https://files.pythonhosted.org/packages/b1/d2/99b55e85832ccde77b211738ff3925a5d73ad183c0b37bcbbe5a8ff04978/psycopg2_binary-2.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:b33fabeb1fde21180479b2d4667e994de7bbf0eec22832ba5d9b5e4cf65b6c6d", size = 2714147, upload-time = "2025-10-10T11:12:29.535Z" }, + { url = "https://files.pythonhosted.org/packages/ff/a8/a2709681b3ac11b0b1786def10006b8995125ba268c9a54bea6f5ae8bd3e/psycopg2_binary-2.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b8fb3db325435d34235b044b199e56cdf9ff41223a4b9752e8576465170bb38c", size = 3756572, upload-time = "2025-10-10T11:12:32.873Z" }, + { url = "https://files.pythonhosted.org/packages/62/e1/c2b38d256d0dafd32713e9f31982a5b028f4a3651f446be70785f484f472/psycopg2_binary-2.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:366df99e710a2acd90efed3764bb1e28df6c675d33a7fb40df9b7281694432ee", size = 3864529, upload-time = "2025-10-10T11:12:36.791Z" }, + { url = "https://files.pythonhosted.org/packages/11/32/b2ffe8f3853c181e88f0a157c5fb4e383102238d73c52ac6d93a5c8bffe6/psycopg2_binary-2.9.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8c55b385daa2f92cb64b12ec4536c66954ac53654c7f15a203578da4e78105c0", size = 4411242, upload-time = "2025-10-10T11:12:42.388Z" }, + { url = "https://files.pythonhosted.org/packages/10/04/6ca7477e6160ae258dc96f67c371157776564679aefd247b66f4661501a2/psycopg2_binary-2.9.11-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c0377174bf1dd416993d16edc15357f6eb17ac998244cca19bc67cdc0e2e5766", size = 4468258, upload-time = "2025-10-10T11:12:48.654Z" }, + { url = "https://files.pythonhosted.org/packages/3c/7e/6a1a38f86412df101435809f225d57c1a021307dd0689f7a5e7fe83588b1/psycopg2_binary-2.9.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5c6ff3335ce08c75afaed19e08699e8aacf95d4a260b495a4a8545244fe2ceb3", size = 4166295, upload-time = "2025-10-10T11:12:52.525Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7d/c07374c501b45f3579a9eb761cbf2604ddef3d96ad48679112c2c5aa9c25/psycopg2_binary-2.9.11-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:84011ba3109e06ac412f95399b704d3d6950e386b7994475b231cf61eec2fc1f", size = 3983133, upload-time = "2025-10-30T02:55:24.329Z" }, + { url = "https://files.pythonhosted.org/packages/82/56/993b7104cb8345ad7d4516538ccf8f0d0ac640b1ebd8c754a7b024e76878/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ba34475ceb08cccbdd98f6b46916917ae6eeb92b5ae111df10b544c3a4621dc4", size = 3652383, upload-time = "2025-10-10T11:12:56.387Z" }, + { url = "https://files.pythonhosted.org/packages/2d/ac/eaeb6029362fd8d454a27374d84c6866c82c33bfc24587b4face5a8e43ef/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b31e90fdd0f968c2de3b26ab014314fe814225b6c324f770952f7d38abf17e3c", size = 3298168, upload-time = "2025-10-10T11:13:00.403Z" }, + { url = "https://files.pythonhosted.org/packages/2b/39/50c3facc66bded9ada5cbc0de867499a703dc6bca6be03070b4e3b65da6c/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:d526864e0f67f74937a8fce859bd56c979f5e2ec57ca7c627f5f1071ef7fee60", size = 3044712, upload-time = "2025-10-30T02:55:27.975Z" }, + { url = "https://files.pythonhosted.org/packages/9c/8e/b7de019a1f562f72ada81081a12823d3c1590bedc48d7d2559410a2763fe/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:04195548662fa544626c8ea0f06561eb6203f1984ba5b4562764fbeb4c3d14b1", size = 3347549, upload-time = "2025-10-10T11:13:03.971Z" }, + { url = "https://files.pythonhosted.org/packages/80/2d/1bb683f64737bbb1f86c82b7359db1eb2be4e2c0c13b947f80efefa7d3e5/psycopg2_binary-2.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:efff12b432179443f54e230fdf60de1f6cc726b6c832db8701227d089310e8aa", size = 2714215, upload-time = "2025-10-10T11:13:07.14Z" }, ] [[package]] @@ -3481,28 +3502,28 @@ wheels = [ [[package]] name = "ruff" -version = "0.14.9" +version = "0.14.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/1b/ab712a9d5044435be8e9a2beb17cbfa4c241aa9b5e4413febac2a8b79ef2/ruff-0.14.9.tar.gz", hash = "sha256:35f85b25dd586381c0cc053f48826109384c81c00ad7ef1bd977bfcc28119d5b", size = 5809165, upload-time = "2025-12-11T21:39:47.381Z" } +sdist = { url = "https://files.pythonhosted.org/packages/57/08/52232a877978dd8f9cf2aeddce3e611b40a63287dfca29b6b8da791f5e8d/ruff-0.14.10.tar.gz", hash = "sha256:9a2e830f075d1a42cd28420d7809ace390832a490ed0966fe373ba288e77aaf4", size = 5859763, upload-time = "2025-12-18T19:28:57.98Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/1c/d1b1bba22cffec02351c78ab9ed4f7d7391876e12720298448b29b7229c1/ruff-0.14.9-py3-none-linux_armv6l.whl", hash = "sha256:f1ec5de1ce150ca6e43691f4a9ef5c04574ad9ca35c8b3b0e18877314aba7e75", size = 13576541, upload-time = "2025-12-11T21:39:14.806Z" }, - { url = "https://files.pythonhosted.org/packages/94/ab/ffe580e6ea1fca67f6337b0af59fc7e683344a43642d2d55d251ff83ceae/ruff-0.14.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ed9d7417a299fc6030b4f26333bf1117ed82a61ea91238558c0268c14e00d0c2", size = 13779363, upload-time = "2025-12-11T21:39:20.29Z" }, - { url = "https://files.pythonhosted.org/packages/7d/f8/2be49047f929d6965401855461e697ab185e1a6a683d914c5c19c7962d9e/ruff-0.14.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d5dc3473c3f0e4a1008d0ef1d75cee24a48e254c8bed3a7afdd2b4392657ed2c", size = 12925292, upload-time = "2025-12-11T21:39:38.757Z" }, - { url = "https://files.pythonhosted.org/packages/9e/e9/08840ff5127916bb989c86f18924fd568938b06f58b60e206176f327c0fe/ruff-0.14.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84bf7c698fc8f3cb8278830fb6b5a47f9bcc1ed8cb4f689b9dd02698fa840697", size = 13362894, upload-time = "2025-12-11T21:39:02.524Z" }, - { url = "https://files.pythonhosted.org/packages/31/1c/5b4e8e7750613ef43390bb58658eaf1d862c0cc3352d139cd718a2cea164/ruff-0.14.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aa733093d1f9d88a5d98988d8834ef5d6f9828d03743bf5e338bf980a19fce27", size = 13311482, upload-time = "2025-12-11T21:39:17.51Z" }, - { url = "https://files.pythonhosted.org/packages/5b/3a/459dce7a8cb35ba1ea3e9c88f19077667a7977234f3b5ab197fad240b404/ruff-0.14.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a1cfb04eda979b20c8c19550c8b5f498df64ff8da151283311ce3199e8b3648", size = 14016100, upload-time = "2025-12-11T21:39:41.948Z" }, - { url = "https://files.pythonhosted.org/packages/a6/31/f064f4ec32524f9956a0890fc6a944e5cf06c63c554e39957d208c0ffc45/ruff-0.14.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1e5cb521e5ccf0008bd74d5595a4580313844a42b9103b7388eca5a12c970743", size = 15477729, upload-time = "2025-12-11T21:39:23.279Z" }, - { url = "https://files.pythonhosted.org/packages/7a/6d/f364252aad36ccd443494bc5f02e41bf677f964b58902a17c0b16c53d890/ruff-0.14.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd429a8926be6bba4befa8cdcf3f4dd2591c413ea5066b1e99155ed245ae42bb", size = 15122386, upload-time = "2025-12-11T21:39:33.125Z" }, - { url = "https://files.pythonhosted.org/packages/20/02/e848787912d16209aba2799a4d5a1775660b6a3d0ab3944a4ccc13e64a02/ruff-0.14.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab208c1b7a492e37caeaf290b1378148f75e13c2225af5d44628b95fd7834273", size = 14497124, upload-time = "2025-12-11T21:38:59.33Z" }, - { url = "https://files.pythonhosted.org/packages/f3/51/0489a6a5595b7760b5dbac0dd82852b510326e7d88d51dbffcd2e07e3ff3/ruff-0.14.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72034534e5b11e8a593f517b2f2f2b273eb68a30978c6a2d40473ad0aaa4cb4a", size = 14195343, upload-time = "2025-12-11T21:39:44.866Z" }, - { url = "https://files.pythonhosted.org/packages/f6/53/3bb8d2fa73e4c2f80acc65213ee0830fa0c49c6479313f7a68a00f39e208/ruff-0.14.9-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:712ff04f44663f1b90a1195f51525836e3413c8a773574a7b7775554269c30ed", size = 14346425, upload-time = "2025-12-11T21:39:05.927Z" }, - { url = "https://files.pythonhosted.org/packages/ad/04/bdb1d0ab876372da3e983896481760867fc84f969c5c09d428e8f01b557f/ruff-0.14.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a111fee1db6f1d5d5810245295527cda1d367c5aa8f42e0fca9a78ede9b4498b", size = 13258768, upload-time = "2025-12-11T21:39:08.691Z" }, - { url = "https://files.pythonhosted.org/packages/40/d9/8bf8e1e41a311afd2abc8ad12be1b6c6c8b925506d9069b67bb5e9a04af3/ruff-0.14.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8769efc71558fecc25eb295ddec7d1030d41a51e9dcf127cbd63ec517f22d567", size = 13326939, upload-time = "2025-12-11T21:39:53.842Z" }, - { url = "https://files.pythonhosted.org/packages/f4/56/a213fa9edb6dd849f1cfbc236206ead10913693c72a67fb7ddc1833bf95d/ruff-0.14.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:347e3bf16197e8a2de17940cd75fd6491e25c0aa7edf7d61aa03f146a1aa885a", size = 13578888, upload-time = "2025-12-11T21:39:35.988Z" }, - { url = "https://files.pythonhosted.org/packages/33/09/6a4a67ffa4abae6bf44c972a4521337ffce9cbc7808faadede754ef7a79c/ruff-0.14.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7715d14e5bccf5b660f54516558aa94781d3eb0838f8e706fb60e3ff6eff03a8", size = 14314473, upload-time = "2025-12-11T21:39:50.78Z" }, - { url = "https://files.pythonhosted.org/packages/12/0d/15cc82da5d83f27a3c6b04f3a232d61bc8c50d38a6cd8da79228e5f8b8d6/ruff-0.14.9-py3-none-win32.whl", hash = "sha256:df0937f30aaabe83da172adaf8937003ff28172f59ca9f17883b4213783df197", size = 13202651, upload-time = "2025-12-11T21:39:26.628Z" }, - { url = "https://files.pythonhosted.org/packages/32/f7/c78b060388eefe0304d9d42e68fab8cffd049128ec466456cef9b8d4f06f/ruff-0.14.9-py3-none-win_amd64.whl", hash = "sha256:c0b53a10e61df15a42ed711ec0bda0c582039cf6c754c49c020084c55b5b0bc2", size = 14702079, upload-time = "2025-12-11T21:39:11.954Z" }, - { url = "https://files.pythonhosted.org/packages/26/09/7a9520315decd2334afa65ed258fed438f070e31f05a2e43dd480a5e5911/ruff-0.14.9-py3-none-win_arm64.whl", hash = "sha256:8e821c366517a074046d92f0e9213ed1c13dbc5b37a7fc20b07f79b64d62cc84", size = 13744730, upload-time = "2025-12-11T21:39:29.659Z" }, + { url = "https://files.pythonhosted.org/packages/60/01/933704d69f3f05ee16ef11406b78881733c186fe14b6a46b05cfcaf6d3b2/ruff-0.14.10-py3-none-linux_armv6l.whl", hash = "sha256:7a3ce585f2ade3e1f29ec1b92df13e3da262178df8c8bdf876f48fa0e8316c49", size = 13527080, upload-time = "2025-12-18T19:29:25.642Z" }, + { url = "https://files.pythonhosted.org/packages/df/58/a0349197a7dfa603ffb7f5b0470391efa79ddc327c1e29c4851e85b09cc5/ruff-0.14.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:674f9be9372907f7257c51f1d4fc902cb7cf014b9980152b802794317941f08f", size = 13797320, upload-time = "2025-12-18T19:29:02.571Z" }, + { url = "https://files.pythonhosted.org/packages/7b/82/36be59f00a6082e38c23536df4e71cdbc6af8d7c707eade97fcad5c98235/ruff-0.14.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d85713d522348837ef9df8efca33ccb8bd6fcfc86a2cde3ccb4bc9d28a18003d", size = 12918434, upload-time = "2025-12-18T19:28:51.202Z" }, + { url = "https://files.pythonhosted.org/packages/a6/00/45c62a7f7e34da92a25804f813ebe05c88aa9e0c25e5cb5a7d23dd7450e3/ruff-0.14.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6987ebe0501ae4f4308d7d24e2d0fe3d7a98430f5adfd0f1fead050a740a3a77", size = 13371961, upload-time = "2025-12-18T19:29:04.991Z" }, + { url = "https://files.pythonhosted.org/packages/40/31/a5906d60f0405f7e57045a70f2d57084a93ca7425f22e1d66904769d1628/ruff-0.14.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16a01dfb7b9e4eee556fbfd5392806b1b8550c9b4a9f6acd3dbe6812b193c70a", size = 13275629, upload-time = "2025-12-18T19:29:21.381Z" }, + { url = "https://files.pythonhosted.org/packages/3e/60/61c0087df21894cf9d928dc04bcd4fb10e8b2e8dca7b1a276ba2155b2002/ruff-0.14.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7165d31a925b7a294465fa81be8c12a0e9b60fb02bf177e79067c867e71f8b1f", size = 14029234, upload-time = "2025-12-18T19:29:00.132Z" }, + { url = "https://files.pythonhosted.org/packages/44/84/77d911bee3b92348b6e5dab5a0c898d87084ea03ac5dc708f46d88407def/ruff-0.14.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c561695675b972effb0c0a45db233f2c816ff3da8dcfbe7dfc7eed625f218935", size = 15449890, upload-time = "2025-12-18T19:28:53.573Z" }, + { url = "https://files.pythonhosted.org/packages/e9/36/480206eaefa24a7ec321582dda580443a8f0671fdbf6b1c80e9c3e93a16a/ruff-0.14.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bb98fcbbc61725968893682fd4df8966a34611239c9fd07a1f6a07e7103d08e", size = 15123172, upload-time = "2025-12-18T19:29:23.453Z" }, + { url = "https://files.pythonhosted.org/packages/5c/38/68e414156015ba80cef5473d57919d27dfb62ec804b96180bafdeaf0e090/ruff-0.14.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f24b47993a9d8cb858429e97bdf8544c78029f09b520af615c1d261bf827001d", size = 14460260, upload-time = "2025-12-18T19:29:27.808Z" }, + { url = "https://files.pythonhosted.org/packages/b3/19/9e050c0dca8aba824d67cc0db69fb459c28d8cd3f6855b1405b3f29cc91d/ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59aabd2e2c4fd614d2862e7939c34a532c04f1084476d6833dddef4afab87e9f", size = 14229978, upload-time = "2025-12-18T19:29:11.32Z" }, + { url = "https://files.pythonhosted.org/packages/51/eb/e8dd1dd6e05b9e695aa9dd420f4577debdd0f87a5ff2fedda33c09e9be8c/ruff-0.14.10-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:213db2b2e44be8625002dbea33bb9c60c66ea2c07c084a00d55732689d697a7f", size = 14338036, upload-time = "2025-12-18T19:29:09.184Z" }, + { url = "https://files.pythonhosted.org/packages/6a/12/f3e3a505db7c19303b70af370d137795fcfec136d670d5de5391e295c134/ruff-0.14.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b914c40ab64865a17a9a5b67911d14df72346a634527240039eb3bd650e5979d", size = 13264051, upload-time = "2025-12-18T19:29:13.431Z" }, + { url = "https://files.pythonhosted.org/packages/08/64/8c3a47eaccfef8ac20e0484e68e0772013eb85802f8a9f7603ca751eb166/ruff-0.14.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1484983559f026788e3a5c07c81ef7d1e97c1c78ed03041a18f75df104c45405", size = 13283998, upload-time = "2025-12-18T19:29:06.994Z" }, + { url = "https://files.pythonhosted.org/packages/12/84/534a5506f4074e5cc0529e5cd96cfc01bb480e460c7edf5af70d2bcae55e/ruff-0.14.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c70427132db492d25f982fffc8d6c7535cc2fd2c83fc8888f05caaa248521e60", size = 13601891, upload-time = "2025-12-18T19:28:55.811Z" }, + { url = "https://files.pythonhosted.org/packages/0d/1e/14c916087d8598917dbad9b2921d340f7884824ad6e9c55de948a93b106d/ruff-0.14.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5bcf45b681e9f1ee6445d317ce1fa9d6cba9a6049542d1c3d5b5958986be8830", size = 14336660, upload-time = "2025-12-18T19:29:16.531Z" }, + { url = "https://files.pythonhosted.org/packages/f2/1c/d7b67ab43f30013b47c12b42d1acd354c195351a3f7a1d67f59e54227ede/ruff-0.14.10-py3-none-win32.whl", hash = "sha256:104c49fc7ab73f3f3a758039adea978869a918f31b73280db175b43a2d9b51d6", size = 13196187, upload-time = "2025-12-18T19:29:19.006Z" }, + { url = "https://files.pythonhosted.org/packages/fb/9c/896c862e13886fae2af961bef3e6312db9ebc6adc2b156fe95e615dee8c1/ruff-0.14.10-py3-none-win_amd64.whl", hash = "sha256:466297bd73638c6bdf06485683e812db1c00c7ac96d4ddd0294a338c62fdc154", size = 14661283, upload-time = "2025-12-18T19:29:30.16Z" }, + { url = "https://files.pythonhosted.org/packages/74/31/b0e29d572670dca3674eeee78e418f20bdf97fa8aa9ea71380885e175ca0/ruff-0.14.10-py3-none-win_arm64.whl", hash = "sha256:e51d046cf6dda98a4633b8a8a771451107413b0f07183b2bef03f075599e44e6", size = 13729839, upload-time = "2025-12-18T19:28:48.636Z" }, ] [[package]] @@ -3576,11 +3597,11 @@ wheels = [ [[package]] name = "sqlparse" -version = "0.5.4" +version = "0.5.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/67/701f86b28d63b2086de47c942eccf8ca2208b3be69715a1119a4e384415a/sqlparse-0.5.4.tar.gz", hash = "sha256:4396a7d3cf1cd679c1be976cf3dc6e0a51d0111e87787e7a8d780e7d5a998f9e", size = 120112, upload-time = "2025-11-28T07:10:18.377Z" } +sdist = { url = "https://files.pythonhosted.org/packages/90/76/437d71068094df0726366574cf3432a4ed754217b436eb7429415cf2d480/sqlparse-0.5.5.tar.gz", hash = "sha256:e20d4a9b0b8585fdf63b10d30066c7c94c5d7a7ec47c889a2d83a3caa93ff28e", size = 120815, upload-time = "2025-12-19T07:17:45.073Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/70/001ee337f7aa888fb2e3f5fd7592a6afc5283adb1ed44ce8df5764070f22/sqlparse-0.5.4-py3-none-any.whl", hash = "sha256:99a9f0314977b76d776a0fcb8554de91b9bb8a18560631d6bc48721d07023dcb", size = 45933, upload-time = "2025-11-28T07:10:19.73Z" }, + { url = "https://files.pythonhosted.org/packages/49/4b/359f28a903c13438ef59ebeee215fb25da53066db67b305c125f1c6d2a25/sqlparse-0.5.5-py3-none-any.whl", hash = "sha256:12a08b3bf3eec877c519589833aed092e2444e68240a3577e8e26148acc7b1ba", size = 46138, upload-time = "2025-12-19T07:17:46.573Z" }, ] [[package]] @@ -3712,27 +3733,27 @@ wheels = [ [[package]] name = "ty" -version = "0.0.3" +version = "0.0.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/cd/aee86c0da3240960d6b7e807f3a41c89bae741495d81ca303200b0103dc9/ty-0.0.3.tar.gz", hash = "sha256:831259e22d3855436701472d4c0da200cd45041bc677eae79415d684f541de8a", size = 4769098, upload-time = "2025-12-18T02:16:49.773Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/43/8be3ec2e2ce6119cff9ee3a207fae0cb4f2b4f8ed6534175130a32be24a7/ty-0.0.7.tar.gz", hash = "sha256:90e53b20b86c418ee41a8385f17da44cc7f916f96f9eee87593423ce8292ca72", size = 4826677, upload-time = "2025-12-24T21:28:49.136Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/ef/2d0d18e8fe6b673d3e1ea642f18404d7edfa9d08310f7203e8f0e7dc862e/ty-0.0.3-py3-none-linux_armv6l.whl", hash = "sha256:cd035bb75acecb78ac1ba8c4cc696f57a586e29d36e84bd691bc3b5b8362794c", size = 9763890, upload-time = "2025-12-18T02:16:56.879Z" }, - { url = "https://files.pythonhosted.org/packages/bb/67/0ae31574619a7264df8cf8e641f246992db22ac1720c2a72953aa31cbe61/ty-0.0.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7708eaf73485e263efc7ef339f8e4487d3f5885779edbeec504fd72e4521c376", size = 9558276, upload-time = "2025-12-18T02:16:45.453Z" }, - { url = "https://files.pythonhosted.org/packages/d7/f7/3b9c033e80910972fca3783e4a52ba9cb7cd5c8b6828a87986646d64082b/ty-0.0.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3113a633f46ec789f6df675b7afc5d3ab20c247c92ae4dbb9aa5b704768c18b2", size = 9094451, upload-time = "2025-12-18T02:17:01.155Z" }, - { url = "https://files.pythonhosted.org/packages/9a/29/9a90ed6bef00142a088965100b5e0a5d11805b9729c151ca598331bbd92b/ty-0.0.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a451f3f73a04bf18e551b1ebebb79b20fac5f09740a353f7e07b5f607b217c4f", size = 9568049, upload-time = "2025-12-18T02:16:28.643Z" }, - { url = "https://files.pythonhosted.org/packages/2f/ab/8daeb12912c2de8a3154db652931f4ad0d27c555faebcaf34af08bcfd0d2/ty-0.0.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f6e926b6de0becf0452e1afad75cb71f889a4777cd14269e5447d46c01b2770", size = 9547711, upload-time = "2025-12-18T02:16:54.464Z" }, - { url = "https://files.pythonhosted.org/packages/91/54/f5c1f293f647beda717fee2448cc927ac0d05f66bebe18647680a67e1d67/ty-0.0.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160e7974150f9f359c31d5808214676d1baa05321ab5a7b29fb09f4906dbdb38", size = 9983225, upload-time = "2025-12-18T02:17:05.672Z" }, - { url = "https://files.pythonhosted.org/packages/95/34/065962cfa2e87c10db839512229940a366b8ca1caffa2254a277b1694e5a/ty-0.0.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:726576df31d4e76934ffc64f2939d4a9bc195c7427452c8c159261ad00bd1b5e", size = 10851148, upload-time = "2025-12-18T02:16:38.354Z" }, - { url = "https://files.pythonhosted.org/packages/54/27/e2a8cbfc33999eef882ccd1b816ed615293f96e96f6df60cd12f84b69ca2/ty-0.0.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5014cf4744c94d9ea7b43314199ddaf52564a80b3d006e4ba0fe982bc42f4e8b", size = 10564441, upload-time = "2025-12-18T02:17:03.584Z" }, - { url = "https://files.pythonhosted.org/packages/91/6d/dcce3e222e59477c1f2b3a012cc76428d7032248138cd5544ad7f1cda7bd/ty-0.0.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a9a51dc040f2718725f34ae6ef51fe8f8bd689e21bd3e82f4e71767034928de", size = 10358651, upload-time = "2025-12-18T02:16:26.091Z" }, - { url = "https://files.pythonhosted.org/packages/53/36/b6d0154b83a5997d607bf1238200271c17223f68aab2c778ded5424f9c1e/ty-0.0.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0e6188eddd3a228c449261bb398e8621d33b92c1fc03599afdfad4388327a48", size = 10120457, upload-time = "2025-12-18T02:16:51.864Z" }, - { url = "https://files.pythonhosted.org/packages/cc/46/05dc826674ee1a451406e4c253c71700a6f707bae88b706a4c9e9bba6919/ty-0.0.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5cc55e08d5d18edf1c5051af02456bd359716f07aae0a305e4cefe7735188540", size = 9551642, upload-time = "2025-12-18T02:16:33.518Z" }, - { url = "https://files.pythonhosted.org/packages/64/8a/f90b60d103fd5ec04ecbac091a64e607e6cd37cec6e718bba17cb2022644/ty-0.0.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:34b2d589412a81d1fd6d7fe461353068496c2bf1f7113742bd6d88d1d57ec3ad", size = 9572234, upload-time = "2025-12-18T02:16:31.013Z" }, - { url = "https://files.pythonhosted.org/packages/e8/72/5d3c6d34562d019ba7f3102b2a6d0c8e9e24ef39e70f09645c36a66765b7/ty-0.0.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:8a065eb2959f141fe4adafc14d57463cfa34f6cc4844a4ed56b2dce1a53a419a", size = 9701682, upload-time = "2025-12-18T02:16:41.379Z" }, - { url = "https://files.pythonhosted.org/packages/ef/44/bda434f788b320c9550a48c549e4a8c507e3d8a6ccb04ba5bd098307ba1e/ty-0.0.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e7177421f830a493f98d22f86d940b5a38788866e6062f680881f19be35ba3bb", size = 10213714, upload-time = "2025-12-18T02:16:35.648Z" }, - { url = "https://files.pythonhosted.org/packages/53/a6/b76a787938026c3d209131e5773de32cf6fc41210e0dd97874aafa20f394/ty-0.0.3-py3-none-win32.whl", hash = "sha256:e3e590bf5f33cb118a53c6d5242eedf7924d45517a5ee676c7a16be3a1389d2f", size = 9160441, upload-time = "2025-12-18T02:16:43.404Z" }, - { url = "https://files.pythonhosted.org/packages/fe/db/da60eb8252768323aee0ce69a08b95011088c003f80204b12380fe562fd2/ty-0.0.3-py3-none-win_amd64.whl", hash = "sha256:5af25b1fed8a536ce8072a9ae6a70cd2b559aa5294d43f57071fbdcd31dd2b0e", size = 10034265, upload-time = "2025-12-18T02:16:47.602Z" }, - { url = "https://files.pythonhosted.org/packages/5f/9c/9045cebdfc394c6f8c1e73a99d3aeda1bc639aace392e8ff4d695f1fab73/ty-0.0.3-py3-none-win_arm64.whl", hash = "sha256:29078b3100351a8b37339771615f13b8e4a4ff52b344d33f774f8d1a665a0ca5", size = 9513095, upload-time = "2025-12-18T02:16:59.073Z" }, + { url = "https://files.pythonhosted.org/packages/6e/56/fafa123acf955089306372add312f16e97aba61f7c4daf74e2bb9c350d23/ty-0.0.7-py3-none-linux_armv6l.whl", hash = "sha256:b30105bd9a0b064497111c50c206d5b6a032f29bcf39f09a12085c3009d72784", size = 9862360, upload-time = "2025-12-24T21:28:36.762Z" }, + { url = "https://files.pythonhosted.org/packages/71/f4/9c30ff498d9a60e24f16d26c0cf93cd03a119913ffa720a77149f02df06e/ty-0.0.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b4df20889115f3d5611a9d9cdedc222e3fd82b5fe87bb0a9f7246e53a23becc7", size = 9712866, upload-time = "2025-12-24T21:28:25.926Z" }, + { url = "https://files.pythonhosted.org/packages/43/84/e06a4a6e4011890027ffee41efbf261b1335103d09009d625ace7f1a60eb/ty-0.0.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f699589d8511e1e17c5a7edfc5f4a4e80f2a6d4a3932a0e9e3422fd32d731472", size = 9221692, upload-time = "2025-12-24T21:28:29.649Z" }, + { url = "https://files.pythonhosted.org/packages/7a/e9/ebb4192d3627730125d40ee403a17dc91bab59d69c3eff286453b3218d01/ty-0.0.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3eaec2d8aa153ee4bcc43b17a384d0f9e66177c8c8127be3358b6b8348b9e3b", size = 9710340, upload-time = "2025-12-24T21:28:55.148Z" }, + { url = "https://files.pythonhosted.org/packages/8f/4a/ec144458a9cfb324d5cb471483094e62e74d73179343dff262a5cca1a1e1/ty-0.0.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:177d160295e6a56bdf0b61f6120bc4502fff301d4d10855ba711c109aa7f37fb", size = 9670317, upload-time = "2025-12-24T21:28:43.096Z" }, + { url = "https://files.pythonhosted.org/packages/b6/94/fe7106fd5e2ac06b81fba7b785a6216774618edc3fda9e17f58efe3cede6/ty-0.0.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30518b95ab5cc83615794cca765a5fb86df39a0d9c3dadc0ab2d787ab7830008", size = 10096517, upload-time = "2025-12-24T21:28:23.667Z" }, + { url = "https://files.pythonhosted.org/packages/45/d9/db96ccfd663c96bdd4bb63db72899198c01445012f939477a5318a563f14/ty-0.0.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:7867b3f75c2d9602cc6fb3b6d462580b707c2d112d4b27037142b0d01f8bfd03", size = 10996406, upload-time = "2025-12-24T21:28:39.134Z" }, + { url = "https://files.pythonhosted.org/packages/94/da/103915c08c3e6a14f95959614646fcdc9a240cd9a039fadbdcd086c819ee/ty-0.0.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:878d45858e209b7904753fbc5155f4cb75dadc20a26bbb77614bfef31580f9ae", size = 10712829, upload-time = "2025-12-24T21:28:27.745Z" }, + { url = "https://files.pythonhosted.org/packages/47/c0/d9be417bc8e459e13e9698978579eec9868f91f4c5d6ef663249967fec8b/ty-0.0.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:651820b193901825afce40ae68f6a51cd64dbfa4b81a45db90061401261f25e4", size = 10486541, upload-time = "2025-12-24T21:28:45.17Z" }, + { url = "https://files.pythonhosted.org/packages/ad/09/d1858c66620d8ae566e021ad0d7168914b1568841f8fe9e439116ce6b440/ty-0.0.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f56a5a0c1c045863b1b70c358a392b3f73b8528c5c571d409f19dd465525e116", size = 10255312, upload-time = "2025-12-24T21:28:53.17Z" }, + { url = "https://files.pythonhosted.org/packages/b6/0a/78f75089db491fd5fcc13d2845a0b2771b7f7d377450c64c6616e9c227bc/ty-0.0.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:748218fbc1f7b7f1b9d14e77d4f3d7fec72af794417e26b0185bdb94153afe1c", size = 9696201, upload-time = "2025-12-24T21:28:57.345Z" }, + { url = "https://files.pythonhosted.org/packages/01/9e/b26e94832fd563fef6f77a4487affc77a027b0e53106422c66aafb37fa01/ty-0.0.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1ff80f3985a52a7358b9069b4a8d223e92cf312544a934a062d6d3a4fb6876b3", size = 9688907, upload-time = "2025-12-24T21:28:59.485Z" }, + { url = "https://files.pythonhosted.org/packages/5a/8f/cc48601fb92c964cf6c34277e0d947076146b7de47aa11b5dbae45e01ce7/ty-0.0.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a808910ce672ba4446699f4c021283208f58f988bcfc3bdbdfc6e005819d9ee0", size = 9829982, upload-time = "2025-12-24T21:28:34.429Z" }, + { url = "https://files.pythonhosted.org/packages/b5/af/7fa9c2bfa25865968bded637f7e71f1a712f4fbede88f487b6a9101ab936/ty-0.0.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:2718fea5f314eda01703fb406ec89b1fc8710b3fc6a09bbd6f7a4f3502ddc889", size = 10361037, upload-time = "2025-12-24T21:28:47.027Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5b/1a6ff1495975cd1c02aa8d03bc5c9d8006eaeb8bf354446f88d70f0518fd/ty-0.0.7-py3-none-win32.whl", hash = "sha256:ae89bb8dc50deb66f34eab3113aa61ac5d7f85ecf16279e5918548085a89021c", size = 9295092, upload-time = "2025-12-24T21:28:51.041Z" }, + { url = "https://files.pythonhosted.org/packages/ff/f6/47e9364635d048002354f84d2d0d6dfc9eb166dc67850739f88e1fec4fc5/ty-0.0.7-py3-none-win_amd64.whl", hash = "sha256:25bd20e3d4d0f07b422f9b42711ba24d28116031273bd23dbda66cec14df1c06", size = 10162816, upload-time = "2025-12-24T21:28:41.006Z" }, + { url = "https://files.pythonhosted.org/packages/7f/f4/c4fc28410c4493982b7481fb23f62bacb02fd2912ebec3b9bc7de18bebb8/ty-0.0.7-py3-none-win_arm64.whl", hash = "sha256:c87d27484dba9fca0053b6a9eee47eecc760aab2bbb8e6eab3d7f81531d1ad0c", size = 9653112, upload-time = "2025-12-24T21:28:31.562Z" }, ] [[package]] @@ -3835,11 +3856,11 @@ wheels = [ [[package]] name = "types-setuptools" -version = "80.9.0.20250822" +version = "80.9.0.20251223" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/19/bd/1e5f949b7cb740c9f0feaac430e301b8f1c5f11a81e26324299ea671a237/types_setuptools-80.9.0.20250822.tar.gz", hash = "sha256:070ea7716968ec67a84c7f7768d9952ff24d28b65b6594797a464f1b3066f965", size = 41296, upload-time = "2025-08-22T03:02:08.771Z" } +sdist = { url = "https://files.pythonhosted.org/packages/00/07/d1b605230730990de20477150191d6dccf6aecc037da94c9960a5d563bc8/types_setuptools-80.9.0.20251223.tar.gz", hash = "sha256:d3411059ae2f5f03985217d86ac6084efea2c9e9cacd5f0869ef950f308169b2", size = 42420, upload-time = "2025-12-23T03:18:26.752Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/2d/475bf15c1cdc172e7a0d665b6e373ebfb1e9bf734d3f2f543d668b07a142/types_setuptools-80.9.0.20250822-py3-none-any.whl", hash = "sha256:53bf881cb9d7e46ed12c76ef76c0aaf28cfe6211d3fab12e0b83620b1a8642c3", size = 63179, upload-time = "2025-08-22T03:02:07.643Z" }, + { url = "https://files.pythonhosted.org/packages/78/5c/b8877da94012dbc6643e4eeca22bca9b99b295be05d161f8a403ae9387c0/types_setuptools-80.9.0.20251223-py3-none-any.whl", hash = "sha256:1b36db79d724c2287d83dc052cf887b47c0da6a2fff044378be0b019545f56e6", size = 64318, upload-time = "2025-12-23T03:18:25.868Z" }, ] [[package]] @@ -3922,15 +3943,15 @@ wheels = [ [[package]] name = "uvicorn" -version = "0.38.0" +version = "0.40.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cb/ce/f06b84e2697fef4688ca63bdb2fdf113ca0a3be33f94488f2cadb690b0cf/uvicorn-0.38.0.tar.gz", hash = "sha256:fd97093bdd120a2609fc0d3afe931d4d4ad688b6e75f0f929fde1bc36fe0e91d", size = 80605, upload-time = "2025-10-18T13:46:44.63Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/d1/8f3c683c9561a4e6689dd3b1d345c815f10f86acd044ee1fb9a4dcd0b8c5/uvicorn-0.40.0.tar.gz", hash = "sha256:839676675e87e73694518b5574fd0f24c9d97b46bea16df7b8c05ea1a51071ea", size = 81761, upload-time = "2025-12-21T14:16:22.45Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/d9/d88e73ca598f4f6ff671fb5fde8a32925c2e08a637303a1d12883c7305fa/uvicorn-0.38.0-py3-none-any.whl", hash = "sha256:48c0afd214ceb59340075b4a052ea1ee91c16fbc2a9b1469cca0e54566977b02", size = 68109, upload-time = "2025-10-18T13:46:42.958Z" }, + { url = "https://files.pythonhosted.org/packages/3d/d8/2083a1daa7439a66f3a48589a57d576aa117726762618f6bb09fe3798796/uvicorn-0.40.0-py3-none-any.whl", hash = "sha256:c6c8f55bc8bf13eb6fa9ff87ad62308bbbc33d0b67f84293151efe87e0d5f2ee", size = 68502, upload-time = "2025-12-21T14:16:21.041Z" }, ] [[package]]

V9e#SbO{g|CeThz=tqV_-( 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 diff --git a/engine/core/locale/ja_JP/LC_MESSAGES/django.po b/engine/core/locale/ja_JP/LC_MESSAGES/django.po index 5166ad81..870cb981 100644 --- a/engine/core/locale/ja_JP/LC_MESSAGES/django.po +++ b/engine/core/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -19,8 +19,7 @@ msgstr "ユニークID" #: engine/core/abstract.py:13 msgid "unique id is used to surely identify any database object" -msgstr "" -"ユニークIDは、データベースオブジェクトを確実に識別するために使用されます。" +msgstr "ユニークIDは、データベースオブジェクトを確実に識別するために使用されます。" #: engine/core/abstract.py:20 msgid "is active" @@ -28,10 +27,9 @@ msgstr "アクティブ" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" -msgstr "" -"falseに設定された場合、このオブジェクトは必要なパーミッションのないユーザーに" -"は見えない。" +"if set to false, this object can't be seen by users without needed " +"permission" +msgstr "falseに設定された場合、このオブジェクトは必要なパーミッションのないユーザーには見えない。" #: engine/core/abstract.py:26 engine/core/choices.py:18 msgid "created" @@ -73,65 +71,65 @@ msgstr "メタデータ" msgid "timestamps" msgstr "タイムスタンプ" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "選択した%(verbose_name_plural)sをアクティブにする" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "選択した項目がアクティブになりました!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "選択された%(verbose_name_plural)sを非アクティブにする" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "選択されたアイテムは無効化されました!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "属性値" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "属性値" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "画像" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "画像" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "在庫" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "株式" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "商品のご注文" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "商品のご注文" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "子供たち" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "コンフィグ" @@ -155,7 +153,8 @@ msgstr "配信" msgid "canceled" msgstr "キャンセル" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "失敗" @@ -193,59 +192,56 @@ msgid "" "negotiation. Language can be selected with Accept-Language and query " "parameter both." msgstr "" -"この API の OpenApi3 スキーマ。フォーマットはコンテントネゴシエーションで選択" -"できる。言語は Accept-Language とクエリパラメータで選択できる。" +"この API の OpenApi3 スキーマ。フォーマットはコンテントネゴシエーションで選択できる。言語は Accept-Language " +"とクエリパラメータで選択できる。" -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "キャッシュI/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "許可されたデータをキャッシュから読み出すには、キーのみを適用する。\n" -"キャッシュにデータを書き込むには、認証付きのキー、データ、タイムアウトを適用" -"する。" +"キャッシュにデータを書き込むには、認証付きのキー、データ、タイムアウトを適用する。" -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "サポートされている言語のリストを取得する" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "アプリケーションの公開可能なパラメータを取得する" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "サポートチームにメッセージを送る" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "CORSされたURLを要求する。httpsのみ許可。" -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "商品、カテゴリー、ブランド間の検索" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "プロジェクト全体のテーブルを検索するグローバル検索エンドポイント" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "ビジネスとして注文を購入する" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -msgstr "" -"提供された `product` と `product_uuid` と `attributes` を使用して、ビジネスと" -"して注文を購入する。" +msgstr "提供された `product` と `product_uuid` と `attributes` を使用して、ビジネスとして注文を購入する。" -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "購入したデジタル注文からデジタル資産をダウンロードする" @@ -270,10 +266,9 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "既存の属性グループを書き換えて、編集不可能なものを保存する。" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" -msgstr "" -"既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存す" -"る。" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" +msgstr "既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存する。" #: engine/core/docs/drf/viewsets.py:118 msgid "list all attributes (simple view)" @@ -297,8 +292,7 @@ msgstr "既存の属性を書き換える。" #: engine/core/docs/drf/viewsets.py:156 msgid "rewrite some fields of an existing attribute saving non-editables" -msgstr "" -"既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" +msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" #: engine/core/docs/drf/viewsets.py:166 msgid "list all attribute values (simple view)" @@ -321,9 +315,9 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "既存の属性値を書き換える。" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" -msgstr "" -"既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" +msgstr "既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" #: engine/core/docs/drf/viewsets.py:219 engine/core/docs/drf/viewsets.py:220 msgid "list all categories (simple view)" @@ -355,9 +349,9 @@ msgstr "編集不可を保存している既存のカテゴリのいくつかの #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEOメタ・スナップショット" @@ -375,11 +369,10 @@ msgstr "スタッフ以外のユーザーについては、自分の注文のみ #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"human_readable_id、order_products.product.name、order_products.product." -"partnumberの大文字小文字を区別しない部分文字列検索" +"human_readable_id、order_products.product.name、order_products.product.partnumberの大文字小文字を区別しない部分文字列検索" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -399,8 +392,7 @@ msgstr "人間が読み取れる正確な注文IDによるフィルタリング" #: engine/core/docs/drf/viewsets.py:336 msgid "Filter by user's email (case-insensitive exact match)" -msgstr "" -"ユーザーのEメールによるフィルタリング(大文字・小文字を区別しない完全一致)" +msgstr "ユーザーのEメールによるフィルタリング(大文字・小文字を区別しない完全一致)" #: engine/core/docs/drf/viewsets.py:341 msgid "Filter by user's UUID" @@ -408,19 +400,15 @@ msgstr "ユーザーのUUIDによるフィルタリング" #: engine/core/docs/drf/viewsets.py:347 msgid "Filter by order status (case-insensitive substring match)" -msgstr "" -"注文ステータスによるフィルタリング(大文字と小文字を区別しない部分文字列マッ" -"チ)" +msgstr "注文ステータスによるフィルタリング(大文字と小文字を区別しない部分文字列マッチ)" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" -"uuid、human_readable_id、user_email、user、status、created、modified、" -"buy_time、randomのいずれかによる順序。降順の場合は'-'をプレフィックスとしてつ" -"ける(例:'-buy_time')。" +"uuid、human_readable_id、user_email、user、status、created、modified、buy_time、randomのいずれかによる順序。降順の場合は'-'をプレフィックスとしてつける(例:'-buy_time')。" #: engine/core/docs/drf/viewsets.py:366 msgid "retrieve a single order (detailed view)" @@ -460,9 +448,8 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用し" -"て購入が完了します。 `force_payment` が使用された場合、トランザクションが開始" -"されます。" +"注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用して購入が完了します。 `force_payment` " +"が使用された場合、トランザクションが開始されます。" #: engine/core/docs/drf/viewsets.py:427 msgid "retrieve current pending order of a user" @@ -472,7 +459,7 @@ msgstr "ユーザーの現在の保留中の注文を取得する" msgid "retrieves a current pending order of an authenticated user" msgstr "認証されたユーザーの現在の保留中の注文を取得します。" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "アカウントを作成せずに注文を購入する" @@ -488,8 +475,7 @@ msgstr "注文に商品を追加する" msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" +msgstr "指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" #: engine/core/docs/drf/viewsets.py:461 msgid "add a list of products to order, quantities will not count" @@ -499,9 +485,7 @@ msgstr "数量はカウントされません。" msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"指定された `product_uuid` と `attributes` を使用して、注文に商品のリストを追" -"加する。" +msgstr "指定された `product_uuid` と `attributes` を使用して、注文に商品のリストを追加する。" #: engine/core/docs/drf/viewsets.py:472 msgid "remove product from order" @@ -511,9 +495,7 @@ msgstr "注文から商品を削除する" msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"指定された `product_uuid` と `attributes` を使用して、注文から商品を削除す" -"る。" +msgstr "指定された `product_uuid` と `attributes` を使用して、注文から商品を削除する。" #: engine/core/docs/drf/viewsets.py:483 msgid "remove product from order, quantities will not count" @@ -523,9 +505,7 @@ msgstr "注文から商品を削除すると、数量はカウントされませ msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" -msgstr "" -"指定された `product_uuid` と `attributes` を用いて、注文から商品のリストを削" -"除する。" +msgstr "指定された `product_uuid` と `attributes` を用いて、注文から商品のリストを削除する。" #: engine/core/docs/drf/viewsets.py:497 msgid "list all wishlists (simple view)" @@ -557,8 +537,7 @@ msgstr "既存の属性を書き換える。" #: engine/core/docs/drf/viewsets.py:537 msgid "rewrite some fields of an existing wishlist saving non-editables" -msgstr "" -"既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" +msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" #: engine/core/docs/drf/viewsets.py:544 msgid "retrieve current pending wishlist of a user" @@ -582,8 +561,7 @@ msgstr "ウィッシュリストから商品を削除する" #: engine/core/docs/drf/viewsets.py:568 msgid "removes a product from an wishlist using the provided `product_uuid`" -msgstr "" -"指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" +msgstr "指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" #: engine/core/docs/drf/viewsets.py:577 msgid "add many products to wishlist" @@ -591,8 +569,7 @@ msgstr "ウィッシュリストに多くの商品を追加する" #: engine/core/docs/drf/viewsets.py:579 msgid "adds many products to an wishlist using the provided `product_uuids`" -msgstr "" -"指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" +msgstr "指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" #: engine/core/docs/drf/viewsets.py:588 msgid "remove many products from wishlist" @@ -601,34 +578,24 @@ msgstr "注文から商品を削除する" #: engine/core/docs/drf/viewsets.py:590 msgid "" "removes many products from an wishlist using the provided `product_uuids`" -msgstr "" -"指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" +msgstr "指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" #: engine/core/docs/drf/viewsets.py:598 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "1つまたは複数の属性名/値のペアでフィルタリングします。 \n" "- シンタックス**:attr_name=method-value[;attr2=method2-value2]...`。\n" -"- メソッド** (省略された場合のデフォルトは `icontains`):`iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- 値の型付け**:boolean, integer, float の場合は `true`/`false`; それ以外の場" -"合は文字列として扱う。 \n" -"- それ以外は文字列として扱われる。 **Base64**: `b64-` をプレフィックスとして" -"つけると、生の値を URL-safe base64-encode することができる。 \n" +"- メソッド** (省略された場合のデフォルトは `icontains`):`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- 値の型付け**:boolean, integer, float の場合は `true`/`false`; それ以外の場合は文字列として扱う。 \n" +"- それ以外は文字列として扱われる。 **Base64**: `b64-` をプレフィックスとしてつけると、生の値を URL-safe base64-encode することができる。 \n" "例 \n" "color=exact-red`、`size=gt-10`、`features=in-[\"wifi\", \"bluetooth\"]`、\n" "b64-description=icontains-aGVhdC1jb2xk`。" @@ -643,12 +610,10 @@ msgstr "(正確には)製品UUID" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"カンマ区切りの並べ替えフィールドのリスト。降順の場合は `-` をプレフィックスと" -"してつける。 \n" +"カンマ区切りの並べ替えフィールドのリスト。降順の場合は `-` をプレフィックスとしてつける。 \n" "**許可:** uuid, rating, name, slug, created, modified, price, random" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -662,9 +627,6 @@ msgid "Product UUID or slug" msgstr "製品UUIDまたはスラグ" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "製品を作る" @@ -675,9 +637,7 @@ msgstr "編集不可能なフィールドを保持したまま、既存の製品 #: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:700 msgid "" "update some fields of an existing product, preserving non-editable fields" -msgstr "" -"編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新す" -"る。" +msgstr "編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新する。" #: engine/core/docs/drf/viewsets.py:719 engine/core/docs/drf/viewsets.py:720 msgid "delete a product" @@ -722,8 +682,8 @@ msgstr "オートコンプリート住所入力" #: engine/core/docs/drf/viewsets.py:848 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -"docker compose exec app poetry run python manage.py deepl_translate -l en-gb " -"-l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " "it-it -l ja-jp -l kk-kz -l n-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" "hans -a core -a geo -a payments -a vibes_auth -a blog" @@ -753,9 +713,7 @@ msgstr "既存のフィードバックを書き換える。" #: engine/core/docs/drf/viewsets.py:909 msgid "rewrite some fields of an existing feedback saving non-editables" -msgstr "" -"既存のフィードバックのいくつかのフィールドを書き換えて、編集不可能なものを保" -"存する。" +msgstr "既存のフィードバックのいくつかのフィールドを書き換えて、編集不可能なものを保存する。" #: engine/core/docs/drf/viewsets.py:919 msgid "list all order–product relations (simple view)" @@ -811,8 +769,7 @@ msgstr "編集不可の既存ブランドをリライトする" #: engine/core/docs/drf/viewsets.py:1039 msgid "rewrite some fields of an existing brand saving non-editables" -msgstr "" -"編集不可能なフィールドを保存している既存ブランドのフィールドを書き換える。" +msgstr "編集不可能なフィールドを保存している既存ブランドのフィールドを書き換える。" #: engine/core/docs/drf/viewsets.py:1064 msgid "list all vendors (simple view)" @@ -836,9 +793,7 @@ msgstr "既存のベンダーを書き換え、編集不可能な部分を保存 #: engine/core/docs/drf/viewsets.py:1102 msgid "rewrite some fields of an existing vendor saving non-editables" -msgstr "" -"既存のベンダーのいくつかのフィールドを書き換えて、編集不可能なフィールドを保" -"存する。" +msgstr "既存のベンダーのいくつかのフィールドを書き換えて、編集不可能なフィールドを保存する。" #: engine/core/docs/drf/viewsets.py:1112 msgid "list all product images (simple view)" @@ -862,9 +817,7 @@ msgstr "既存の商品画像を書き換え、編集不可能な部分を保存 #: engine/core/docs/drf/viewsets.py:1154 msgid "rewrite some fields of an existing product image saving non-editables" -msgstr "" -"既存の商品画像のいくつかのフィールドを書き換えて、編集不可能な部分を保存す" -"る。" +msgstr "既存の商品画像のいくつかのフィールドを書き換えて、編集不可能な部分を保存する。" #: engine/core/docs/drf/viewsets.py:1165 msgid "list all promo codes (simple view)" @@ -888,9 +841,7 @@ msgstr "既存のプロモコードを書き換え、編集不可のプロモコ #: engine/core/docs/drf/viewsets.py:1203 msgid "rewrite some fields of an existing promo code saving non-editables" -msgstr "" -"既存のプロモコードの一部のフィールドを書き換えて、編集不可能な部分を保存す" -"る。" +msgstr "既存のプロモコードの一部のフィールドを書き換えて、編集不可能な部分を保存する。" #: engine/core/docs/drf/viewsets.py:1213 msgid "list all promotions (simple view)" @@ -914,9 +865,7 @@ msgstr "既存のプロモーションを書き換える。" #: engine/core/docs/drf/viewsets.py:1251 msgid "rewrite some fields of an existing promotion saving non-editables" -msgstr "" -"既存のプロモーションのいくつかのフィールドを書き換え、編集不可能な部分を保存" -"する。" +msgstr "既存のプロモーションのいくつかのフィールドを書き換え、編集不可能な部分を保存する。" #: engine/core/docs/drf/viewsets.py:1261 msgid "list all stocks (simple view)" @@ -940,9 +889,7 @@ msgstr "既存のストックレコードを書き換え、編集不可能なも #: engine/core/docs/drf/viewsets.py:1297 msgid "rewrite some fields of an existing stock record saving non-editables" -msgstr "" -"編集不可能なフィールドを保存している既存のストックレコードの一部のフィールド" -"を書き換える。" +msgstr "編集不可能なフィールドを保存している既存のストックレコードの一部のフィールドを書き換える。" #: engine/core/docs/drf/viewsets.py:1308 msgid "list all product tags (simple view)" @@ -966,11 +913,10 @@ msgstr "既存の商品タグを書き換え、編集不可能なものを保存 #: engine/core/docs/drf/viewsets.py:1350 msgid "rewrite some fields of an existing product tag saving non-editables" -msgstr "" -"既存の商品タグの一部のフィールドを書き換えて、編集不可能な部分を保存する。" +msgstr "既存の商品タグの一部のフィールドを書き換えて、編集不可能な部分を保存する。" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "検索語はありません。" @@ -979,8 +925,8 @@ msgstr "検索語はありません。" msgid "Search" msgstr "検索" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "ユーユーアイディー" @@ -1026,8 +972,8 @@ msgid "Quantity" msgstr "数量" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "スラッグ" @@ -1043,14 +989,13 @@ msgstr "サブカテゴリーを含む" msgid "Include personal ordered" msgstr "個人注文商品を含む" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" #: engine/core/filters.py:212 msgid "there must be a category_uuid to use include_subcategories flag" -msgstr "" -"include_subcategoriesフラグを使うには、category_uuidがなければならない。" +msgstr "include_subcategoriesフラグを使うには、category_uuidがなければならない。" #: engine/core/filters.py:398 msgid "Search (ID, product name or part number)" @@ -1065,12 +1010,12 @@ msgid "Bought before (inclusive)" msgstr "以前に購入したもの(含む)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "ユーザーEメール" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "ユーザーUUID" @@ -1094,301 +1039,301 @@ msgstr "カテゴリー全体(少なくとも1つの製品があるかどう msgid "Level" msgstr "レベル" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "製品UUID" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "キャッシュを探すキー、またはキャッシュにセットするキー" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "キャッシュに保存するデータ" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "キャッシュにデータをセットするタイムアウト時間(秒" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "キャッシュ・データ" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "リクエストされたURLからキャメル化されたJSONデータ" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "http(s)://で始まるURLのみが許可されます。" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "注文に商品を追加する" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "注文 {order_uuid} が見つかりません!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "注文から商品を削除する" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "注文からすべての商品を削除する" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "注文する" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "order_uuidまたはorder_hr_idを入力してください!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy()メソッドから間違った型が来た:{type(instance)!s}。" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "注文商品のリストに対してアクションを実行する" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "削除/追加" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "アクションは \"add \"か \"remove \"のどちらかでなければならない!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "ウィッシュリストの商品リストに対してアクションを実行する" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "wishlist_uuid`の値を指定してください。" -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "ウィッシュリスト {wishlist_uuid} が見つかりません!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "注文に商品を追加する" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "注文から商品を削除する" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "注文から商品を削除する" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "注文から商品を削除する" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "注文する" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" -msgstr "" -"属性は、attr1=value1,attr2=value2のような形式の文字列として送信してください。" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" +msgstr "属性は、attr1=value1,attr2=value2のような形式の文字列として送信してください。" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "orderproductに対するフィードバックを追加または削除する。" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "アクションは `add` または `remove` のいずれかでなければならない!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Orderproduct {order_product_uuid} が見つかりません!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "ユーザーが提供したオリジナルのアドレス文字列" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name}は存在しません:{uuid}が存在しません!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "上限は1から10の間でなければならない" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - 魅力のように動作" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "属性" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "グループ化された属性" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "属性のグループ" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "カテゴリー" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "ブランド" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "カテゴリー" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "マークアップ率" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "このカテゴリのフィルタリングに使用できる属性と値。" -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "このカテゴリーの商品の最低価格と最高価格がある場合。" -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "このカテゴリのタグ" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "このカテゴリの製品" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "ベンダー" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "緯度(Y座標)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "経度(X座標)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "どのように" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "1から10までの評価値(設定されていない場合は0)。" -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "ユーザーからのフィードバックを表す。" -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "お知らせ" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "該当する場合は、この注文商品のダウンロードURLを入力してください。" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "フィードバック" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "注文商品のリスト" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "請求先住所" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "請求先住所と同じ場合、または該当しない場合は空白にしてください。" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "この注文の合計金額" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "注文商品の総数量" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "ご注文の商品はすべてデジタルですか?" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "この注文の取引" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "受注状況" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "画像URL" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "製品画像" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "カテゴリー" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "フィードバック" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "ブランド" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "属性グループ" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1396,7 +1341,7 @@ msgstr "属性グループ" msgid "price" msgstr "価格" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1404,39 +1349,39 @@ msgstr "価格" msgid "quantity" msgstr "数量" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "フィードバック数" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "個人注文のみの商品" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "割引価格" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "製品紹介" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "プロモコード" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "販売商品" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "プロモーション" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "ベンダー" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1444,98 +1389,98 @@ msgstr "ベンダー" msgid "product" msgstr "製品" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "ウィッシュリスト掲載商品" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "ウィッシュリスト" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "タグ別アーカイブ" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "商品タグ" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "タグ別アーカイブ" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "カテゴリー' タグ" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "プロジェクト名" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "会社名" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "会社住所" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "会社電話番号" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from' は、ホストユーザの値の代わりに使用されることがあります。" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "メールホストユーザー" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "支払限度額" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "最低支払額" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "分析データ" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "広告データ" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "構成" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "言語コード" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "言語名" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "言語フラグがある場合 :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "サポートされている言語のリストを取得する" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "製品検索結果" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "製品検索結果" @@ -1546,28 +1491,25 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"属性グループを表し、階層化することができます。このクラスは、属性グループの管" -"理と整理に使用します。属性グループは親グループを持つことができ、階層構造を形" -"成します。これは、複雑なシステムで属性をより効果的に分類・管理するのに便利で" -"す。" +"属性グループを表し、階層化することができます。このクラスは、属性グループの管理と整理に使用します。属性グループは親グループを持つことができ、階層構造を形成します。これは、複雑なシステムで属性をより効果的に分類・管理するのに便利です。" -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "このグループの親" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "親属性グループ" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "属性グループ名" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "属性グループ" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1577,54 +1519,50 @@ msgid "" "also maintains additional metadata and constraints, making it suitable for " "use in systems that interact with third-party vendors." msgstr "" -"外部ベンダーとその相互作用要件に関する情報を格納できるベンダー・エンティティ" -"を表します。Vendor クラスは、外部ベンダーに関連する情報を定義・管理するために" -"使用します。これは、ベンダーの名前、通信に必要な認証の詳細、ベンダーから取得" -"した商品に適用されるパーセンテージのマークアップを格納します。このモデルは、" -"追加のメタデータと制約も保持するため、サードパーティ・ベンダーとやり取りする" -"システムでの使用に適しています。" +"外部ベンダーとその相互作用要件に関する情報を格納できるベンダー・エンティティを表します。Vendor " +"クラスは、外部ベンダーに関連する情報を定義・管理するために使用します。これは、ベンダーの名前、通信に必要な認証の詳細、ベンダーから取得した商品に適用されるパーセンテージのマークアップを格納します。このモデルは、追加のメタデータと制約も保持するため、サードパーティ・ベンダーとやり取りするシステムでの使用に適しています。" -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "ベンダーのAPI通信に必要な認証情報とエンドポイントを保存する。" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "認証情報" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "このベンダーから取得した商品のマークアップを定義する。" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "ベンダーのマークアップ率" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "このベンダーの名前" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "ベンダー名" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "レスポンスファイル" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "ベンダーの最終処理回答" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "ベンダーの統合ファイルパス" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "統合パス" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1632,51 +1570,46 @@ msgid "" "display name. It supports operations exported through mixins and provides " "metadata customization for administrative purposes." msgstr "" -"製品を分類または識別するために使用される製品タグを表します。ProductTag クラス" -"は、内部タグ識別子とユーザーフレンドリーな表示名の組み合わせによって、製品を" -"一意に識別および分類するように設計されています。ミキシンを通じてエクスポート" -"される操作をサポートし、管理目的のためにメタデータのカスタマイズを提供しま" -"す。" +"製品を分類または識別するために使用される製品タグを表します。ProductTag " +"クラスは、内部タグ識別子とユーザーフレンドリーな表示名の組み合わせによって、製品を一意に識別および分類するように設計されています。ミキシンを通じてエクスポートされる操作をサポートし、管理目的のためにメタデータのカスタマイズを提供します。" -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "商品タグの内部タグ識別子" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "タグ名" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "商品タグのユーザーフレンドリーな名前" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "タグ表示名" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "商品タグ" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -"商品に使用されるカテゴリータグを表します。このクラスは、商品の関連付けと分類" -"に使用できるカテゴリタグをモデル化します。内部タグ識別子とユーザーフレンド" -"リーな表示名の属性が含まれます。" +"商品に使用されるカテゴリータグを表します。このクラスは、商品の関連付けと分類に使用できるカテゴリタグをモデル化します。内部タグ識別子とユーザーフレンドリーな表示名の属性が含まれます。" -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "カテゴリタグ" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "カテゴリータグ" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1688,190 +1621,179 @@ msgid "" "hierarchy of categories, as well as assign attributes like images, tags, or " "priority." msgstr "" -"関連するアイテムを階層構造で整理し、グループ化するためのカテゴリ・エンティ" -"ティを表します。カテゴリは、親子関係をサポートする他のカテゴリとの階層関係を" -"持つことができます。このクラスには、カテゴリ関連機能の基盤となるメタデータお" -"よび視覚表現のためのフィールドが含まれます。このクラスは通常、アプリケーショ" -"ン内で商品カテゴリやその他の類似のグループ化を定義および管理するために使用さ" -"れ、ユーザや管理者がカテゴリの名前、説明、階層を指定したり、画像、タグ、優先" -"度などの属性を割り当てることができます。" +"関連するアイテムを階層構造で整理し、グループ化するためのカテゴリ・エンティティを表します。カテゴリは、親子関係をサポートする他のカテゴリとの階層関係を持つことができます。このクラスには、カテゴリ関連機能の基盤となるメタデータおよび視覚表現のためのフィールドが含まれます。このクラスは通常、アプリケーション内で商品カテゴリやその他の類似のグループ化を定義および管理するために使用され、ユーザや管理者がカテゴリの名前、説明、階層を指定したり、画像、タグ、優先度などの属性を割り当てることができます。" -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "このカテゴリーを表す画像をアップロードする" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "カテゴリーイメージ" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "このカテゴリの商品のマークアップ率を定義する" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "階層構造を形成するこのカテゴリの親" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "親カテゴリー" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "カテゴリー名" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "このカテゴリの名前を入力してください。" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "このカテゴリの詳細説明を追加する" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "カテゴリー説明" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "このカテゴリーを説明またはグループ化するのに役立つタグ" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "優先順位" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"システム内のブランド・オブジェクトを表します。このクラスは、名前、ロゴ、説" -"明、関連カテゴリ、一意のスラッグ、および優先順位など、ブランドに関連する情報" -"と属性を処理します。このクラスによって、アプリケーション内でブランド関連デー" -"タを整理し、表現することができます。" +"システム内のブランド・オブジェクトを表します。このクラスは、名前、ロゴ、説明、関連カテゴリ、一意のスラッグ、および優先順位など、ブランドに関連する情報と属性を処理します。このクラスによって、アプリケーション内でブランド関連データを整理し、表現することができます。" -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "ブランド名" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "ブランド名" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "このブランドを代表するロゴをアップロードする" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "小さなブランドイメージ" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "このブランドを象徴する大きなロゴをアップロードする" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "大きなブランドイメージ" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "ブランドの詳細な説明を加える" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "ブランド説明" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "このブランドが関連するオプション・カテゴリー" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "カテゴリー" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"システムで管理されている商品の在庫を表します。このクラスは、ベンダー、商品、" -"およびそれらの在庫情報間の関係の詳細や、価格、購入価格、数量、SKU、デジタル資" -"産などの在庫関連プロパティを提供します。これは在庫管理システムの一部で、さま" -"ざまなベンダーから入手可能な製品の追跡と評価を可能にします。" +"システムで管理されている商品の在庫を表します。このクラスは、ベンダー、商品、およびそれらの在庫情報間の関係の詳細や、価格、購入価格、数量、SKU、デジタル資産などの在庫関連プロパティを提供します。これは在庫管理システムの一部で、さまざまなベンダーから入手可能な製品の追跡と評価を可能にします。" -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "この製品の在庫を供給しているベンダー" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "関連ベンダー" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "マークアップ後の顧客への最終価格" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "販売価格" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "このストックエントリーに関連する製品" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "関連製品" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "この製品に対してベンダーに支払われた価格" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "ベンダーの購入価格" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "在庫数" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "在庫数" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "製品を識別するためにベンダーが割り当てたSKU" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "ベンダーのSKU" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "この銘柄に関連するデジタルファイル(該当する場合" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "デジタルファイル" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "システム属性" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "ストックエントリー" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1882,376 +1804,358 @@ msgid "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." msgstr "" -"カテゴリ、ブランド、タグ、デジタルステータス、名前、説明、品番、スラッグなど" -"の属性を持つ製品を表します。評価、フィードバック数、価格、数量、注文総数を取" -"得するための関連ユーティリティ・プロパティを提供します。電子商取引や在庫管理" -"を扱うシステムで使用するように設計されています。このクラスは、関連するモデル " -"(Category、Brand、ProductTag など) と相互作用し、パフォーマンスを向上させるた" -"めに、頻繁にアクセスされるプロパティのキャッシュを管理します。アプリケーショ" -"ン内で商品データとその関連情報を定義し、操作するために使用されます。" +"カテゴリ、ブランド、タグ、デジタルステータス、名前、説明、品番、スラッグなどの属性を持つ製品を表します。評価、フィードバック数、価格、数量、注文総数を取得するための関連ユーティリティ・プロパティを提供します。電子商取引や在庫管理を扱うシステムで使用するように設計されています。このクラスは、関連するモデル" +" (Category、Brand、ProductTag など) " +"と相互作用し、パフォーマンスを向上させるために、頻繁にアクセスされるプロパティのキャッシュを管理します。アプリケーション内で商品データとその関連情報を定義し、操作するために使用されます。" -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "この製品が属するカテゴリ" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "オプションでこの製品をブランドと関連付ける" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "この商品の説明やグループ分けに役立つタグ" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "この製品がデジタル配信されるかどうかを示す" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "製品はデジタルか" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "は、この製品が定期的なタスクから更新されるべきかどうかを示します。" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "製品は更新可能か" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "製品の明確な識別名を提供する" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "商品名" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "商品の詳細説明を追加する" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "商品説明" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "この製品の品番" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "品番" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "この製品の在庫管理単位" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"システム内の属性を表します。このクラスは、属性を定義および管理するために使用" -"されます。属性は、他のエンティティに関連付けることができる、カスタマイズ可能" -"なデータの部分です。属性には、関連するカテゴリ、グループ、値型、および名前が" -"あります。このモデルは、string、integer、float、boolean、array、object などの" -"複数の型の値をサポートしています。これにより、動的で柔軟なデータ構造化が可能" -"になります。" +"システム内の属性を表します。このクラスは、属性を定義および管理するために使用されます。属性は、他のエンティティに関連付けることができる、カスタマイズ可能なデータの部分です。属性には、関連するカテゴリ、グループ、値型、および名前があります。このモデルは、string、integer、float、boolean、array、object" +" などの複数の型の値をサポートしています。これにより、動的で柔軟なデータ構造化が可能になります。" -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "この属性のグループ" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "ストリング" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "整数" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "フロート" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "ブーリアン" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "配列" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "対象" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "属性値のタイプ" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "値の種類" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "この属性の名前" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "属性名" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "フィルタリング可能" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "この属性がフィルタリングに使用できるかどうかを指定する。" -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "属性" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"製品にリンクされている属性の特定の値を表します。これは、「属性」を一意の" -"「値」にリンクし、製品特性のより良い編成と動的な表現を可能にします。" +"製品にリンクされている属性の特定の値を表します。これは、「属性」を一意の「値」にリンクし、製品特性のより良い編成と動的な表現を可能にします。" -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "この値の属性" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "この属性の値に関連する特定の製品" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "この属性の具体的な値" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" -"システム内の商品に関連付けられた商品画像を表します。このクラスは商品の画像を" -"管理するために設計されており、画像ファイルのアップロード、特定の商品との関連" -"付け、表示順の決定などの機能を提供します。また、画像の代替テキストによるアク" -"セシビリティ機能も備えています。" +"システム内の商品に関連付けられた商品画像を表します。このクラスは商品の画像を管理するために設計されており、画像ファイルのアップロード、特定の商品との関連付け、表示順の決定などの機能を提供します。また、画像の代替テキストによるアクセシビリティ機能も備えています。" -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "アクセシビリティのために、画像に代替テキストを提供する。" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "画像のaltテキスト" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "この商品の画像ファイルをアップロードする" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "商品画像" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "画像の表示順を決める" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "表示優先度" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "この画像が表す製品" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "商品画像" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"割引を伴う商品の販促キャンペーンを表します。このクラスは、商品に対してパーセ" -"ンテージベースの割引を提供する販促キャンペーンを定義および管理するために使用" -"します。このクラスには、割引率を設定し、プロモーションの詳細を提供し、該当す" -"る商品にリンクするための属性が含まれます。商品カタログと統合して、キャンペー" -"ンの対象商品を決定します。" +"割引を伴う商品の販促キャンペーンを表します。このクラスは、商品に対してパーセンテージベースの割引を提供する販促キャンペーンを定義および管理するために使用します。このクラスには、割引率を設定し、プロモーションの詳細を提供し、該当する商品にリンクするための属性が含まれます。商品カタログと統合して、キャンペーンの対象商品を決定します。" -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "選択した商品の割引率" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "割引率" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "このプロモーションのユニークな名前を入力してください。" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "プロモーション名" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "プロモーション内容" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "キャンペーン対象商品をお選びください。" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "含まれる製品" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "プロモーション" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"希望する商品を保存・管理するためのユーザーのウィッシュリストを表します。この" -"クラスは、商品のコレクションを管理する機能を提供し、商品の追加や削除などの操" -"作をサポートし、複数の商品を一度に追加したり削除したりする操作をサポートしま" -"す。" +"希望する商品を保存・管理するためのユーザーのウィッシュリストを表します。このクラスは、商品のコレクションを管理する機能を提供し、商品の追加や削除などの操作をサポートし、複数の商品を一度に追加したり削除したりする操作をサポートします。" -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "ユーザーが欲しいとマークした商品" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "このウィッシュリストを所有しているユーザー" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "ウィッシュリストのオーナー" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "ウィッシュリスト" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"商品に関連付けられたドキュメンタリーのレコードを表します。このクラスは、ファ" -"イルのアップロードとそのメタデータを含む、特定の商品に関連するドキュメンタ" -"リーに関する情報を格納するために使用されます。ドキュメントファイルのファイル" -"タイプと保存パスを処理するメソッドとプロパティが含まれています。特定のミック" -"スインから機能を拡張し、追加のカスタム機能を提供します。" +"商品に関連付けられたドキュメンタリーのレコードを表します。このクラスは、ファイルのアップロードとそのメタデータを含む、特定の商品に関連するドキュメンタリーに関する情報を格納するために使用されます。ドキュメントファイルのファイルタイプと保存パスを処理するメソッドとプロパティが含まれています。特定のミックスインから機能を拡張し、追加のカスタム機能を提供します。" -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "ドキュメンタリー" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "ドキュメンタリー" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "未解決" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" -"場所の詳細とユーザーとの関連付けを含む住所エンティティを表します。地理データ" -"および住所データを保存する機能と、ジオコーディングサービスとの統合機能を提供" -"します。このクラスは、street、city、region、country、geolocation (longitude " -"and latitude) のようなコンポーネントを含む詳細な住所情報を格納するように設計" -"されています。ジオコーディング API との統合をサポートしており、 生の API レス" -"ポンスを保存してさらなる処理や検査を行うことができます。また、このクラスは住" -"所とユーザを関連付けることができ、 パーソナライズされたデータの取り扱いを容易" -"にします。" +"場所の詳細とユーザーとの関連付けを含む住所エンティティを表します。地理データおよび住所データを保存する機能と、ジオコーディングサービスとの統合機能を提供します。このクラスは、street、city、region、country、geolocation" +" (longitude and latitude) のようなコンポーネントを含む詳細な住所情報を格納するように設計されています。ジオコーディング API" +" との統合をサポートしており、 生の API " +"レスポンスを保存してさらなる処理や検査を行うことができます。また、このクラスは住所とユーザを関連付けることができ、 " +"パーソナライズされたデータの取り扱いを容易にします。" -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "お客様の住所" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "住所" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "ストリート" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "地区" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "都市" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "地域" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "郵便番号" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "国名" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "ジオロケーションポイント(経度、緯度)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "この住所に対するジオコーダーからの完全なJSON応答" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "ジオコーディング・サービスからの保存されたJSONレスポンス" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "住所" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "住所" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2260,252 +2164,239 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"割引に使用できるプロモーションコードを表し、その有効期間、割引の種類、適用を" -"管理します。PromoCode クラスは、一意の識別子、割引のプロパティ (金額または" -"パーセンテージ)、有効期間、関連するユーザ (もしあれば)、および使用状況など、" -"プロモーションコードに関する詳細を格納します。これは、制約が満たされているこ" -"とを保証しながら、プロモコードを検証し、注文に適用する機能を含んでいます。" +"割引に使用できるプロモーションコードを表し、その有効期間、割引の種類、適用を管理します。PromoCode クラスは、一意の識別子、割引のプロパティ " +"(金額またはパーセンテージ)、有効期間、関連するユーザ " +"(もしあれば)、および使用状況など、プロモーションコードに関する詳細を格納します。これは、制約が満たされていることを保証しながら、プロモコードを検証し、注文に適用する機能を含んでいます。" -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "ユーザーが割引を利用する際に使用する固有のコード" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "プロモコード識別子" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "パーセントを使用しない場合に適用される固定割引額" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "固定割引額" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "定額を使用しない場合に適用される割引率" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "割引率" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "プロモコードの有効期限が切れるタイムスタンプ" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "終了有効時間" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "このプロモコードが有効なタイムスタンプ" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "開始有効時間" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "プロモコードが使用されたタイムスタンプ、未使用の場合は空白" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "使用タイムスタンプ" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "該当する場合、このプロモコードに割り当てられたユーザー" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "担当ユーザー" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "プロモコード" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "プロモコード" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." -msgstr "" -"割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちら" -"も定義してはならない。" +msgstr "割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちらも定義してはならない。" -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "プロモコードはすでに使用されています" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "プロモコード {self.uuid} の割引タイプが無効です!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" -"ユーザーによる注文を表します。このクラスは、請求や配送情報、ステータス、関連" -"するユーザ、通知、関連する操作などのさまざまな属性を含む、アプリケーション内" -"の注文をモデル化します。注文は関連する商品を持つことができ、プロモーションを" -"適用し、住所を設定し、配送または請求の詳細を更新することができます。同様に、" -"注文のライフサイクルにおける商品の管理もサポートします。" +"ユーザーによる注文を表します。このクラスは、請求や配送情報、ステータス、関連するユーザ、通知、関連する操作などのさまざまな属性を含む、アプリケーション内の注文をモデル化します。注文は関連する商品を持つことができ、プロモーションを適用し、住所を設定し、配送または請求の詳細を更新することができます。同様に、注文のライフサイクルにおける商品の管理もサポートします。" -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "この注文に使用される請求先住所" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "この注文に適用されるプロモコード" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "プロモーションコード適用" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "この注文に使用された配送先住所" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "配送先住所" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "ライフサイクルにおける現在の注文状況" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "注文状況" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" -msgstr "" -"ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" +msgstr "ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "この注文の注文属性のJSON表現" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "注文を行ったユーザー" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "ユーザー" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "注文が確定したタイムスタンプ" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "時間を買う" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "オーダーの人間が読み取り可能な識別子。" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "人間が読めるID" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "オーダー" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "ユーザーは一度に1つの未決注文しか持つことができません!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "保留中の注文以外の注文に商品を追加することはできません。" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "アクティブでない商品を注文に追加することはできません。" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "在庫以上の商品を追加することはできません。" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "保留中の注文以外の注文から商品を削除することはできません。" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name}はクエリ<{query}と一緒に存在しません!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "プロモコードが存在しない" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "配送先住所が指定された現物商品のみ購入可能!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "アドレスが存在しない" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "現在ご購入いただけません。数分後にもう一度お試しください。" -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "無効なフォース値" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "空注文はできません!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "ユーザーがいない注文は購入できない!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "残高のないユーザーは、残高で購入することはできない!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "注文を完了するための資金不足" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -msgstr "" -"ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お" -"客様のお名前、お客様のEメール、お客様の電話番号" +msgstr "ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お客様のお名前、お客様のEメール、お客様の電話番号" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" -msgstr "" -"支払方法が無効です:{available_payment_methods}からの{payment_method}が無効で" -"す!" +msgstr "支払方法が無効です:{available_payment_methods}からの{payment_method}が無効です!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2513,37 +2404,34 @@ msgid "" "product in the order, and a user-assigned rating. The class uses database " "fields to effectively model and manage feedback data." msgstr "" -"製品に対するユーザのフィードバックを管理します。このクラスは、購入した特定の" -"商品に対するユーザのフィードバックを取得し、保存するために設計されています。" -"ユーザのコメント、注文の関連商品への参照、そしてユーザが割り当てた評価を保存" -"する属性を含みます。このクラスは、フィードバックデータを効果的にモデル化し、" -"管理するためにデータベースフィールドを使用します。" +"製品に対するユーザのフィードバックを管理します。このクラスは、購入した特定の商品に対するユーザのフィードバックを取得し、保存するために設計されています。ユーザのコメント、注文の関連商品への参照、そしてユーザが割り当てた評価を保存する属性を含みます。このクラスは、フィードバックデータを効果的にモデル化し、管理するためにデータベースフィールドを使用します。" -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "ユーザーから寄せられた製品使用体験に関するコメント" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "フィードバック・コメント" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "このフィードバックが対象としている注文の特定の製品を参照する。" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "関連注文商品" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "ユーザーによる製品の評価" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "製品評価" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2555,144 +2443,133 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"注文に関連する商品とその属性を表す。OrderProductモデルは、購入価格、数量、商" -"品属性、ステータスなどの詳細を含む、注文の一部である商品に関する情報を保持し" -"ます。ユーザーや管理者への通知を管理し、商品残高の返却やフィードバックの追加" -"などの操作を処理します。このモデルはまた、合計価格の計算やデジタル商品のダウ" -"ンロードURLの生成など、ビジネスロジックをサポートするメソッドやプロパティも提" -"供します。このモデルはOrderモデルとProductモデルと統合され、それらへの参照を" -"保存します。" +"注文に関連する商品とその属性を表す。OrderProductモデルは、購入価格、数量、商品属性、ステータスなどの詳細を含む、注文の一部である商品に関する情報を保持します。ユーザーや管理者への通知を管理し、商品残高の返却やフィードバックの追加などの操作を処理します。このモデルはまた、合計価格の計算やデジタル商品のダウンロードURLの生成など、ビジネスロジックをサポートするメソッドやプロパティも提供します。このモデルはOrderモデルとProductモデルと統合され、それらへの参照を保存します。" -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "この商品の購入時に顧客が支払った価格" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "注文時の購入価格" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "この注文商品に関する管理者への内部コメント" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "社内コメント" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "ユーザー通知" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "このアイテムの属性のJSON表現" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "製品属性の順序" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "この商品を含む親注文への参照" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "親注文" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "この注文ラインに関連する特定の製品" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "注文に含まれる特定の商品の数量" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "製品数量" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "この商品の現在のご注文状況" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "製品ラインの状況" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Orderproductには関連する注文がなければならない!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "フィードバックに指定されたアクションが間違っています:{action}です!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "受信していない注文をフィードバックすることはできません。" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "名称" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "統合のURL" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "認証情報" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "デフォルトのCRMプロバイダーは1つだけです。" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "注文のCRMリンク" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "オーダーのCRMリンク" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" -"注文に関連するデジタル資産のダウンロード機能を表します。DigitalAssetDownload" -"クラスは、注文商品に関連するダウンロードを管理し、アクセスする機能を提供しま" -"す。このクラスは、関連する注文商品、ダウンロード数、およびアセットが公開され" -"ているかどうかの情報を保持します。関連する注文が完了したステータスのときに、" -"アセットをダウンロードするための URL を生成するメソッドも含まれています。" +"注文に関連するデジタル資産のダウンロード機能を表します。DigitalAssetDownloadクラスは、注文商品に関連するダウンロードを管理し、アクセスする機能を提供します。このクラスは、関連する注文商品、ダウンロード数、およびアセットが公開されているかどうかの情報を保持します。関連する注文が完了したステータスのときに、アセットをダウンロードするための" +" URL を生成するメソッドも含まれています。" -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "ダウンロード" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "ダウンロード" #: engine/core/serializers/utility.py:91 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." -msgstr "" -"フィードバックを追加するには、コメント、評価、および注文商品の uuid を入力す" -"る必要があります。" +msgstr "フィードバックを追加するには、コメント、評価、および注文商品の uuid を入力する必要があります。" #: engine/core/sitemaps.py:25 msgid "Home" @@ -2884,12 +2761,9 @@ msgstr "こんにちは%(order.user.first_name)s、" #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" -msgstr "" -"ご注文ありがとうございます#%(order.pk)s!ご注文を承りましたことをお知らせいた" -"します。以下、ご注文の詳細です:" +msgstr "ご注文ありがとうございます#%(order.pk)s!ご注文を承りましたことをお知らせいたします。以下、ご注文の詳細です:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2912,9 +2786,7 @@ msgstr "合計価格" msgid "" "if you have any questions, feel free to contact our support at\n" " %(config.EMAIL_HOST_USER)s." -msgstr "" -"ご不明な点がございましたら、%(config.EMAIL_HOST_USER)sまでお気軽にお問い合わ" -"せください。" +msgstr "ご不明な点がございましたら、%(config.EMAIL_HOST_USER)sまでお気軽にお問い合わせください。" #: engine/core/templates/digital_order_created_email.html:133 #, python-format @@ -2942,8 +2814,7 @@ msgstr "こんにちは%(user_first_name)s、" msgid "" "we have successfully processed your order №%(order_uuid)s! below are the\n" " details of your order:" -msgstr "" -"ご注文の№%(order_uuid)sが正常に処理されました!以下はご注文の詳細です:" +msgstr "ご注文の№%(order_uuid)sが正常に処理されました!以下はご注文の詳細です:" #: engine/core/templates/digital_order_delivered_email.html:128 msgid "" @@ -2964,9 +2835,7 @@ msgstr "価値" msgid "" "if you have any questions, feel free to contact our support at\n" " %(contact_email)s." -msgstr "" -"ご不明な点がございましたら、%(contact_email)sまでお気軽にお問い合わせくださ" -"い。" +msgstr "ご不明な点がございましたら、%(contact_email)sまでお気軽にお問い合わせください。" #: engine/core/templates/digital_order_delivered_email.html:165 #: engine/core/templates/promocode_granted_email.html:108 @@ -2998,12 +2867,9 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" -msgstr "" -"ご注文ありがとうございます!ご購入を確認させていただきました。以下、ご注文の" -"詳細です:" +msgstr "ご注文ありがとうございます!ご購入を確認させていただきました。以下、ご注文の詳細です:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -3030,11 +2896,11 @@ msgstr "" "すべての権利\n" " 予約済み" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "データとタイムアウトの両方が必要" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "無効なタイムアウト値です。" @@ -3066,136 +2932,119 @@ msgstr "この操作を行う権限がありません。" msgid "NOMINATIM_URL must be configured." msgstr "NOMINATIM_URLパラメータを設定する必要があります!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" -msgstr "" -"画像のサイズは w{max_width} x h{max_height} ピクセルを超えないようにしてくだ" -"さい!" +msgstr "画像のサイズは w{max_width} x h{max_height} ピクセルを超えないようにしてください!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -"サイトマップインデックスのリクエストを処理し、XMLレスポンスを返します。レスポ" -"ンスにXML用の適切なコンテントタイプヘッダーが含まれるようにします。" +"サイトマップインデックスのリクエストを処理し、XMLレスポンスを返します。レスポンスにXML用の適切なコンテントタイプヘッダーが含まれるようにします。" -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -"サイトマップの詳細表示レスポンスを処理します。この関数はリクエストを処理し、" -"適切なサイトマップ詳細レスポンスを取得し、XML の Content-Type ヘッダを設定し" -"ます。" +"サイトマップの詳細表示レスポンスを処理します。この関数はリクエストを処理し、適切なサイトマップ詳細レスポンスを取得し、XML の Content-" +"Type ヘッダを設定します。" -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "サポートされている言語の一覧と対応する情報を返します。" -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "ウェブサイトのパラメータをJSONオブジェクトとして返します。" -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -msgstr "" -"指定されたキーとタイムアウトで、キャッシュ・データの読み取りや設定などの" -"キャッシュ操作を行う。" +msgstr "指定されたキーとタイムアウトで、キャッシュ・データの読み取りや設定などのキャッシュ操作を行う。" -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "お問い合わせフォームの送信を処理する。" -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." -msgstr "" -"入ってくる POST リクエストからの URL の処理と検証のリクエストを処理します。" +msgstr "入ってくる POST リクエストからの URL の処理と検証のリクエストを処理します。" -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "グローバル検索クエリを処理する。" -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "登録なしでビジネスとして購入するロジックを扱う。" -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "注文に関連付けられたデジタルアセットのダウンロードを処理します。\n" -"この関数は、プロジェクトのストレージディレクトリにあるデジタルアセットファイ" -"ルの提供を試みます。ファイルが見つからない場合、リソースが利用できないことを" -"示すHTTP 404エラーが発生します。" +"この関数は、プロジェクトのストレージディレクトリにあるデジタルアセットファイルの提供を試みます。ファイルが見つからない場合、リソースが利用できないことを示すHTTP 404エラーが発生します。" -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuidは必須です。" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "注文商品が存在しない" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "デジタルアセットのダウンロードは1回限りです。" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "デジタル資産をダウンロードする前に、注文を支払う必要があります。" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "注文商品に商品がない" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "ファビコンが見つかりません" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "ウェブサイトのファビコンへのリクエストを処理します。\n" -"この関数は、プロジェクトの静的ディレクトリにあるファビコンファイルの提供を試" -"みます。ファビコンファイルが見つからない場合、リソースが利用できないことを示" -"す HTTP 404 エラーが発生します。" +"この関数は、プロジェクトの静的ディレクトリにあるファビコンファイルの提供を試みます。ファビコンファイルが見つからない場合、リソースが利用できないことを示す HTTP 404 エラーが発生します。" -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -"リクエストを admin インデックスページにリダイレクトします。この関数は、HTTP " -"リクエストを処理し、 Django の admin インタフェースインデッ クスページにリダ" -"イレクトします。HTTP リダイレクトの処理には Django の `redirect` 関数を使いま" -"す。" +"リクエストを admin インデックスページにリダイレクトします。この関数は、HTTP リクエストを処理し、 Django の admin " +"インタフェースインデッ クスページにリダイレクトします。HTTP リダイレクトの処理には Django の `redirect` 関数を使います。" -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "eVibes の現在のバージョンを返します。" -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "収益と受注 (最終 %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "ダッシュボードのカスタム変数を返します。" @@ -3207,23 +3056,21 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"Evibes 関連の操作を管理するためのビューセットを定義します。EvibesViewSet クラ" -"スは ModelViewSet を継承し、Evibes エンティティに対する アクションや操作を扱" -"うための機能を提供します。現在のアクションに基づいた動的なシリアライザークラ" -"スのサポート、 カスタマイズ可能なパーミッション、レンダリングフォーマットが含" -"まれます。" +"Evibes 関連の操作を管理するためのビューセットを定義します。EvibesViewSet クラスは ModelViewSet を継承し、Evibes" +" エンティティに対する アクションや操作を扱うための機能を提供します。現在のアクションに基づいた動的なシリアライザークラスのサポート、 " +"カスタマイズ可能なパーミッション、レンダリングフォーマットが含まれます。" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" -"AttributeGroup オブジェクトを管理するためのビューセットを表します。データの" -"フィルタリング、シリアライズ、取得など、AttributeGroup に関連する操作を処理し" -"ます。このクラスは、アプリケーションのAPIレイヤの一部であり、AttributeGroup" -"データの要求と応答を処理する標準化された方法を提供します。" +"AttributeGroup " +"オブジェクトを管理するためのビューセットを表します。データのフィルタリング、シリアライズ、取得など、AttributeGroup " +"に関連する操作を処理します。このクラスは、アプリケーションのAPIレイヤの一部であり、AttributeGroupデータの要求と応答を処理する標準化された方法を提供します。" #: engine/core/viewsets.py:179 msgid "" @@ -3234,25 +3081,22 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"アプリケーション内でAttributeオブジェクトに関連する操作を処理する。Attribute " -"データと対話するための API エンドポイントのセットを提供します。このクラスは、" -"Attribute オブジェクトのクエリ、フィルタリング、およびシリアライズを管理し、" -"特定のフィールドによるフィルタリングや、リクエストに応じた詳細情報と簡略化さ" -"れた情報の取得など、返されるデータの動的な制御を可能にします。" +"アプリケーション内でAttributeオブジェクトに関連する操作を処理する。Attribute データと対話するための API " +"エンドポイントのセットを提供します。このクラスは、Attribute " +"オブジェクトのクエリ、フィルタリング、およびシリアライズを管理し、特定のフィールドによるフィルタリングや、リクエストに応じた詳細情報と簡略化された情報の取得など、返されるデータの動的な制御を可能にします。" #: engine/core/viewsets.py:198 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"AttributeValue オブジェクトを管理するためのビューセットです。このビューセット" -"は、 AttributeValue オブジェクトの一覧表示、取得、作成、更新、削除の機能を提" -"供し ます。Django REST Framework のビューセット機構と統合され、異なるアクショ" -"ンに適切なシリアライザを使います。フィルタリング機能は DjangoFilterBackend を" -"通して提供されます。" +"AttributeValue オブジェクトを管理するためのビューセットです。このビューセットは、 AttributeValue " +"オブジェクトの一覧表示、取得、作成、更新、削除の機能を提供し ます。Django REST Framework " +"のビューセット機構と統合され、異なるアクションに適切なシリアライザを使います。フィルタリング機能は DjangoFilterBackend " +"を通して提供されます。" #: engine/core/viewsets.py:217 msgid "" @@ -3262,11 +3106,7 @@ msgid "" "The viewset also enforces permissions to ensure that only authorized users " "can access specific data." msgstr "" -"Category関連の操作のためのビューを管理します。CategoryViewSetクラスは、システ" -"ム内のCategoryモデルに関連する操作を処理する責任があります。カテゴリデータの" -"取得、フィルタリング、シリアライズをサポートします。ビューセットはまた、許可" -"されたユーザーだけが特定のデータにアクセスできるようにパーミッションを強制し" -"ます。" +"Category関連の操作のためのビューを管理します。CategoryViewSetクラスは、システム内のCategoryモデルに関連する操作を処理する責任があります。カテゴリデータの取得、フィルタリング、シリアライズをサポートします。ビューセットはまた、許可されたユーザーだけが特定のデータにアクセスできるようにパーミッションを強制します。" #: engine/core/viewsets.py:346 msgid "" @@ -3276,9 +3116,8 @@ msgid "" "endpoints for Brand objects." msgstr "" "Brandインスタンスを管理するためのビューセットを表します。このクラスは Brand " -"オブジェクトのクエリ、フィルタリング、シリアライズの機能を提供します。Django " -"の ViewSet フレームワークを使い、 Brand オブジェクトの API エンドポイントの実" -"装を簡素化します。" +"オブジェクトのクエリ、フィルタリング、シリアライズの機能を提供します。Django の ViewSet フレームワークを使い、 Brand " +"オブジェクトの API エンドポイントの実装を簡素化します。" #: engine/core/viewsets.py:458 msgid "" @@ -3290,12 +3129,10 @@ msgid "" "product details, applying permissions, and accessing related feedback of a " "product." msgstr "" -"システム内の `Product` モデルに関連する操作を管理する。このクラスは、商品の" -"フィルタリング、シリアライズ、特定のインスタンスに対する操作など、商品を管理" -"するためのビューセットを提供します。共通の機能を使うために `EvibesViewSet` を" -"継承し、 RESTful API 操作のために Django REST フレームワークと統合していま" -"す。商品の詳細を取得したり、パーミッションを適用したり、商品の関連するフィー" -"ドバックにアクセスするためのメソッドを含みます。" +"システム内の `Product` " +"モデルに関連する操作を管理する。このクラスは、商品のフィルタリング、シリアライズ、特定のインスタンスに対する操作など、商品を管理するためのビューセットを提供します。共通の機能を使うために" +" `EvibesViewSet` を継承し、 RESTful API 操作のために Django REST " +"フレームワークと統合しています。商品の詳細を取得したり、パーミッションを適用したり、商品の関連するフィードバックにアクセスするためのメソッドを含みます。" #: engine/core/viewsets.py:605 msgid "" @@ -3305,59 +3142,49 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Vendor オブジェクトを管理するためのビューセットを表します。このビューセットを" -"使用すると、 Vendor のデータを取得したりフィルタリングしたりシリアライズした" -"りすることができます。さまざまなアクションを処理するためのクエリセット、 フィ" -"ルタ設定、シリアライザクラスを定義します。このクラスの目的は、 Django REST フ" -"レームワークを通して Vendor 関連リソースへの合理的なアクセスを提供することで" -"す。" +"Vendor オブジェクトを管理するためのビューセットを表します。このビューセットを使用すると、 Vendor " +"のデータを取得したりフィルタリングしたりシリアライズしたりすることができます。さまざまなアクションを処理するためのクエリセット、 " +"フィルタ設定、シリアライザクラスを定義します。このクラスの目的は、 Django REST フレームワークを通して Vendor " +"関連リソースへの合理的なアクセスを提供することです。" #: engine/core/viewsets.py:625 msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" -"Feedback オブジェクトを扱うビューセットの表現。このクラスは、一覧表示、フィル" -"タリング、詳細の取得など、Feedback オブジェクトに関する操作を管理します。この" -"ビューセットの目的は、アクションごとに異なるシリアライザを提供し、アクセス可" -"能な Feedback オブジェクトのパーミッションベースの処理を実装することです。" -"ベースとなる `EvibesViewSet` を拡張し、Django のフィルタリングシステムを利用" -"してデータを取得します。" +"Feedback オブジェクトを扱うビューセットの表現。このクラスは、一覧表示、フィルタリング、詳細の取得など、Feedback " +"オブジェクトに関する操作を管理します。このビューセットの目的は、アクションごとに異なるシリアライザを提供し、アクセス可能な Feedback " +"オブジェクトのパーミッションベースの処理を実装することです。ベースとなる `EvibesViewSet` を拡張し、Django " +"のフィルタリングシステムを利用してデータを取得します。" #: engine/core/viewsets.py:652 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"注文と関連する操作を管理するための ViewSet。このクラスは、注文オブジェクトを" -"取得、変更、管理する機能を提供します。商品の追加や削除、登録ユーザや未登録" -"ユーザの購入の実行、現在の認証ユーザの保留中の注文の取得など、注文操作を処理" -"するためのさまざまなエンドポイントを含みます。ViewSetは、実行される特定のアク" -"ションに基づいて複数のシリアライザを使用し、注文データを操作している間、それ" -"に応じてパーミッションを強制します。" +"注文と関連する操作を管理するための " +"ViewSet。このクラスは、注文オブジェクトを取得、変更、管理する機能を提供します。商品の追加や削除、登録ユーザや未登録ユーザの購入の実行、現在の認証ユーザの保留中の注文の取得など、注文操作を処理するためのさまざまなエンドポイントを含みます。ViewSetは、実行される特定のアクションに基づいて複数のシリアライザを使用し、注文データを操作している間、それに応じてパーミッションを強制します。" #: engine/core/viewsets.py:914 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" -"OrderProduct エンティティを管理するためのビューセットを提供します。このビュー" -"セットは、OrderProduct モデルに固有の CRUD 操作とカスタムアクションを可能にし" -"ます。これは、要求されたアクションに基づくフィルタリング、パーミッション" -"チェック、シリアライザーの切り替えを含みます。さらに、OrderProduct インスタン" -"スに関するフィードバックを処理するための詳細なアクションを提供します。" +"OrderProduct エンティティを管理するためのビューセットを提供します。このビューセットは、OrderProduct モデルに固有の CRUD " +"操作とカスタムアクションを可能にします。これは、要求されたアクションに基づくフィルタリング、パーミッションチェック、シリアライザーの切り替えを含みます。さらに、OrderProduct" +" インスタンスに関するフィードバックを処理するための詳細なアクションを提供します。" #: engine/core/viewsets.py:974 msgid "Manages operations related to Product images in the application. " @@ -3367,8 +3194,7 @@ msgstr "アプリケーション内の商品画像に関する操作を管理し msgid "" "Manages the retrieval and handling of PromoCode instances through various " "API actions." -msgstr "" -"様々なAPIアクションによるプロモコードインスタンスの取得と処理を管理します。" +msgstr "様々なAPIアクションによるプロモコードインスタンスの取得と処理を管理します。" #: engine/core/viewsets.py:1019 msgid "Represents a view set for managing promotions. " @@ -3382,18 +3208,13 @@ msgstr "システム内のストックデータに関する操作を行う。" msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" -"ウィッシュリスト操作を管理するためのViewSet。WishlistViewSetは、ユーザーの" -"ウィッシュリストと対話するためのエンドポイントを提供し、ウィッシュリスト内の" -"商品の検索、変更、カスタマイズを可能にします。このViewSetは、ウィッシュリスト" -"商品の追加、削除、一括アクションなどの機能を容易にします。明示的なパーミッ" -"ションが付与されていない限り、ユーザーが自分のウィッシュリストのみを管理でき" -"るよう、パーミッションチェックが統合されています。" +"ウィッシュリスト操作を管理するためのViewSet。WishlistViewSetは、ユーザーのウィッシュリストと対話するためのエンドポイントを提供し、ウィッシュリスト内の商品の検索、変更、カスタマイズを可能にします。このViewSetは、ウィッシュリスト商品の追加、削除、一括アクションなどの機能を容易にします。明示的なパーミッションが付与されていない限り、ユーザーが自分のウィッシュリストのみを管理できるよう、パーミッションチェックが統合されています。" #: engine/core/viewsets.py:1183 msgid "" @@ -3403,11 +3224,9 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"このクラスは `Address` オブジェクトを管理するためのビューセット機能を提供す" -"る。AddressViewSet クラスは、住所エンティティに関連する CRUD 操作、フィルタリ" -"ング、カスタムアクションを可能にします。異なる HTTP メソッドに特化した振る舞" -"いや、シリアライザのオーバーライド、 リクエストコンテキストに基づいたパーミッ" -"ション処理などを含みます。" +"このクラスは `Address` オブジェクトを管理するためのビューセット機能を提供する。AddressViewSet " +"クラスは、住所エンティティに関連する CRUD 操作、フィルタリング、カスタムアクションを可能にします。異なる HTTP " +"メソッドに特化した振る舞いや、シリアライザのオーバーライド、 リクエストコンテキストに基づいたパーミッション処理などを含みます。" #: engine/core/viewsets.py:1254 #, python-brace-format @@ -3422,8 +3241,4 @@ msgid "" "using the specified filter backend and dynamically uses different " "serializers based on the action being performed." msgstr "" -"アプリケーション内で商品タグに関連する操作を処理します。このクラスは、商品タ" -"グオブジェクトの取得、フィルタリング、シリアライズの機能を提供します。指定さ" -"れたフィルタバックエンドを使用して特定の属性に対する柔軟なフィルタリングをサ" -"ポートし、実行されるアクションに基づいて動的に異なるシリアライザを使用しま" -"す。" +"アプリケーション内で商品タグに関連する操作を処理します。このクラスは、商品タグオブジェクトの取得、フィルタリング、シリアライズの機能を提供します。指定されたフィルタバックエンドを使用して特定の属性に対する柔軟なフィルタリングをサポートし、実行されるアクションに基づいて動的に異なるシリアライザを使用します。" diff --git a/engine/core/locale/kk_KZ/LC_MESSAGES/django.po b/engine/core/locale/kk_KZ/LC_MESSAGES/django.po index 86ead85e..90e05573 100644 --- a/engine/core/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/core/locale/kk_KZ/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -73,65 +73,65 @@ msgstr "" msgid "timestamps" msgstr "" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "" @@ -194,51 +194,51 @@ msgid "" "parameter both." msgstr "" -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "" -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "" @@ -344,9 +344,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "" @@ -450,7 +450,7 @@ msgstr "" msgid "retrieves a current pending order of an authenticated user" msgstr "" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "" @@ -614,9 +614,6 @@ msgid "Product UUID or slug" msgstr "" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "" @@ -901,8 +898,8 @@ msgstr "" msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "" @@ -911,8 +908,8 @@ msgstr "" msgid "Search" msgstr "" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "" @@ -958,8 +955,8 @@ msgid "Quantity" msgstr "" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "" @@ -975,7 +972,7 @@ msgstr "" msgid "Include personal ordered" msgstr "" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "" @@ -996,12 +993,12 @@ msgid "Bought before (inclusive)" msgstr "" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "" @@ -1025,300 +1022,300 @@ msgstr "" msgid "Level" msgstr "" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "" -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" "please send the attributes as the string formatted like attr1=value1," "attr2=value2" msgstr "" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" -#: engine/core/graphene/object_types.py:227 +#: engine/core/graphene/object_types.py:229 msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "" -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1326,7 +1323,7 @@ msgstr "" msgid "price" msgstr "" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1334,39 +1331,39 @@ msgstr "" msgid "quantity" msgstr "" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1374,98 +1371,98 @@ msgstr "" msgid "product" msgstr "" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "" @@ -1477,23 +1474,23 @@ msgid "" "categorizing and managing attributes more effectively in acomplex system." msgstr "" -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1504,47 +1501,47 @@ msgid "" "use in systems that interact with third-party vendors." msgstr "" -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1553,42 +1550,42 @@ msgid "" "metadata customization for administrative purposes." msgstr "" -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1601,51 +1598,51 @@ msgid "" "priority." msgstr "" -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " @@ -1653,47 +1650,47 @@ msgid "" "organization and representation of brand-related data within the application." msgstr "" -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" "Represents the stock of a product managed in the system. This class provides " "details about the relationship between vendors, products, and their stock " @@ -1703,72 +1700,72 @@ msgid "" "from various vendors." msgstr "" -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1780,55 +1777,63 @@ msgid "" "product data and its associated information within an application." msgstr "" -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " @@ -1838,83 +1843,83 @@ msgid "" "for dynamic and flexible data structuring." msgstr "" -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" "Represents a specific value for an attribute that is linked to a product. It " "links the 'attribute' to a unique 'value', allowing better organization and " "dynamic representation of product characteristics." msgstr "" -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " "class is designed to manage images for products, including functionality for " @@ -1923,39 +1928,39 @@ msgid "" "with alternative text for the images." msgstr "" -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" @@ -1965,39 +1970,39 @@ msgid "" "affected items in the campaign." msgstr "" -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2005,23 +2010,23 @@ msgid "" "operations for adding and removing multiple products at once." msgstr "" -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " @@ -2031,19 +2036,19 @@ msgid "" "custom features." msgstr "" -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" "Represents an address entity that includes location details and associations " "with a user. Provides functionality for geographic and address data storage, " @@ -2055,59 +2060,59 @@ msgid "" "address with a user, facilitating personalized data handling." msgstr "" -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2117,86 +2122,86 @@ msgid "" "apply the promo code to an order while ensuring constraints are met." msgstr "" -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " @@ -2206,145 +2211,145 @@ msgid "" "supports managing the products in the order lifecycle." msgstr "" -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2353,31 +2358,31 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "" -#: engine/core/models.py:1826 +#: engine/core/models.py:1827 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2390,108 +2395,108 @@ msgid "" "Product models and stores a reference to them." msgstr "" -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " @@ -2501,11 +2506,11 @@ msgid "" "the asset when the associated order is in a completed status." msgstr "" -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "" @@ -2835,11 +2840,11 @@ msgid "" " reserved" msgstr "" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" @@ -2871,58 +2876,58 @@ msgstr "" msgid "NOMINATIM_URL must be configured." msgstr "" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2930,31 +2935,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2962,23 +2967,23 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "" -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "" diff --git a/engine/core/locale/ko_KR/LC_MESSAGES/django.mo b/engine/core/locale/ko_KR/LC_MESSAGES/django.mo index 1f0bf2b99fb01bc463ad64edf019069c248d48a5..f4b4e2f6f01a722d96219157569b73d86c3e7e03 100644 GIT binary patch delta 14857 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 DtHxWI diff --git a/engine/core/locale/ko_KR/LC_MESSAGES/django.po b/engine/core/locale/ko_KR/LC_MESSAGES/django.po index b27f70b4..6b3dd53c 100644 --- a/engine/core/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/core/locale/ko_KR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "활성 상태" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "false로 설정하면 필요한 권한이 없는 사용자는 이 개체를 볼 수 없습니다." #: engine/core/abstract.py:26 engine/core/choices.py:18 @@ -70,65 +71,65 @@ msgstr "메타데이터" msgid "timestamps" msgstr "타임스탬프" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "선택한 %(verbose_name_plural)s 활성화" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "선택한 아이템이 활성화되었습니다!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "선택한 %(verbose_name_plural)s 비활성화하기" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "선택한 아이템이 비활성화되었습니다!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "속성 값" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "속성 값" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "이미지" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "이미지" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "재고" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "주식" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "제품 주문" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "제품 주문" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "어린이" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "구성" @@ -152,7 +153,8 @@ msgstr "배달됨" msgid "canceled" msgstr "취소됨" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "실패" @@ -190,14 +192,14 @@ msgid "" "negotiation. Language can be selected with Accept-Language and query " "parameter both." msgstr "" -"OpenApi3 스키마를 사용합니다. 형식은 콘텐츠 협상을 통해 선택할 수 있습니다. " -"언어는 Accept-Language와 쿼리 매개변수를 모두 사용하여 선택할 수 있습니다." +"OpenApi3 스키마를 사용합니다. 형식은 콘텐츠 협상을 통해 선택할 수 있습니다. 언어는 Accept-Language와 쿼리 " +"매개변수를 모두 사용하여 선택할 수 있습니다." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "캐시 I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -205,43 +207,41 @@ msgstr "" "캐시에서 허용된 데이터를 읽으려면 키만 적용합니다.\n" "캐시에 데이터를 쓰기 위해 키, 데이터 및 타임아웃을 인증과 함께 적용합니다." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "지원되는 언어 목록 보기" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "애플리케이션의 노출 가능한 매개변수 가져오기" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "지원팀에 메시지 보내기" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "CORSed URL을 요청합니다. https만 허용됩니다." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "제품, 카테고리 및 브랜드 간 검색" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "프로젝트의 테이블 전체에서 쿼리할 수 있는 글로벌 검색 엔드포인트" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "비즈니스로 주문 구매" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -msgstr "" -"제공된 '제품'과 '제품_uuid' 및 '속성'을 사용하여 비즈니스로서 주문을 구매합니" -"다." +msgstr "제공된 '제품'과 '제품_uuid' 및 '속성'을 사용하여 비즈니스로서 주문을 구매합니다." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "구매한 디지털 주문에서 디지털 자산 다운로드" @@ -266,9 +266,9 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "편집할 수 없는 항목을 저장하는 기존 속성 그룹 다시 작성하기" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" -msgstr "" -"기존 속성 그룹의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" +msgstr "기존 속성 그룹의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." #: engine/core/docs/drf/viewsets.py:118 msgid "list all attributes (simple view)" @@ -315,9 +315,9 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "편집할 수 없는 기존 속성 값을 저장하여 다시 작성하기" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" -msgstr "" -"기존 속성 값의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" +msgstr "기존 속성 값의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." #: engine/core/docs/drf/viewsets.py:219 engine/core/docs/drf/viewsets.py:220 msgid "list all categories (simple view)" @@ -349,9 +349,9 @@ msgstr "편집할 수 없는 항목을 저장하는 기존 카테고리의 일 #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO 메타 스냅샷" @@ -369,11 +369,11 @@ msgstr "직원이 아닌 사용자의 경우 자신의 주문만 반환됩니다 #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"대소문자를 구분하지 않는 하위 문자열 검색(human_readable_id, order_products." -"product.name 및 order_products.product.partnerumber)" +"대소문자를 구분하지 않는 하위 문자열 검색(human_readable_id, order_products.product.name 및 " +"order_products.product.partnerumber)" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -405,13 +405,12 @@ msgstr "주문 상태별 필터링(대소문자를 구분하지 않는 하위 #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" -"uuid, human_readable_id, user_email, 사용자, 상태, 생성됨, 수정됨, 구매 시" -"간, 무작위 중 하나로 정렬합니다. 접두사 앞에 '-'를 붙여 내림차순으로 정렬합니" -"다(예: '-buy_time')." +"uuid, human_readable_id, user_email, 사용자, 상태, 생성됨, 수정됨, 구매 시간, 무작위 중 하나로 " +"정렬합니다. 접두사 앞에 '-'를 붙여 내림차순으로 정렬합니다(예: '-buy_time')." #: engine/core/docs/drf/viewsets.py:366 msgid "retrieve a single order (detailed view)" @@ -451,8 +450,7 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"주문 구매를 완료합니다. 강제 잔액`을 사용하면 사용자의 잔액을 사용하여 구매" -"가 완료되고, `강제 결제`를 사용하면 거래가 시작됩니다." +"주문 구매를 완료합니다. 강제 잔액`을 사용하면 사용자의 잔액을 사용하여 구매가 완료되고, `강제 결제`를 사용하면 거래가 시작됩니다." #: engine/core/docs/drf/viewsets.py:427 msgid "retrieve current pending order of a user" @@ -462,7 +460,7 @@ msgstr "사용자의 현재 대기 주문 검색하기" msgid "retrieves a current pending order of an authenticated user" msgstr "인증된 사용자의 현재 대기 주문을 검색합니다." -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "계정 생성 없이 주문 구매" @@ -478,8 +476,7 @@ msgstr "주문에 제품 추가" msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"제공된 `product_uuid` 및 `attributes`를 사용하여 주문에 제품을 추가합니다." +msgstr "제공된 `product_uuid` 및 `attributes`를 사용하여 주문에 제품을 추가합니다." #: engine/core/docs/drf/viewsets.py:461 msgid "add a list of products to order, quantities will not count" @@ -489,9 +486,7 @@ msgstr "주문할 제품 목록을 추가하면 수량은 계산되지 않습니 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"제공된 `product_uuid` 및 `attributes`를 사용하여 주문에 제품 목록을 추가합니" -"다." +msgstr "제공된 `product_uuid` 및 `attributes`를 사용하여 주문에 제품 목록을 추가합니다." #: engine/core/docs/drf/viewsets.py:472 msgid "remove product from order" @@ -501,8 +496,7 @@ msgstr "주문에서 제품 제거" msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"제공된 `product_uuid` 및 `attributes`를 사용하여 주문에서 제품을 제거합니다." +msgstr "제공된 `product_uuid` 및 `attributes`를 사용하여 주문에서 제품을 제거합니다." #: engine/core/docs/drf/viewsets.py:483 msgid "remove product from order, quantities will not count" @@ -512,9 +506,7 @@ msgstr "주문에서 제품을 제거하면 수량이 계산되지 않습니다. msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" -msgstr "" -"제공된 `product_uuid` 및 `attributes`를 사용하여 주문에서 제품 목록을 제거합" -"니다." +msgstr "제공된 `product_uuid` 및 `attributes`를 사용하여 주문에서 제품 목록을 제거합니다." #: engine/core/docs/drf/viewsets.py:497 msgid "list all wishlists (simple view)" @@ -587,34 +579,24 @@ msgstr "주문에서 제품 제거" #: engine/core/docs/drf/viewsets.py:590 msgid "" "removes many products from an wishlist using the provided `product_uuids`" -msgstr "" -"제공된 `product_uuids`를 사용하여 위시리스트에서 많은 제품을 제거합니다." +msgstr "제공된 `product_uuids`를 사용하여 위시리스트에서 많은 제품을 제거합니다." #: engine/core/docs/drf/viewsets.py:598 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "하나 이상의 속성 이름/값 쌍을 기준으로 필터링합니다. \n" "- 구문**: `attr_name=메소드-값[;attr2=메소드2-값2]...`\n" -"- **방법**(생략 시 기본값은 `icontains`): `iexact`, `exact`, `icontains`, " -"`contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, " -"`regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- **값 입력**: JSON이 먼저 시도되며(목록/딕을 전달할 수 있도록), 부울, 정수, " -"부동 소수점의 경우 `true`/`false`, 그렇지 않으면 문자열로 처리됩니다. \n" -"- Base64**: 접두사 앞에 `b64-`를 추가하여 URL에 안전한 base64로 원시 값을 인" -"코딩합니다. \n" +"- **방법**(생략 시 기본값은 `icontains`): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **값 입력**: JSON이 먼저 시도되며(목록/딕을 전달할 수 있도록), 부울, 정수, 부동 소수점의 경우 `true`/`false`, 그렇지 않으면 문자열로 처리됩니다. \n" +"- Base64**: 접두사 앞에 `b64-`를 추가하여 URL에 안전한 base64로 원시 값을 인코딩합니다. \n" "예시: \n" "색상=정확-빨간색`, `크기=gt-10`, `기능=in-[\"wifi\",\"블루투스\"]`,\n" "b64-description=icontains-aGVhdC1jb2xk`" @@ -629,12 +611,10 @@ msgstr "(정확한) 제품 UUID" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"정렬할 필드의 쉼표로 구분된 목록입니다. 접두사 앞에 `-`를 붙여 내림차순으로 " -"정렬합니다. \n" +"정렬할 필드의 쉼표로 구분된 목록입니다. 접두사 앞에 `-`를 붙여 내림차순으로 정렬합니다. \n" "**허용됨:** uuid, 등급, 이름, 슬러그, 생성, 수정, 가격, 랜덤" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -648,9 +628,6 @@ msgid "Product UUID or slug" msgstr "제품 UUID 또는 슬러그" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "제품 만들기" @@ -733,8 +710,7 @@ msgstr "편집할 수 없는 기존 피드백을 다시 작성합니다." #: engine/core/docs/drf/viewsets.py:909 msgid "rewrite some fields of an existing feedback saving non-editables" -msgstr "" -"기존 피드백의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." +msgstr "기존 피드백의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." #: engine/core/docs/drf/viewsets.py:919 msgid "list all order–product relations (simple view)" @@ -936,8 +912,8 @@ msgstr "편집할 수 없는 기존 제품 태그 다시 작성하기" msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "편집할 수 없는 기존 제품 태그의 일부 필드를 다시 작성합니다." -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "검색어가 입력되지 않았습니다." @@ -946,8 +922,8 @@ msgstr "검색어가 입력되지 않았습니다." msgid "Search" msgstr "검색" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -993,8 +969,8 @@ msgid "Quantity" msgstr "수량" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "슬러그" @@ -1010,14 +986,13 @@ msgstr "하위 카테고리 포함" msgid "Include personal ordered" msgstr "개인 주문 제품 포함" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" #: engine/core/filters.py:212 msgid "there must be a category_uuid to use include_subcategories flag" -msgstr "" -"include_subcategories 플래그를 사용하려면 category_uuid가 있어야 합니다." +msgstr "include_subcategories 플래그를 사용하려면 category_uuid가 있어야 합니다." #: engine/core/filters.py:398 msgid "Search (ID, product name or part number)" @@ -1032,12 +1007,12 @@ msgid "Bought before (inclusive)" msgstr "이전 구매(포함)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "사용자 이메일" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "사용자 UUID" @@ -1061,302 +1036,301 @@ msgstr "전체 카테고리(1개 이상의 제품 보유 여부)" msgid "Level" msgstr "레벨" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "제품 UUID" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "캐시에서 찾거나 캐시에 설정할 키" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "캐시에 저장할 데이터" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "캐시에 저장할 데이터를 설정하는 데 걸리는 시간(초)" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "캐시된 데이터" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "요청된 URL의 카멜라이즈된 JSON 데이터" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "http(s)://로 시작하는 URL만 허용됩니다." -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "주문에 제품 추가" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "주문 {order_uuid}을 찾을 수 없습니다!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "주문에서 제품 제거" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "주문에서 모든 제품 제거" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "주문 구매" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "주문_uuid 또는 주문_hr_id 중 하나를 입력하세요 - 상호 배타적입니다!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy() 메서드에서 잘못된 유형이 발생했습니다: {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "제품 목록에 대한 작업을 순서대로 수행합니다." -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "제거/추가" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "작업은 \"추가\" 또는 \"제거\"여야 합니다!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "위시리스트의 제품 목록에서 작업 수행하기" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "위시리스트_유아이디` 값을 입력하세요." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "위시리스트 {wishlist_uuid}를 찾을 수 없습니다!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "주문에 제품 추가" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "주문에서 제품 제거" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "주문에서 제품 제거" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "주문에서 제품 제거" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "주문 구매" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "속성을 attr1=value1,attr2=value2와 같은 형식의 문자열로 보내주세요." -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "주문 제품에 대한 피드백 추가 또는 삭제" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "작업은 '추가' 또는 '제거' 중 하나여야 합니다!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "주문 제품 {order_product_uuid}을 찾을 수 없습니다!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "사용자가 제공한 원본 주소 문자열" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name}가 존재하지 않습니다: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "한도는 1에서 10 사이여야 합니다." -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - 마법처럼 작동" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "속성" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "그룹화된 속성" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "속성 그룹" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "카테고리" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "브랜드" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "카테고리" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "마크업 퍼센트" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "이 카테고리를 필터링하는 데 사용할 수 있는 속성 및 값입니다." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "이 카테고리의 제품에 대한 최소 및 최대 가격(가능한 경우)." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "이 카테고리의 태그" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "이 카테고리의 제품" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "공급업체" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "위도(Y 좌표)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "경도(X 좌표)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "방법" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "1에서 10까지의 등급 값(포함) 또는 설정하지 않은 경우 0입니다." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "사용자의 피드백을 나타냅니다." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "알림" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "해당되는 경우 이 주문 제품의 URL 다운로드" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "피드백" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "주문 제품 목록은 다음 순서로 표시됩니다." -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "청구서 수신 주소" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" -msgstr "" -"이 주문의 배송 주소는 청구지 주소와 동일하거나 해당되지 않는 경우 비워 둡니" -"다." +msgstr "이 주문의 배송 주소는 청구지 주소와 동일하거나 해당되지 않는 경우 비워 둡니다." -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "이 주문의 총 가격" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "주문한 제품의 총 수량" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "주문에 포함된 모든 제품이 디지털 제품인가요?" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "이 주문에 대한 거래" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "주문" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "이미지 URL" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "제품 이미지" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "카테고리" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "피드백" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "브랜드" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "속성 그룹" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1364,7 +1338,7 @@ msgstr "속성 그룹" msgid "price" msgstr "가격" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1372,39 +1346,39 @@ msgstr "가격" msgid "quantity" msgstr "수량" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "피드백 수" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "개인 주문만 가능한 제품" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "할인 가격" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "제품" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "프로모션 코드" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "판매 중인 제품" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "프로모션" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "공급업체" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1412,99 +1386,98 @@ msgstr "공급업체" msgid "product" msgstr "제품" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "위시리스트 제품" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "위시리스트" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "태그가 지정된 제품" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "제품 태그" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "태그가 지정된 카테고리" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "카테고리 태그" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "프로젝트 이름" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "회사 이름" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "회사 주소" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "회사 전화번호" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" -msgstr "" -"'이메일 보낸 사람'을 호스트 사용자 값 대신 사용해야 하는 경우가 있습니다." +msgstr "'이메일 보낸 사람'을 호스트 사용자 값 대신 사용해야 하는 경우가 있습니다." -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "이메일 호스트 사용자" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "최대 결제 금액" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "최소 결제 금액" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "애널리틱스 데이터" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "광고 데이터" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "구성" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "언어 코드" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "언어 이름" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "언어 플래그가 있는 경우 :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "지원되는 언어 목록 보기" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "제품 검색 결과" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "제품 검색 결과" @@ -1515,28 +1488,26 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"계층적일 수 있는 속성 그룹을 나타냅니다. 이 클래스는 속성 그룹을 관리하고 구" -"성하는 데 사용됩니다. 속성 그룹은 상위 그룹을 가질 수 있으며 계층 구조를 형성" -"할 수 있습니다. 이는 복잡한 시스템에서 속성을 보다 효과적으로 분류하고 관리하" -"는 데 유용할 수 있습니다." +"계층적일 수 있는 속성 그룹을 나타냅니다. 이 클래스는 속성 그룹을 관리하고 구성하는 데 사용됩니다. 속성 그룹은 상위 그룹을 가질 수 " +"있으며 계층 구조를 형성할 수 있습니다. 이는 복잡한 시스템에서 속성을 보다 효과적으로 분류하고 관리하는 데 유용할 수 있습니다." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "이 그룹의 부모" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "상위 속성 그룹" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "속성 그룹의 이름" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "속성 그룹" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1546,54 +1517,52 @@ msgid "" "also maintains additional metadata and constraints, making it suitable for " "use in systems that interact with third-party vendors." msgstr "" -"외부 공급업체 및 해당 공급업체의 상호 작용 요구 사항에 대한 정보를 저장할 수 " -"있는 공급업체 엔티티를 나타냅니다. 공급업체 클래스는 외부 공급업체와 관련된 " -"정보를 정의하고 관리하는 데 사용됩니다. 공급업체의 이름, 통신에 필요한 인증 " -"세부 정보, 공급업체에서 검색한 제품에 적용된 마크업 비율을 저장합니다. 또한 " -"이 모델은 추가 메타데이터 및 제약 조건을 유지하므로 타사 공급업체와 상호 작용" -"하는 시스템에서 사용하기에 적합합니다." +"외부 공급업체 및 해당 공급업체의 상호 작용 요구 사항에 대한 정보를 저장할 수 있는 공급업체 엔티티를 나타냅니다. 공급업체 클래스는 " +"외부 공급업체와 관련된 정보를 정의하고 관리하는 데 사용됩니다. 공급업체의 이름, 통신에 필요한 인증 세부 정보, 공급업체에서 검색한 " +"제품에 적용된 마크업 비율을 저장합니다. 또한 이 모델은 추가 메타데이터 및 제약 조건을 유지하므로 타사 공급업체와 상호 작용하는 " +"시스템에서 사용하기에 적합합니다." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "공급업체의 API 통신에 필요한 자격 증명과 엔드포인트를 저장합니다." -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "인증 정보" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "이 공급업체에서 검색된 제품에 대한 마크업을 정의합니다." -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "공급업체 마크업 비율" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "이 공급업체의 이름" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "공급업체 이름" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "응답 파일" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "공급업체의 마지막 처리 응답" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "공급업체의 통합 파일 경로" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "통합 경로" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1601,50 +1570,48 @@ msgid "" "display name. It supports operations exported through mixins and provides " "metadata customization for administrative purposes." msgstr "" -"제품을 분류하거나 식별하는 데 사용되는 제품 태그를 나타냅니다. ProductTag 클" -"래스는 내부 태그 식별자와 사용자 친화적인 표시 이름의 조합을 통해 제품을 고유" -"하게 식별하고 분류하도록 설계되었습니다. 믹스인을 통해 내보낸 작업을 지원하" -"며 관리 목적으로 메타데이터 사용자 지정을 제공합니다." +"제품을 분류하거나 식별하는 데 사용되는 제품 태그를 나타냅니다. ProductTag 클래스는 내부 태그 식별자와 사용자 친화적인 표시 " +"이름의 조합을 통해 제품을 고유하게 식별하고 분류하도록 설계되었습니다. 믹스인을 통해 내보낸 작업을 지원하며 관리 목적으로 메타데이터 " +"사용자 지정을 제공합니다." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "제품 태그의 내부 태그 식별자" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "태그 이름" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "제품 태그의 사용자 친화적인 이름" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "태그 표시 이름" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "제품 태그" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -"제품에 사용되는 카테고리 태그를 나타냅니다. 이 클래스는 제품을 연결하고 분류" -"하는 데 사용할 수 있는 카테고리 태그를 모델링합니다. 내부 태그 식별자 및 사용" -"자 친화적인 표시 이름에 대한 속성을 포함합니다." +"제품에 사용되는 카테고리 태그를 나타냅니다. 이 클래스는 제품을 연결하고 분류하는 데 사용할 수 있는 카테고리 태그를 모델링합니다. 내부" +" 태그 식별자 및 사용자 친화적인 표시 이름에 대한 속성을 포함합니다." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "카테고리 태그" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "카테고리 태그" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1656,189 +1623,185 @@ msgid "" "hierarchy of categories, as well as assign attributes like images, tags, or " "priority." msgstr "" -"관련 항목을 계층 구조로 정리하고 그룹화할 카테고리 엔티티를 나타냅니다. 카테" -"고리는 다른 카테고리와 계층적 관계를 가질 수 있으며, 상위-하위 관계를 지원합" -"니다. 이 클래스에는 카테고리 관련 기능의 기반이 되는 메타데이터 및 시각적 표" -"현을 위한 필드가 포함되어 있습니다. 이 클래스는 일반적으로 애플리케이션 내에" -"서 제품 카테고리 또는 기타 유사한 그룹을 정의하고 관리하는 데 사용되며, 사용" -"자나 관리자가 카테고리의 이름, 설명 및 계층 구조를 지정하고 이미지, 태그 또" -"는 우선순위와 같은 속성을 할당할 수 있도록 합니다." +"관련 항목을 계층 구조로 정리하고 그룹화할 카테고리 엔티티를 나타냅니다. 카테고리는 다른 카테고리와 계층적 관계를 가질 수 있으며, " +"상위-하위 관계를 지원합니다. 이 클래스에는 카테고리 관련 기능의 기반이 되는 메타데이터 및 시각적 표현을 위한 필드가 포함되어 " +"있습니다. 이 클래스는 일반적으로 애플리케이션 내에서 제품 카테고리 또는 기타 유사한 그룹을 정의하고 관리하는 데 사용되며, 사용자나 " +"관리자가 카테고리의 이름, 설명 및 계층 구조를 지정하고 이미지, 태그 또는 우선순위와 같은 속성을 할당할 수 있도록 합니다." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "이 카테고리를 대표하는 이미지 업로드" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "카테고리 이미지" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "이 카테고리의 제품에 대한 마크업 비율을 정의합니다." -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "계층 구조를 형성하는 이 카테고리의 상위 카테고리" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "상위 카테고리" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "카테고리 이름" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "이 카테고리의 이름을 입력합니다." -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "이 카테고리에 대한 자세한 설명 추가" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "카테고리 설명" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "이 카테고리를 설명하거나 그룹화하는 데 도움이 되는 태그" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "우선순위" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"시스템에서 브랜드 객체를 나타냅니다. 이 클래스는 이름, 로고, 설명, 관련 카테" -"고리, 고유 슬러그, 우선순위 등 브랜드와 관련된 정보 및 속성을 처리합니다. 이" -"를 통해 애플리케이션 내에서 브랜드 관련 데이터를 구성하고 표현할 수 있습니다." +"시스템에서 브랜드 객체를 나타냅니다. 이 클래스는 이름, 로고, 설명, 관련 카테고리, 고유 슬러그, 우선순위 등 브랜드와 관련된 정보 " +"및 속성을 처리합니다. 이를 통해 애플리케이션 내에서 브랜드 관련 데이터를 구성하고 표현할 수 있습니다." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "이 브랜드 이름" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "브랜드 이름" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "이 브랜드를 대표하는 로고 업로드" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "브랜드 작은 이미지" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "이 브랜드를 대표하는 큰 로고 업로드" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "브랜드 빅 이미지" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "브랜드에 대한 자세한 설명 추가" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "브랜드 설명" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "이 브랜드와 연관된 선택적 카테고리" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "카테고리" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"시스템에서 관리되는 제품의 재고를 나타냅니다. 이 클래스는 공급업체, 제품, 재" -"고 정보 간의 관계와 가격, 구매 가격, 수량, SKU 및 디지털 자산과 같은 재고 관" -"련 속성에 대한 세부 정보를 제공합니다. 다양한 공급업체에서 제공하는 제품을 추" -"적하고 평가할 수 있도록 하는 재고 관리 시스템의 일부입니다." +"시스템에서 관리되는 제품의 재고를 나타냅니다. 이 클래스는 공급업체, 제품, 재고 정보 간의 관계와 가격, 구매 가격, 수량, SKU 및" +" 디지털 자산과 같은 재고 관련 속성에 대한 세부 정보를 제공합니다. 다양한 공급업체에서 제공하는 제품을 추적하고 평가할 수 있도록 하는" +" 재고 관리 시스템의 일부입니다." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "이 제품 재고를 공급하는 공급업체" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "관련 공급업체" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "마크업 후 고객에게 제공되는 최종 가격" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "판매 가격" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "이 주식 항목과 관련된 제품" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "관련 제품" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "이 제품에 대해 공급업체에 지불한 가격" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "공급업체 구매 가격" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "재고가 있는 제품의 사용 가능한 수량" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "재고 수량" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "제품 식별을 위해 공급업체에서 할당하는 SKU" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "공급업체의 SKU" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "해당되는 경우 이 주식과 관련된 디지털 파일" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "디지털 파일" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "시스템 속성" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "재고 항목" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1849,373 +1812,366 @@ msgid "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." msgstr "" -"카테고리, 브랜드, 태그, 디지털 상태, 이름, 설명, 부품 번호, 슬러그 등의 속성" -"을 가진 제품을 나타냅니다. 평점, 피드백 수, 가격, 수량, 총 주문 수 등을 검색" -"할 수 있는 관련 유틸리티 속성을 제공합니다. 이커머스 또는 재고 관리를 처리하" -"는 시스템에서 사용하도록 설계되었습니다. 이 클래스는 관련 모델(예: 카테고리, " -"브랜드, 제품 태그)과 상호 작용하고 자주 액세스하는 속성에 대한 캐싱을 관리하" -"여 성능을 개선합니다. 애플리케이션 내에서 제품 데이터 및 관련 정보를 정의하" -"고 조작하는 데 사용됩니다." +"카테고리, 브랜드, 태그, 디지털 상태, 이름, 설명, 부품 번호, 슬러그 등의 속성을 가진 제품을 나타냅니다. 평점, 피드백 수, " +"가격, 수량, 총 주문 수 등을 검색할 수 있는 관련 유틸리티 속성을 제공합니다. 이커머스 또는 재고 관리를 처리하는 시스템에서 " +"사용하도록 설계되었습니다. 이 클래스는 관련 모델(예: 카테고리, 브랜드, 제품 태그)과 상호 작용하고 자주 액세스하는 속성에 대한 " +"캐싱을 관리하여 성능을 개선합니다. 애플리케이션 내에서 제품 데이터 및 관련 정보를 정의하고 조작하는 데 사용됩니다." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "이 제품이 속한 카테고리" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "선택 사항으로 이 제품을 브랜드와 연결" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "이 제품을 설명하거나 그룹화하는 데 도움이 되는 태그" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "이 제품이 디지털 방식으로 배송되는지 여부를 나타냅니다." -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "제품 디지털화 여부" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "이 제품을 주기적 작업에서 업데이트해야 하는지 여부를 나타냅니다." + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "제품 업데이트 가능 여부" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "제품에 대한 명확한 식별 이름 제공" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "제품 이름" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "제품에 대한 자세한 설명 추가" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "제품 설명" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "이 제품의 부품 번호" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "부품 번호" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "이 제품의 재고 보관 단위" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"시스템의 속성을 나타냅니다. 이 클래스는 다른 엔티티와 연결할 수 있는 사용자 " -"지정 가능한 데이터 조각인 속성을 정의하고 관리하는 데 사용됩니다. 속성에는 연" -"관된 카테고리, 그룹, 값 유형 및 이름이 있습니다. 이 모델은 문자열, 정수, 실" -"수, 부울, 배열, 객체 등 여러 유형의 값을 지원합니다. 이를 통해 동적이고 유연" -"한 데이터 구조화가 가능합니다." +"시스템의 속성을 나타냅니다. 이 클래스는 다른 엔티티와 연결할 수 있는 사용자 지정 가능한 데이터 조각인 속성을 정의하고 관리하는 데 " +"사용됩니다. 속성에는 연관된 카테고리, 그룹, 값 유형 및 이름이 있습니다. 이 모델은 문자열, 정수, 실수, 부울, 배열, 객체 등 " +"여러 유형의 값을 지원합니다. 이를 통해 동적이고 유연한 데이터 구조화가 가능합니다." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "이 속성의 그룹" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "문자열" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "정수" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Float" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "부울" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "배열" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "개체" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "속성 값의 유형" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "값 유형" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "이 속성의 이름" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "속성 이름" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "필터링 가능" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "는 이 속성을 필터링에 사용할 수 있는지 여부를 지정합니다." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "속성" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"상품에 연결된 속성의 특정 값을 나타냅니다. '속성'을 고유한 '값'에 연결하여 제" -"품 특성을 더 잘 구성하고 동적으로 표현할 수 있습니다." +"상품에 연결된 속성의 특정 값을 나타냅니다. '속성'을 고유한 '값'에 연결하여 제품 특성을 더 잘 구성하고 동적으로 표현할 수 " +"있습니다." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "이 값의 속성" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "이 속성 값과 연관된 특정 제품" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "이 속성의 구체적인 값은 다음과 같습니다." -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" -"시스템에서 제품과 연관된 제품 이미지를 나타냅니다. 이 클래스는 이미지 파일 업" -"로드, 특정 제품과의 연결, 표시 순서 결정 등의 기능을 포함하여 제품의 이미지" -"를 관리하도록 설계되었습니다. 또한 이미지에 대한 대체 텍스트가 포함된 접근성 " -"기능도 포함되어 있습니다." +"시스템에서 제품과 연관된 제품 이미지를 나타냅니다. 이 클래스는 이미지 파일 업로드, 특정 제품과의 연결, 표시 순서 결정 등의 기능을 " +"포함하여 제품의 이미지를 관리하도록 설계되었습니다. 또한 이미지에 대한 대체 텍스트가 포함된 접근성 기능도 포함되어 있습니다." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "접근성을 위해 이미지에 대체 텍스트 제공" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "이미지 대체 텍스트" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "이 제품의 이미지 파일 업로드" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "제품 이미지" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "이미지가 표시되는 순서를 결정합니다." -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "우선순위 표시" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "이 이미지가 나타내는 제품" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "제품 이미지" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"할인이 적용되는 제품에 대한 프로모션 캠페인을 나타냅니다. 이 클래스는 제품에 " -"대해 백분율 기반 할인을 제공하는 프로모션 캠페인을 정의하고 관리하는 데 사용" -"됩니다. 이 클래스에는 할인율 설정, 프로모션에 대한 세부 정보 제공 및 해당 제" -"품에 대한 링크를 위한 속성이 포함되어 있습니다. 제품 카탈로그와 통합되어 캠페" -"인에서 영향을 받는 품목을 결정합니다." +"할인이 적용되는 제품에 대한 프로모션 캠페인을 나타냅니다. 이 클래스는 제품에 대해 백분율 기반 할인을 제공하는 프로모션 캠페인을 " +"정의하고 관리하는 데 사용됩니다. 이 클래스에는 할인율 설정, 프로모션에 대한 세부 정보 제공 및 해당 제품에 대한 링크를 위한 속성이 " +"포함되어 있습니다. 제품 카탈로그와 통합되어 캠페인에서 영향을 받는 품목을 결정합니다." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "선택한 제품에 대한 할인 비율" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "할인 비율" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "이 프로모션의 고유한 이름을 입력하세요." -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "프로모션 이름" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "프로모션 설명" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "이 프로모션에 포함되는 제품 선택" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "포함된 제품" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "프로모션" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"원하는 상품을 저장하고 관리하기 위한 사용자의 위시리스트를 나타냅니다. 이 클" -"래스는 제품 컬렉션을 관리하는 기능을 제공하여 제품 추가 및 제거와 같은 작업" -"을 지원할 뿐만 아니라 여러 제품을 한 번에 추가 및 제거하는 작업도 지원합니다." +"원하는 상품을 저장하고 관리하기 위한 사용자의 위시리스트를 나타냅니다. 이 클래스는 제품 컬렉션을 관리하는 기능을 제공하여 제품 추가 및" +" 제거와 같은 작업을 지원할 뿐만 아니라 여러 제품을 한 번에 추가 및 제거하는 작업도 지원합니다." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "사용자가 원하는 것으로 표시한 제품" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "이 위시리스트를 소유한 사용자" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "위시리스트의 소유자" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "위시리스트" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"상품에 연결된 다큐멘터리 레코드를 나타냅니다. 이 클래스는 파일 업로드 및 메타" -"데이터를 포함하여 특정 제품과 관련된 다큐멘터리에 대한 정보를 저장하는 데 사" -"용됩니다. 여기에는 다큐멘터리 파일의 파일 유형과 저장 경로를 처리하는 메서드" -"와 프로퍼티가 포함되어 있습니다. 특정 믹스인의 기능을 확장하고 추가 사용자 정" -"의 기능을 제공합니다." +"상품에 연결된 다큐멘터리 레코드를 나타냅니다. 이 클래스는 파일 업로드 및 메타데이터를 포함하여 특정 제품과 관련된 다큐멘터리에 대한 " +"정보를 저장하는 데 사용됩니다. 여기에는 다큐멘터리 파일의 파일 유형과 저장 경로를 처리하는 메서드와 프로퍼티가 포함되어 있습니다. 특정" +" 믹스인의 기능을 확장하고 추가 사용자 정의 기능을 제공합니다." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "다큐멘터리" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "다큐멘터리" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "해결되지 않음" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" -"위치 세부 정보 및 사용자와의 연결을 포함하는 주소 엔티티를 나타냅니다. 지리" -"적 및 주소 데이터 저장과 지오코딩 서비스와의 통합을 위한 기능을 제공합니다. " -"이 클래스는 거리, 도시, 지역, 국가, 지리적 위치(경도 및 위도)와 같은 구성 요" -"소를 포함한 상세한 주소 정보를 저장하도록 설계되었습니다. 지오코딩 API와의 통" -"합을 지원하여 추가 처리 또는 검사를 위해 원시 API 응답을 저장할 수 있습니다. " -"또한 이 클래스를 사용하면 주소를 사용자와 연결하여 개인화된 데이터 처리를 용" -"이하게 할 수 있습니다." +"위치 세부 정보 및 사용자와의 연결을 포함하는 주소 엔티티를 나타냅니다. 지리적 및 주소 데이터 저장과 지오코딩 서비스와의 통합을 위한 " +"기능을 제공합니다. 이 클래스는 거리, 도시, 지역, 국가, 지리적 위치(경도 및 위도)와 같은 구성 요소를 포함한 상세한 주소 정보를 " +"저장하도록 설계되었습니다. 지오코딩 API와의 통합을 지원하여 추가 처리 또는 검사를 위해 원시 API 응답을 저장할 수 있습니다. 또한" +" 이 클래스를 사용하면 주소를 사용자와 연결하여 개인화된 데이터 처리를 용이하게 할 수 있습니다." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "고객 주소 라인" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "주소 라인" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "거리" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "지구" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "도시" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "지역" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "우편 번호" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "국가" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "지리적 위치 포인트(경도, 위도)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "이 주소에 대한 지오코더의 전체 JSON 응답" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "지오코딩 서비스의 저장된 JSON 응답" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "주소" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "주소" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2224,252 +2180,241 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"할인에 사용할 수 있는 프로모션 코드를 나타내며, 유효 기간, 할인 유형 및 적용" -"을 관리합니다. 프로모션 코드 클래스는 고유 식별자, 할인 속성(금액 또는 백분" -"율), 유효 기간, 관련 사용자(있는 경우), 사용 상태 등 프로모션 코드에 대한 세" -"부 정보를 저장합니다. 여기에는 제약 조건이 충족되는지 확인하면서 프로모션 코" -"드의 유효성을 검사하고 주문에 적용하는 기능이 포함되어 있습니다." +"할인에 사용할 수 있는 프로모션 코드를 나타내며, 유효 기간, 할인 유형 및 적용을 관리합니다. 프로모션 코드 클래스는 고유 식별자, " +"할인 속성(금액 또는 백분율), 유효 기간, 관련 사용자(있는 경우), 사용 상태 등 프로모션 코드에 대한 세부 정보를 저장합니다. " +"여기에는 제약 조건이 충족되는지 확인하면서 프로모션 코드의 유효성을 검사하고 주문에 적용하는 기능이 포함되어 있습니다." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "사용자가 할인을 받기 위해 사용하는 고유 코드" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "프로모션 코드 식별자" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "퍼센트를 사용하지 않을 경우 고정 할인 금액 적용" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "고정 할인 금액" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "고정 금액 미사용 시 적용되는 할인 비율" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "백분율 할인" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "프로모션 코드 만료 시 타임스탬프" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "유효 기간 종료 시간" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "이 프로모코드의 타임스탬프가 유효한 시점" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "유효 기간 시작 시간" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "프로모코드가 사용된 타임스탬프, 아직 사용되지 않은 경우 비워둡니다." -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "사용 타임스탬프" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "해당되는 경우 이 프로모코드에 할당된 사용자" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "할당된 사용자" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "프로모션 코드" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "프로모션 코드" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." -msgstr "" -"할인 유형(금액 또는 백분율)은 한 가지 유형만 정의해야 하며, 두 가지 모두 또" -"는 둘 다 정의해서는 안 됩니다." +msgstr "할인 유형(금액 또는 백분율)은 한 가지 유형만 정의해야 하며, 두 가지 모두 또는 둘 다 정의해서는 안 됩니다." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "프로모코드가 이미 사용되었습니다." -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "프로모션 코드 {self.uuid}의 할인 유형이 잘못되었습니다!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" -"사용자가 진행한 주문을 나타냅니다. 이 클래스는 청구 및 배송 정보, 상태, 연결" -"된 사용자, 알림 및 관련 작업과 같은 다양한 속성을 포함하여 애플리케이션 내에" -"서 주문을 모델링합니다. 주문에는 연결된 제품, 프로모션 적용, 주소 설정, 배송 " -"또는 청구 세부 정보 업데이트가 가능합니다. 또한 주문 수명 주기에서 제품을 관" -"리하는 기능도 지원합니다." +"사용자가 진행한 주문을 나타냅니다. 이 클래스는 청구 및 배송 정보, 상태, 연결된 사용자, 알림 및 관련 작업과 같은 다양한 속성을 " +"포함하여 애플리케이션 내에서 주문을 모델링합니다. 주문에는 연결된 제품, 프로모션 적용, 주소 설정, 배송 또는 청구 세부 정보 " +"업데이트가 가능합니다. 또한 주문 수명 주기에서 제품을 관리하는 기능도 지원합니다." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "이 주문에 사용된 청구 주소" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "이 주문에 적용된 프로모션 코드(선택 사항)" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "프로모션 코드 적용" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "이 주문에 사용된 배송지 주소" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "배송 주소" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "라이프사이클 내 주문의 현재 상태" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "주문 상태" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" -msgstr "" -"사용자에게 표시할 알림의 JSON 구조, 관리자 UI에서는 테이블 보기가 사용됩니다." +msgstr "사용자에게 표시할 알림의 JSON 구조, 관리자 UI에서는 테이블 보기가 사용됩니다." -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "이 주문에 대한 주문 속성의 JSON 표현" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "주문한 사용자" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "사용자" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "주문이 완료된 타임스탬프" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "시간 확보" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "사람이 읽을 수 있는 주문 식별자" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "사람이 읽을 수 있는 ID" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "주문" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "사용자는 한 번에 하나의 대기 주문만 보유해야 합니다!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "보류 중인 주문이 아닌 주문에는 제품을 추가할 수 없습니다." -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "주문에 비활성 제품을 추가할 수 없습니다." -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "재고가 있는 제품보다 많은 제품을 추가할 수 없습니다." -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "보류 중인 주문이 아닌 주문에서는 제품을 제거할 수 없습니다." -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "쿼리 <{query}>에 {name}가 존재하지 않습니다!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "프로모코드가 존재하지 않습니다." -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "배송 주소가 지정된 실제 제품만 구매할 수 있습니다!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "주소가 존재하지 않습니다." -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "지금은 구매할 수 없습니다. 몇 분 후에 다시 시도해 주세요." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "잘못된 힘 값" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "빈 주문은 구매할 수 없습니다!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "사용자 없이는 주문을 구매할 수 없습니다!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "잔액이 없는 사용자는 잔액으로 구매할 수 없습니다!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "주문을 완료하기에 자금이 부족합니다." -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -msgstr "" -"등록하지 않으면 구매할 수 없으므로 고객 이름, 고객 이메일, 고객 전화 번호 등" -"의 정보를 제공하세요." +msgstr "등록하지 않으면 구매할 수 없으므로 고객 이름, 고객 이메일, 고객 전화 번호 등의 정보를 제공하세요." -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" -msgstr "" -"결제 방법이 잘못되었습니다: {payment_method}에서 {available_payment_methods}" -"로!" +msgstr "결제 방법이 잘못되었습니다: {payment_method}에서 {available_payment_methods}로!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2477,37 +2422,36 @@ msgid "" "product in the order, and a user-assigned rating. The class uses database " "fields to effectively model and manage feedback data." msgstr "" -"제품에 대한 사용자 피드백을 관리합니다. 이 클래스는 사용자가 구매한 특정 제품" -"에 대한 사용자 피드백을 캡처하고 저장하도록 설계되었습니다. 여기에는 사용자 " -"댓글, 주문에서 관련 제품에 대한 참조 및 사용자가 지정한 등급을 저장하는 속성" -"이 포함되어 있습니다. 이 클래스는 데이터베이스 필드를 사용하여 피드백 데이터" -"를 효과적으로 모델링하고 관리합니다." +"제품에 대한 사용자 피드백을 관리합니다. 이 클래스는 사용자가 구매한 특정 제품에 대한 사용자 피드백을 캡처하고 저장하도록 " +"설계되었습니다. 여기에는 사용자 댓글, 주문에서 관련 제품에 대한 참조 및 사용자가 지정한 등급을 저장하는 속성이 포함되어 있습니다. 이" +" 클래스는 데이터베이스 필드를 사용하여 피드백 데이터를 효과적으로 모델링하고 관리합니다." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "제품 사용 경험에 대한 사용자 제공 의견" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "피드백 댓글" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "이 피드백에 대한 순서대로 특정 제품을 참조합니다." -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "관련 주문 제품" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "제품에 대한 사용자 지정 평점" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "제품 평가" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2519,135 +2463,130 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"주문과 관련된 제품 및 해당 속성을 나타냅니다. 주문 제품 모델은 구매 가격, 수" -"량, 제품 속성 및 상태 등의 세부 정보를 포함하여 주문의 일부인 제품에 대한 정" -"보를 유지 관리합니다. 사용자 및 관리자에 대한 알림을 관리하고 제품 잔액 반환 " -"또는 피드백 추가와 같은 작업을 처리합니다. 또한 이 모델은 총 가격 계산이나 디" -"지털 제품의 다운로드 URL 생성 등 비즈니스 로직을 지원하는 메서드와 속성을 제" -"공합니다. 이 모델은 주문 및 제품 모델과 통합되며 해당 모델에 대한 참조를 저장" -"합니다." +"주문과 관련된 제품 및 해당 속성을 나타냅니다. 주문 제품 모델은 구매 가격, 수량, 제품 속성 및 상태 등의 세부 정보를 포함하여 " +"주문의 일부인 제품에 대한 정보를 유지 관리합니다. 사용자 및 관리자에 대한 알림을 관리하고 제품 잔액 반환 또는 피드백 추가와 같은 " +"작업을 처리합니다. 또한 이 모델은 총 가격 계산이나 디지털 제품의 다운로드 URL 생성 등 비즈니스 로직을 지원하는 메서드와 속성을 " +"제공합니다. 이 모델은 주문 및 제품 모델과 통합되며 해당 모델에 대한 참조를 저장합니다." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "구매 시점에 고객이 이 제품에 대해 지불한 가격입니다." -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "주문 시점의 구매 가격" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "주문한 제품에 대한 관리자용 내부 댓글" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "내부 의견" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "사용자 알림" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "이 항목의 속성에 대한 JSON 표현" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "주문한 제품 속성" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "이 제품이 포함된 상위 주문 참조" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "상위 주문" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "이 주문 라인과 연결된 특정 제품" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "이 특정 제품의 주문 수량" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "제품 수량" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "이 제품의 현재 상태 순서" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "제품 라인 상태" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "주문제품에는 연결된 주문이 있어야 합니다!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "피드백에 지정된 작업이 잘못되었습니다: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "받지 않은 주문에 대해서는 피드백을 제공할 수 없습니다." -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "이름" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "통합 URL" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "인증 자격 증명" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "기본 CRM 공급업체는 하나만 사용할 수 있습니다." -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "주문의 CRM 링크" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "주문의 CRM 링크" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" -"주문과 관련된 디지털 자산의 다운로드 기능을 나타냅니다. 디지털 자산 다운로드 " -"클래스는 주문 상품과 관련된 다운로드를 관리하고 액세스할 수 있는 기능을 제공" -"합니다. 연결된 주문 상품, 다운로드 횟수, 자산이 공개적으로 표시되는지 여부에 " -"대한 정보를 유지 관리합니다. 여기에는 연결된 주문이 완료 상태일 때 자산을 다" -"운로드할 수 있는 URL을 생성하는 메서드가 포함되어 있습니다." +"주문과 관련된 디지털 자산의 다운로드 기능을 나타냅니다. 디지털 자산 다운로드 클래스는 주문 상품과 관련된 다운로드를 관리하고 액세스할 " +"수 있는 기능을 제공합니다. 연결된 주문 상품, 다운로드 횟수, 자산이 공개적으로 표시되는지 여부에 대한 정보를 유지 관리합니다. " +"여기에는 연결된 주문이 완료 상태일 때 자산을 다운로드할 수 있는 URL을 생성하는 메서드가 포함되어 있습니다." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "다운로드" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "다운로드" @@ -2846,12 +2785,10 @@ msgstr "안녕하세요 %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"주문해 주셔서 감사합니다 #%(order.pk)s! 주문하신 상품이 입고되었음을 알려드립" -"니다. 주문 세부 정보는 아래와 같습니다:" +"주문해 주셔서 감사합니다 #%(order.pk)s! 주문하신 상품이 입고되었음을 알려드립니다. 주문 세부 정보는 아래와 같습니다:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2874,8 +2811,7 @@ msgstr "총 가격" msgid "" "if you have any questions, feel free to contact our support at\n" " %(config.EMAIL_HOST_USER)s." -msgstr "" -"궁금한 점이 있으면 언제든지 %(config.EMAIL_HOST_USER)s로 지원팀에 문의하세요." +msgstr "궁금한 점이 있으면 언제든지 %(config.EMAIL_HOST_USER)s로 지원팀에 문의하세요." #: engine/core/templates/digital_order_created_email.html:133 #, python-format @@ -2903,9 +2839,7 @@ msgstr "안녕하세요 %(user_first_name)s," msgid "" "we have successfully processed your order №%(order_uuid)s! below are the\n" " details of your order:" -msgstr "" -"주문이 성공적으로 처리되었습니다 №%(order_uuid)s! 주문 세부 정보는 아래와 같" -"습니다:" +msgstr "주문이 성공적으로 처리되었습니다 №%(order_uuid)s! 주문 세부 정보는 아래와 같습니다:" #: engine/core/templates/digital_order_delivered_email.html:128 msgid "" @@ -2958,12 +2892,9 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" -msgstr "" -"주문해 주셔서 감사합니다! 구매를 확인하게 되어 기쁩니다. 주문 세부 정보는 아" -"래와 같습니다:" +msgstr "주문해 주셔서 감사합니다! 구매를 확인하게 되어 기쁩니다. 주문 세부 정보는 아래와 같습니다:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -2990,11 +2921,11 @@ msgstr "" "모든 권리\n" " 예약됨" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "데이터와 시간 초과가 모두 필요합니다." -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "잘못된 시간 초과 값, 0~216000초 사이여야 합니다." @@ -3026,133 +2957,119 @@ msgstr "이 작업을 수행할 수 있는 권한이 없습니다." msgid "NOMINATIM_URL must be configured." msgstr "NOMINATIM_URL 파라미터를 설정해야 합니다!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" -msgstr "" -"이미지 크기는 w{max_width} x h{max_height} 픽셀을 초과하지 않아야 합니다!" +msgstr "이미지 크기는 w{max_width} x h{max_height} 픽셀을 초과하지 않아야 합니다!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -"사이트맵 색인에 대한 요청을 처리하고 XML 응답을 반환합니다. 응답에 XML에 적합" -"한 콘텐츠 유형 헤더가 포함되어 있는지 확인합니다." +"사이트맵 색인에 대한 요청을 처리하고 XML 응답을 반환합니다. 응답에 XML에 적합한 콘텐츠 유형 헤더가 포함되어 있는지 확인합니다." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -"사이트맵에 대한 상세 보기 응답을 처리합니다. 이 함수는 요청을 처리하고 적절" -"한 사이트맵 상세 보기 응답을 가져온 다음 XML의 Content-Type 헤더를 설정합니" -"다." +"사이트맵에 대한 상세 보기 응답을 처리합니다. 이 함수는 요청을 처리하고 적절한 사이트맵 상세 보기 응답을 가져온 다음 XML의 " +"Content-Type 헤더를 설정합니다." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "지원되는 언어 목록과 해당 정보를 반환합니다." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "웹사이트의 매개변수를 JSON 객체로 반환합니다." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -msgstr "" -"지정된 키와 시간 초과로 캐시 데이터를 읽고 설정하는 등의 캐시 작업을 처리합니" -"다." +msgstr "지정된 키와 시간 초과로 캐시 데이터를 읽고 설정하는 등의 캐시 작업을 처리합니다." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "'문의하기' 양식 제출을 처리합니다." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "들어오는 POST 요청의 URL 처리 및 유효성 검사 요청을 처리합니다." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "글로벌 검색 쿼리를 처리합니다." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "등록하지 않고 비즈니스로 구매하는 로직을 처리합니다." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "주문과 관련된 디지털 자산의 다운로드를 처리합니다.\n" -"이 함수는 프로젝트의 저장소 디렉토리에 있는 디지털 자산 파일을 제공하려고 시" -"도합니다. 파일을 찾을 수 없으면 HTTP 404 오류가 발생하여 리소스를 사용할 수 " -"없음을 나타냅니다." +"이 함수는 프로젝트의 저장소 디렉토리에 있는 디지털 자산 파일을 제공하려고 시도합니다. 파일을 찾을 수 없으면 HTTP 404 오류가 발생하여 리소스를 사용할 수 없음을 나타냅니다." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "주문_제품_UUID는 필수입니다." -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "주문 제품이 존재하지 않습니다." -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "디지털 자산은 한 번만 다운로드할 수 있습니다." -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "디지털 자산을 다운로드하기 전에 주문을 결제해야 합니다." -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "주문 제품에 제품이 없습니다." -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "파비콘을 찾을 수 없습니다." -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "웹사이트의 파비콘 요청을 처리합니다.\n" -"이 함수는 프로젝트의 정적 디렉토리에 있는 파비콘 파일을 제공하려고 시도합니" -"다. 파비콘 파일을 찾을 수 없는 경우 HTTP 404 오류가 발생하여 리소스를 사용할 " -"수 없음을 나타냅니다." +"이 함수는 프로젝트의 정적 디렉토리에 있는 파비콘 파일을 제공하려고 시도합니다. 파비콘 파일을 찾을 수 없는 경우 HTTP 404 오류가 발생하여 리소스를 사용할 수 없음을 나타냅니다." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -"요청을 관리자 색인 페이지로 리디렉션합니다. 이 함수는 들어오는 HTTP 요청을 처" -"리하여 Django 관리자 인터페이스 인덱스 페이지로 리디렉션합니다. HTTP 리디렉션" -"을 처리하기 위해 Django의 `redirect` 함수를 사용합니다." +"요청을 관리자 색인 페이지로 리디렉션합니다. 이 함수는 들어오는 HTTP 요청을 처리하여 Django 관리자 인터페이스 인덱스 페이지로 " +"리디렉션합니다. HTTP 리디렉션을 처리하기 위해 Django의 `redirect` 함수를 사용합니다." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "현재 버전의 eVibes를 반환합니다." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "수익 및 주문(마지막 %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "대시보드에 대한 사용자 지정 변수를 반환합니다." @@ -3164,22 +3081,21 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"Evibes 관련 작업을 관리하기 위한 뷰셋을 정의합니다. EvibesViewSet 클래스는 " -"ModelViewSet에서 상속되며 Evibes 엔티티에 대한 액션 및 연산을 처리하는 기능" -"을 제공합니다. 여기에는 현재 작업을 기반으로 하는 동적 직렬화기 클래스, 사용" -"자 지정 가능한 권한 및 렌더링 형식에 대한 지원이 포함됩니다." +"Evibes 관련 작업을 관리하기 위한 뷰셋을 정의합니다. EvibesViewSet 클래스는 ModelViewSet에서 상속되며 " +"Evibes 엔티티에 대한 액션 및 연산을 처리하는 기능을 제공합니다. 여기에는 현재 작업을 기반으로 하는 동적 직렬화기 클래스, 사용자" +" 지정 가능한 권한 및 렌더링 형식에 대한 지원이 포함됩니다." #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" -"속성 그룹 객체를 관리하기 위한 뷰셋을 나타냅니다. 데이터의 필터링, 직렬화, 검" -"색 등 AttributeGroup과 관련된 작업을 처리합니다. 이 클래스는 애플리케이션의 " -"API 계층의 일부이며 AttributeGroup 데이터에 대한 요청 및 응답을 처리하는 표준" -"화된 방법을 제공합니다." +"속성 그룹 객체를 관리하기 위한 뷰셋을 나타냅니다. 데이터의 필터링, 직렬화, 검색 등 AttributeGroup과 관련된 작업을 " +"처리합니다. 이 클래스는 애플리케이션의 API 계층의 일부이며 AttributeGroup 데이터에 대한 요청 및 응답을 처리하는 표준화된" +" 방법을 제공합니다." #: engine/core/viewsets.py:179 msgid "" @@ -3190,24 +3106,21 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"애플리케이션 내에서 속성 개체와 관련된 작업을 처리합니다. 속성 데이터와 상호 " -"작용할 수 있는 API 엔드포인트 세트를 제공합니다. 이 클래스는 속성 개체의 쿼" -"리, 필터링 및 직렬화를 관리하여 특정 필드별로 필터링하거나 요청에 따라 단순화" -"된 정보와 상세한 정보를 검색하는 등 반환되는 데이터를 동적으로 제어할 수 있도" -"록 합니다." +"애플리케이션 내에서 속성 개체와 관련된 작업을 처리합니다. 속성 데이터와 상호 작용할 수 있는 API 엔드포인트 세트를 제공합니다. 이 " +"클래스는 속성 개체의 쿼리, 필터링 및 직렬화를 관리하여 특정 필드별로 필터링하거나 요청에 따라 단순화된 정보와 상세한 정보를 검색하는 " +"등 반환되는 데이터를 동적으로 제어할 수 있도록 합니다." #: engine/core/viewsets.py:198 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"속성값 객체를 관리하기 위한 뷰셋입니다. 이 뷰셋은 AttributeValue 객체를 나" -"열, 검색, 생성, 업데이트 및 삭제하기 위한 기능을 제공합니다. 이 뷰셋은 장고 " -"REST 프레임워크의 뷰셋 메커니즘과 통합되며 다양한 작업에 적절한 직렬화기를 사" -"용합니다. 필터링 기능은 DjangoFilterBackend를 통해 제공됩니다." +"속성값 객체를 관리하기 위한 뷰셋입니다. 이 뷰셋은 AttributeValue 객체를 나열, 검색, 생성, 업데이트 및 삭제하기 위한 " +"기능을 제공합니다. 이 뷰셋은 장고 REST 프레임워크의 뷰셋 메커니즘과 통합되며 다양한 작업에 적절한 직렬화기를 사용합니다. 필터링 " +"기능은 DjangoFilterBackend를 통해 제공됩니다." #: engine/core/viewsets.py:217 msgid "" @@ -3217,10 +3130,9 @@ msgid "" "The viewset also enforces permissions to ensure that only authorized users " "can access specific data." msgstr "" -"카테고리 관련 작업에 대한 보기를 관리합니다. CategoryViewSet 클래스는 시스템" -"에서 카테고리 모델과 관련된 작업을 처리하는 역할을 담당합니다. 카테고리 데이" -"터 검색, 필터링 및 직렬화를 지원합니다. 또한 이 뷰 집합은 권한이 부여된 사용" -"자만 특정 데이터에 액세스할 수 있도록 권한을 적용합니다." +"카테고리 관련 작업에 대한 보기를 관리합니다. CategoryViewSet 클래스는 시스템에서 카테고리 모델과 관련된 작업을 처리하는 " +"역할을 담당합니다. 카테고리 데이터 검색, 필터링 및 직렬화를 지원합니다. 또한 이 뷰 집합은 권한이 부여된 사용자만 특정 데이터에 " +"액세스할 수 있도록 권한을 적용합니다." #: engine/core/viewsets.py:346 msgid "" @@ -3229,9 +3141,8 @@ msgid "" "uses Django's ViewSet framework to simplify the implementation of API " "endpoints for Brand objects." msgstr "" -"브랜드 인스턴스를 관리하기 위한 뷰셋을 나타냅니다. 이 클래스는 브랜드 객체를 " -"쿼리, 필터링 및 직렬화하기 위한 기능을 제공합니다. 이 클래스는 장고의 뷰셋 프" -"레임워크를 사용하여 브랜드 객체에 대한 API 엔드포인트의 구현을 간소화합니다." +"브랜드 인스턴스를 관리하기 위한 뷰셋을 나타냅니다. 이 클래스는 브랜드 객체를 쿼리, 필터링 및 직렬화하기 위한 기능을 제공합니다. 이 " +"클래스는 장고의 뷰셋 프레임워크를 사용하여 브랜드 객체에 대한 API 엔드포인트의 구현을 간소화합니다." #: engine/core/viewsets.py:458 msgid "" @@ -3243,11 +3154,10 @@ msgid "" "product details, applying permissions, and accessing related feedback of a " "product." msgstr "" -"시스템에서 `Product` 모델과 관련된 작업을 관리합니다. 이 클래스는 필터링, 직" -"렬화 및 특정 인스턴스에 대한 작업을 포함하여 제품을 관리하기 위한 뷰셋을 제공" -"합니다. 이 클래스는 공통 기능을 사용하기 위해 `EvibesViewSet`에서 확장되며 " -"RESTful API 작업을 위해 Django REST 프레임워크와 통합됩니다. 제품 세부 정보 " -"검색, 권한 적용, 제품의 관련 피드백에 액세스하는 메서드가 포함되어 있습니다." +"시스템에서 `Product` 모델과 관련된 작업을 관리합니다. 이 클래스는 필터링, 직렬화 및 특정 인스턴스에 대한 작업을 포함하여 " +"제품을 관리하기 위한 뷰셋을 제공합니다. 이 클래스는 공통 기능을 사용하기 위해 `EvibesViewSet`에서 확장되며 RESTful " +"API 작업을 위해 Django REST 프레임워크와 통합됩니다. 제품 세부 정보 검색, 권한 적용, 제품의 관련 피드백에 액세스하는 " +"메서드가 포함되어 있습니다." #: engine/core/viewsets.py:605 msgid "" @@ -3257,56 +3167,50 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"벤더 객체를 관리하기 위한 뷰셋을 나타냅니다. 이 뷰셋을 통해 벤더 데이터를 가" -"져오고, 필터링하고, 직렬화할 수 있습니다. 다양한 작업을 처리하는 데 사용되는 " -"쿼리 집합, 필터 구성 및 직렬화기 클래스를 정의합니다. 이 클래스의 목적은 " -"Django REST 프레임워크를 통해 공급업체 관련 리소스에 대한 간소화된 액세스를 " -"제공하는 것입니다." +"벤더 객체를 관리하기 위한 뷰셋을 나타냅니다. 이 뷰셋을 통해 벤더 데이터를 가져오고, 필터링하고, 직렬화할 수 있습니다. 다양한 작업을" +" 처리하는 데 사용되는 쿼리 집합, 필터 구성 및 직렬화기 클래스를 정의합니다. 이 클래스의 목적은 Django REST 프레임워크를 " +"통해 공급업체 관련 리소스에 대한 간소화된 액세스를 제공하는 것입니다." #: engine/core/viewsets.py:625 msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" -"피드백 개체를 처리하는 뷰 집합의 표현입니다. 이 클래스는 세부 정보 나열, 필터" -"링 및 검색을 포함하여 피드백 개체에 관련된 작업을 관리합니다. 이 뷰 세트의 목" -"적은 다양한 작업에 대해 서로 다른 직렬화기를 제공하고 접근 가능한 피드백 객체" -"에 대한 권한 기반 처리를 구현하는 것입니다. 이 클래스는 기본 `EvibesViewSet`" -"을 확장하고 데이터 쿼리를 위해 Django의 필터링 시스템을 사용합니다." +"피드백 개체를 처리하는 뷰 집합의 표현입니다. 이 클래스는 세부 정보 나열, 필터링 및 검색을 포함하여 피드백 개체에 관련된 작업을 " +"관리합니다. 이 뷰 세트의 목적은 다양한 작업에 대해 서로 다른 직렬화기를 제공하고 접근 가능한 피드백 객체에 대한 권한 기반 처리를 " +"구현하는 것입니다. 이 클래스는 기본 `EvibesViewSet`을 확장하고 데이터 쿼리를 위해 Django의 필터링 시스템을 " +"사용합니다." #: engine/core/viewsets.py:652 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"주문 및 관련 작업을 관리하기 위한 뷰셋입니다. 이 클래스는 주문 객체를 검색, " -"수정, 관리하는 기능을 제공합니다. 여기에는 제품 추가 또는 제거, 등록 및 미등" -"록 사용자에 대한 구매 수행, 현재 인증된 사용자의 보류 중인 주문 검색 등 주문 " -"작업을 처리하기 위한 다양한 엔드포인트가 포함되어 있습니다. 뷰셋은 수행되는 " -"특정 작업에 따라 여러 직렬화기를 사용하며 주문 데이터와 상호 작용하는 동안 그" -"에 따라 권한을 적용합니다." +"주문 및 관련 작업을 관리하기 위한 뷰셋입니다. 이 클래스는 주문 객체를 검색, 수정, 관리하는 기능을 제공합니다. 여기에는 제품 추가 " +"또는 제거, 등록 및 미등록 사용자에 대한 구매 수행, 현재 인증된 사용자의 보류 중인 주문 검색 등 주문 작업을 처리하기 위한 다양한 " +"엔드포인트가 포함되어 있습니다. 뷰셋은 수행되는 특정 작업에 따라 여러 직렬화기를 사용하며 주문 데이터와 상호 작용하는 동안 그에 따라 " +"권한을 적용합니다." #: engine/core/viewsets.py:914 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" -"주문 제품 엔티티를 관리하기 위한 뷰셋을 제공합니다. 이 뷰셋을 사용하면 주문 " -"제품 모델에 특정한 CRUD 작업 및 사용자 지정 작업을 수행할 수 있습니다. 여기에" -"는 요청된 작업을 기반으로 필터링, 권한 확인 및 직렬화기 전환이 포함됩니다. 또" -"한 주문 제품 인스턴스에 대한 피드백 처리를 위한 세부 작업도 제공합니다." +"주문 제품 엔티티를 관리하기 위한 뷰셋을 제공합니다. 이 뷰셋을 사용하면 주문 제품 모델에 특정한 CRUD 작업 및 사용자 지정 작업을 " +"수행할 수 있습니다. 여기에는 요청된 작업을 기반으로 필터링, 권한 확인 및 직렬화기 전환이 포함됩니다. 또한 주문 제품 인스턴스에 대한" +" 피드백 처리를 위한 세부 작업도 제공합니다." #: engine/core/viewsets.py:974 msgid "Manages operations related to Product images in the application. " @@ -3316,8 +3220,7 @@ msgstr "애플리케이션에서 제품 이미지와 관련된 작업을 관리 msgid "" "Manages the retrieval and handling of PromoCode instances through various " "API actions." -msgstr "" -"다양한 API 작업을 통해 프로모션 코드 인스턴스의 검색 및 처리를 관리합니다." +msgstr "다양한 API 작업을 통해 프로모션 코드 인스턴스의 검색 및 처리를 관리합니다." #: engine/core/viewsets.py:1019 msgid "Represents a view set for managing promotions. " @@ -3331,18 +3234,15 @@ msgstr "시스템에서 주식 데이터와 관련된 작업을 처리합니다. msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" -"위시리스트 작업을 관리하기 위한 뷰셋입니다. 위시리스트뷰셋은 사용자의 위시리" -"스트와 상호 작용할 수 있는 엔드포인트를 제공하여 위시리스트 내의 제품을 검" -"색, 수정 및 사용자 지정할 수 있도록 합니다. 이 뷰셋은 위시리스트 제품에 대한 " -"추가, 제거 및 대량 작업과 같은 기능을 용이하게 합니다. 명시적인 권한이 부여되" -"지 않는 한 사용자가 자신의 위시리스트만 관리할 수 있도록 권한 검사가 통합되" -"어 있습니다." +"위시리스트 작업을 관리하기 위한 뷰셋입니다. 위시리스트뷰셋은 사용자의 위시리스트와 상호 작용할 수 있는 엔드포인트를 제공하여 위시리스트 " +"내의 제품을 검색, 수정 및 사용자 지정할 수 있도록 합니다. 이 뷰셋은 위시리스트 제품에 대한 추가, 제거 및 대량 작업과 같은 기능을" +" 용이하게 합니다. 명시적인 권한이 부여되지 않는 한 사용자가 자신의 위시리스트만 관리할 수 있도록 권한 검사가 통합되어 있습니다." #: engine/core/viewsets.py:1183 msgid "" @@ -3352,10 +3252,9 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"이 클래스는 `주소` 객체를 관리하기 위한 뷰셋 기능을 제공합니다. 주소 뷰셋 클" -"래스는 주소 엔티티와 관련된 CRUD 작업, 필터링 및 사용자 정의 작업을 가능하게 " -"합니다. 여기에는 다양한 HTTP 메서드, 직렬화기 재정의, 요청 컨텍스트에 따른 권" -"한 처리를 위한 특수 동작이 포함되어 있습니다." +"이 클래스는 `주소` 객체를 관리하기 위한 뷰셋 기능을 제공합니다. 주소 뷰셋 클래스는 주소 엔티티와 관련된 CRUD 작업, 필터링 및 " +"사용자 정의 작업을 가능하게 합니다. 여기에는 다양한 HTTP 메서드, 직렬화기 재정의, 요청 컨텍스트에 따른 권한 처리를 위한 특수 " +"동작이 포함되어 있습니다." #: engine/core/viewsets.py:1254 #, python-brace-format @@ -3370,7 +3269,6 @@ msgid "" "using the specified filter backend and dynamically uses different " "serializers based on the action being performed." msgstr "" -"애플리케이션 내에서 제품 태그와 관련된 작업을 처리합니다. 이 클래스는 제품 태" -"그 객체를 검색, 필터링 및 직렬화하기 위한 기능을 제공합니다. 지정된 필터 백엔" -"드를 사용하여 특정 속성에 대한 유연한 필터링을 지원하며 수행 중인 작업에 따" -"라 다양한 직렬화기를 동적으로 사용합니다." +"애플리케이션 내에서 제품 태그와 관련된 작업을 처리합니다. 이 클래스는 제품 태그 객체를 검색, 필터링 및 직렬화하기 위한 기능을 " +"제공합니다. 지정된 필터 백엔드를 사용하여 특정 속성에 대한 유연한 필터링을 지원하며 수행 중인 작업에 따라 다양한 직렬화기를 동적으로 " +"사용합니다." diff --git a/engine/core/locale/nl_NL/LC_MESSAGES/django.mo b/engine/core/locale/nl_NL/LC_MESSAGES/django.mo index f28a25f3711bf8376bd41771cd08f8794b481717..6ed602093d21eb2c8dbc67d690f5ff7a55861acc 100644 GIT binary patch delta 14875 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 e-%i_B&fnSeyHjhpY(s(fn!qu diff --git a/engine/core/locale/nl_NL/LC_MESSAGES/django.po b/engine/core/locale/nl_NL/LC_MESSAGES/django.po index 8fb9327c..0f0b7496 100644 --- a/engine/core/locale/nl_NL/LC_MESSAGES/django.po +++ b/engine/core/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "Is actief" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Als false is ingesteld, kan dit object niet worden gezien door gebruikers " "zonder de benodigde toestemming" @@ -72,65 +73,65 @@ msgstr "Metagegevens" msgid "timestamps" msgstr "Tijdstempels" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activeer geselecteerde %(verbose_name_plural)s" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Geselecteerde items zijn geactiveerd!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactiveer geselecteerd %(verbose_name_plural)s" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Geselecteerde items zijn gedeactiveerd!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Attribuut Waarde" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Attribuutwaarden" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Afbeelding" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Afbeeldingen" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Voorraad" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Aandelen" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Product bestellen" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Producten bestellen" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Kinderen" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Config" @@ -154,7 +155,8 @@ msgstr "Geleverd" msgid "canceled" msgstr "Geannuleerd" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Mislukt" @@ -196,49 +198,48 @@ msgstr "" "inhoudsonderhandeling. Taal kan worden geselecteerd met zowel Accept-" "Language als query parameter." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Alleen een sleutel gebruiken om toegestane gegevens uit de cache te lezen.\n" -"Sleutel, gegevens en time-out met verificatie toepassen om gegevens naar de " -"cache te schrijven." +"Sleutel, gegevens en time-out met verificatie toepassen om gegevens naar de cache te schrijven." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Een lijst met ondersteunde talen opvragen" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Verkrijg de blootstelbare parameters van de applicatie" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Stuur een bericht naar het ondersteuningsteam" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Vraag een CORSed URL op. Alleen https toegestaan." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Zoeken tussen producten, categorieën en merken" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "" "Eindpunt voor globaal zoeken om in alle tabellen van het project te zoeken" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Een bestelling kopen als bedrijf" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -246,7 +247,7 @@ msgstr "" "Koop een bestelling in als een bedrijf, met behulp van de meegeleverde " "`producten` met `product_uuid` en `attributen`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "een digitaal goed downloaden van een gekochte digitale bestelling" @@ -273,7 +274,8 @@ msgstr "" "opslaan" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Enkele velden van een bestaande attribuutgroep herschrijven door niet-" "wijzigbare velden op te slaan" @@ -328,7 +330,8 @@ msgstr "" "attributen worden opgeslagen" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande attribuutwaarde door niet-" "wijzigbare velden op te slaan" @@ -365,16 +368,17 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO Meta momentopname" #: engine/core/docs/drf/viewsets.py:281 msgid "returns a snapshot of the category's SEO meta data" msgstr "" -"Geeft als resultaat een momentopname van de SEO-metagegevens van de categorie" +"Geeft als resultaat een momentopname van de SEO-metagegevens van de " +"categorie" #: engine/core/docs/drf/viewsets.py:302 msgid "list all orders (simple view)" @@ -383,15 +387,16 @@ msgstr "Alle categorieën weergeven (eenvoudige weergave)" #: engine/core/docs/drf/viewsets.py:303 msgid "for non-staff users, only their own orders are returned." msgstr "" -"Voor niet-personeelsleden worden alleen hun eigen bestellingen geretourneerd." +"Voor niet-personeelsleden worden alleen hun eigen bestellingen " +"geretourneerd." #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Hoofdlettergevoelig substring zoeken in human_readable_id, order_products." -"product.name en order_products.product.partnumber" +"Hoofdlettergevoelig substring zoeken in human_readable_id, " +"order_products.product.name en order_products.product.partnumber" #: engine/core/docs/drf/viewsets.py:316 msgid "Filter orders with buy_time >= this ISO 8601 datetime" @@ -424,13 +429,13 @@ msgstr "Filter op bestelstatus (hoofdlettergevoelige substringmatch)" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Sorteer op een van: uuid, human_readable_id, user_email, gebruiker, status, " -"gemaakt, gewijzigd, buy_time, willekeurig. Voorvoegsel met '-' voor aflopend " -"(bijv. '-buy_time')." +"gemaakt, gewijzigd, buy_time, willekeurig. Voorvoegsel met '-' voor aflopend" +" (bijv. '-buy_time')." #: engine/core/docs/drf/viewsets.py:366 msgid "retrieve a single order (detailed view)" @@ -484,14 +489,15 @@ msgstr "huidige lopende order van een gebruiker ophalen" msgid "retrieves a current pending order of an authenticated user" msgstr "haalt een huidige lopende order op van een geverifieerde gebruiker" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "een bestelling kopen zonder een account aan te maken" #: engine/core/docs/drf/viewsets.py:439 msgid "finalizes the order purchase for a non-registered user." msgstr "" -"Rondt de aankoop van de bestelling af voor een niet-geregistreerde gebruiker." +"Rondt de aankoop van de bestelling af voor een niet-geregistreerde " +"gebruiker." #: engine/core/docs/drf/viewsets.py:450 msgid "add product to order" @@ -635,28 +641,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filter op een of meer attribuutnaam-/waardeparen. \n" "- **Syntaxis**: `attr_name=methode-waarde[;attr2=methode2-waarde2]...`\n" -"- **Methodes** (standaard op `icontains` indien weggelaten): `iexact`, " -"`exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, " -"`endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- Waarde typen**: JSON wordt eerst geprobeerd (zodat je lijsten/dicten kunt " -"doorgeven), `true`/`false` voor booleans, integers, floats; anders behandeld " -"als string. \n" -"- **Base64**: prefix met `b64-` om URL-veilige base64-encodering van de ruwe " -"waarde. \n" +"- **Methodes** (standaard op `icontains` indien weggelaten): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- Waarde typen**: JSON wordt eerst geprobeerd (zodat je lijsten/dicten kunt doorgeven), `true`/`false` voor booleans, integers, floats; anders behandeld als string. \n" +"- **Base64**: prefix met `b64-` om URL-veilige base64-encodering van de ruwe waarde. \n" "Voorbeelden: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." @@ -671,14 +667,11 @@ msgstr "(exacte) UUID van product" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Door komma's gescheiden lijst van velden om op te sorteren. Voorvoegsel met " -"`-` voor aflopend. \n" -"**Toegestaan:** uuid, beoordeling, naam, slug, gemaakt, gewijzigd, prijs, " -"willekeurig" +"Door komma's gescheiden lijst van velden om op te sorteren. Voorvoegsel met `-` voor aflopend. \n" +"**Toegestaan:** uuid, beoordeling, naam, slug, gemaakt, gewijzigd, prijs, willekeurig" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "retrieve a single product (detailed view)" @@ -691,9 +684,6 @@ msgid "Product UUID or slug" msgstr "Product UUID of Slug" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Een product maken" @@ -794,7 +784,8 @@ msgstr "alle order-productrelaties weergeven (eenvoudige weergave)" #: engine/core/docs/drf/viewsets.py:929 msgid "retrieve a single order–product relation (detailed view)" -msgstr "een enkele bestelling-productrelatie ophalen (gedetailleerde weergave)" +msgstr "" +"een enkele bestelling-productrelatie ophalen (gedetailleerde weergave)" #: engine/core/docs/drf/viewsets.py:939 msgid "create a new order–product relation" @@ -1009,8 +1000,8 @@ msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Geen zoekterm opgegeven." @@ -1019,8 +1010,8 @@ msgstr "Geen zoekterm opgegeven." msgid "Search" msgstr "Zoek op" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1066,8 +1057,8 @@ msgid "Quantity" msgstr "Hoeveelheid" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Slak" @@ -1083,7 +1074,7 @@ msgstr "Subcategorieën opnemen" msgid "Include personal ordered" msgstr "Inclusief persoonlijk bestelde producten" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1105,12 +1096,12 @@ msgid "Bought before (inclusive)" msgstr "Eerder gekocht (inclusief)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "E-mail gebruiker" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "Gebruiker UUID" @@ -1134,253 +1125,254 @@ msgstr "Hele categorie (heeft minstens 1 product of niet)" msgid "Level" msgstr "Niveau" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "Product UUID" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Sleutel om te zoeken of te plaatsen in de cache" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Gegevens om op te slaan in de cache" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Time-out in seconden om de gegevens in de cache te plaatsen" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Gecachte gegevens" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-gegevens van de opgevraagde URL" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Alleen URL's die beginnen met http(s):// zijn toegestaan" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Een product aan de bestelling toevoegen" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Bestelling {order_uuid} niet gevonden!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Een product uit de bestelling verwijderen" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Alle producten uit de bestelling verwijderen" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Een bestelling kopen" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Geef order_uuid of order_hr_id - wederzijds exclusief!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Verkeerd type kwam uit order.buy() methode: {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Een actie uitvoeren op een lijst met producten in de bestelling" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Verwijderen/toevoegen" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "De actie moet \"toevoegen\" of \"verwijderen\" zijn!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Een actie uitvoeren op een lijst met producten in het verlanglijstje" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Geef de waarde `wishlist_uuid` op." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "wens {wishlist_uuid} niet gevonden!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Een product aan de bestelling toevoegen" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Een product uit de bestelling verwijderen" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Een product uit de bestelling verwijderen" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Een product uit de bestelling verwijderen" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Een bestelling kopen" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Stuur de attributen als de string opgemaakt als attr1=waarde1,attr2=waarde2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Feedback toevoegen of verwijderen voor het orderproduct" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "De actie moet `toevoegen` of `verwijderen` zijn!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Orderproduct {order_product_uuid} niet gevonden!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Originele adresstring geleverd door de gebruiker" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} bestaat niet: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Limiet moet tussen 1 en 10 liggen" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - werkt als een charme" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Attributen" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Gegroepeerde kenmerken" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Groepen van kenmerken" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Categorieën" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Merken" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Categorieën" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Opwaarderingspercentage" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" "Welke attributen en waarden kunnen worden gebruikt om deze categorie te " "filteren." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimale en maximale prijzen voor producten in deze categorie, indien " "beschikbaar." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Tags voor deze categorie" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Producten in deze categorie" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Verkopers" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Breedtegraad (Y-coördinaat)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Lengtegraad (X-coördinaat)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Hoe" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Waarderingswaarde van 1 tot en met 10, of 0 indien niet ingesteld." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Vertegenwoordigt feedback van een gebruiker." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Meldingen" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Download url voor dit bestelproduct indien van toepassing" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Feedback" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "Een lijst met bestelde producten in deze bestelling" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Factuuradres" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1388,53 +1380,53 @@ msgstr "" "Verzendadres voor deze bestelling, leeg laten als dit hetzelfde is als het " "factuuradres of als dit niet van toepassing is" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Totale prijs van deze bestelling" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Totale hoeveelheid producten in bestelling" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Zijn alle producten in de bestelling digitaal" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transacties voor deze bestelling" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Bestellingen" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "Afbeelding URL" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Afbeeldingen van het product" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Categorie" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Reacties" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Merk" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Attribuutgroepen" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1442,7 +1434,7 @@ msgstr "Attribuutgroepen" msgid "price" msgstr "Prijs" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1450,39 +1442,39 @@ msgstr "Prijs" msgid "quantity" msgstr "Hoeveelheid" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Aantal terugkoppelingen" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Producten alleen beschikbaar voor persoonlijke bestellingen" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Korting" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Producten" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Promocodes" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Producten te koop" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Promoties" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Verkoper" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1490,100 +1482,100 @@ msgstr "Verkoper" msgid "product" msgstr "Product" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Gewenste producten" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Verlanglijst" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Getagde producten" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Product tags" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Getagde categorieën" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Categorieën' tags" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Naam project" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Bedrijfsnaam" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Adres" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Telefoonnummer bedrijf" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "e-mail van', soms moet deze worden gebruikt in plaats van de " "hostgebruikerswaarde" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "Gebruiker e-mail hosten" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Maximumbedrag voor betaling" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Minimumbedrag voor betaling" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Analytics-gegevens" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Advertentiegegevens" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Configuratie" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Taalcode" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Naam van de taal" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Taalvlag, indien aanwezig :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Een lijst met ondersteunde talen opvragen" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Producten zoekresultaten" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Zoekresultaten" @@ -1597,26 +1589,26 @@ msgstr "" "Vertegenwoordigt een groep attributen, die hiërarchisch kan zijn. Deze " "klasse wordt gebruikt om groepen van attributen te beheren en te " "organiseren. Een attribuutgroep kan een bovenliggende groep hebben, die een " -"hiërarchische structuur vormt. Dit kan nuttig zijn voor het categoriseren en " -"effectiever beheren van attributen in een complex systeem." +"hiërarchische structuur vormt. Dit kan nuttig zijn voor het categoriseren en" +" effectiever beheren van attributen in een complex systeem." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Ouder van deze groep" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Ouderattribuutgroep" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Naam attribuutgroep" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Attribuutgroep" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1626,8 +1618,8 @@ msgid "" "also maintains additional metadata and constraints, making it suitable for " "use in systems that interact with third-party vendors." msgstr "" -"Vertegenwoordigt een verkopersentiteit die informatie over externe verkopers " -"en hun interactievereisten kan opslaan. De klasse Vendor wordt gebruikt om " +"Vertegenwoordigt een verkopersentiteit die informatie over externe verkopers" +" en hun interactievereisten kan opslaan. De klasse Vendor wordt gebruikt om " "informatie over een externe verkoper te definiëren en te beheren. Het slaat " "de naam van de verkoper op, authenticatiegegevens die nodig zijn voor " "communicatie en het opmaakpercentage dat wordt toegepast op producten die " @@ -1635,50 +1627,50 @@ msgstr "" "metadata en beperkingen, waardoor het geschikt is voor gebruik in systemen " "die communiceren met externe verkopers." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Slaat referenties en eindpunten op die vereist zijn voor API-communicatie " "van de verkoper" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Authenticatie-info" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definieer de opmaak voor producten die zijn opgehaald bij deze leverancier" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Verkoper winstpercentage" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Naam van deze verkoper" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Naam verkoper" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "responsbestand" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "laatste verwerkingsreactie van verkoper" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Pad integratiebestand verkoper" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Integratie pad" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1688,32 +1680,32 @@ msgid "" msgstr "" "Vertegenwoordigt een producttag die wordt gebruikt om producten te " "classificeren of te identificeren. De klasse ProductTag is ontworpen om " -"producten uniek te identificeren en te classificeren door een combinatie van " -"een interne tagidentifier en een gebruiksvriendelijke weergavenaam. Het " +"producten uniek te identificeren en te classificeren door een combinatie van" +" een interne tagidentifier en een gebruiksvriendelijke weergavenaam. Het " "ondersteunt bewerkingen die geëxporteerd worden door mixins en biedt " "aanpassing van metadata voor administratieve doeleinden." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Interne tagidentifier voor de producttag" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Tag naam" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Gebruiksvriendelijke naam voor de producttag" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Tag weergavenaam" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Productlabel" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1724,15 +1716,15 @@ msgstr "" "associëren en te classificeren. Ze bevat attributen voor een interne " "tagidentifier en een gebruiksvriendelijke weergavenaam." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "categorie tag" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "categorie tags" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1747,64 +1739,65 @@ msgstr "" "Vertegenwoordigt een categorie-entiteit voor het organiseren en groeperen " "van gerelateerde items in een hiërarchische structuur. Categorieën kunnen " "hiërarchische relaties hebben met andere categorieën, waarbij ouder-kind " -"relaties worden ondersteund. De klasse bevat velden voor metadata en visuele " -"weergave, die dienen als basis voor categorie-gerelateerde functies. Deze " -"klasse wordt meestal gebruikt om productcategorieën of andere gelijksoortige " -"groeperingen binnen een applicatie te definiëren en te beheren, waarbij " -"gebruikers of beheerders de naam, beschrijving en hiërarchie van categorieën " -"kunnen specificeren en attributen zoals afbeeldingen, tags of prioriteit " +"relaties worden ondersteund. De klasse bevat velden voor metadata en visuele" +" weergave, die dienen als basis voor categorie-gerelateerde functies. Deze " +"klasse wordt meestal gebruikt om productcategorieën of andere gelijksoortige" +" groeperingen binnen een applicatie te definiëren en te beheren, waarbij " +"gebruikers of beheerders de naam, beschrijving en hiërarchie van categorieën" +" kunnen specificeren en attributen zoals afbeeldingen, tags of prioriteit " "kunnen toekennen." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Upload een afbeelding die deze categorie vertegenwoordigt" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Categorie afbeelding" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Definieer een toeslagpercentage voor producten in deze categorie" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Ouder van deze categorie om een hiërarchische structuur te vormen" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Oudercategorie" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Naam categorie" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Geef deze categorie een naam" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Voeg een gedetailleerde beschrijving toe voor deze categorie" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Categorie beschrijving" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "tags die deze categorie helpen beschrijven of groeperen" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Prioriteit" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Vertegenwoordigt een merkobject in het systeem. Deze klasse behandelt " "informatie en attributen met betrekking tot een merk, inclusief de naam, " @@ -1812,50 +1805,50 @@ msgstr "" "prioriteitsvolgorde. Hiermee kunnen merkgerelateerde gegevens worden " "georganiseerd en weergegeven in de applicatie." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Naam van dit merk" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Merknaam" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Upload een logo dat dit merk vertegenwoordigt" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Klein merkimago" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Upload een groot logo dat dit merk vertegenwoordigt" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Groot merkimago" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Een gedetailleerde beschrijving van het merk toevoegen" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Merknaam" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Optionele categorieën waarmee dit merk wordt geassocieerd" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Categorieën" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1869,72 +1862,72 @@ msgstr "" "evalueren van beschikbare producten van verschillende leveranciers mogelijk " "te maken." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "De verkoper die dit product levert" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Geassocieerde verkoper" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Eindprijs voor de klant na winstmarges" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Verkoopprijs" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Het product dat bij deze voorraadvermelding hoort" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Bijbehorend product" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "De prijs die voor dit product aan de verkoper is betaald" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Aankoopprijs verkoper" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Beschikbare hoeveelheid van het product in voorraad" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Hoeveelheid op voorraad" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "Door de verkoper toegewezen SKU om het product te identificeren" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "Verkoper SKU" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Digitaal bestand gekoppeld aan deze voorraad indien van toepassing" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Digitaal bestand" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Systeemeigenschappen" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Voorraadboekingen" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1955,158 +1948,166 @@ msgstr "" "verbeteren. Het wordt gebruikt om productgegevens en de bijbehorende " "informatie te definiëren en te manipuleren binnen een applicatie." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Categorie waartoe dit product behoort" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Dit product optioneel koppelen aan een merk" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Tags die dit product helpen beschrijven of groeperen" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Geeft aan of dit product digitaal wordt geleverd" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Is product digitaal" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "geeft aan of dit product moet worden bijgewerkt van periodieke taak" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "kan het product worden bijgewerkt" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Zorg voor een duidelijke identificerende naam voor het product" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Naam product" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Voeg een gedetailleerde beschrijving van het product toe" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Productbeschrijving" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Onderdeelnummer voor dit product" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Onderdeelnummer" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Voorraadhoudende eenheid voor dit product" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"Vertegenwoordigt een attribuut in het systeem. Deze klasse wordt gebruikt om " -"attributen te definiëren en te beheren. Dit zijn aanpasbare stukjes data die " -"kunnen worden geassocieerd met andere entiteiten. Attributen hebben " +"Vertegenwoordigt een attribuut in het systeem. Deze klasse wordt gebruikt om" +" attributen te definiëren en te beheren. Dit zijn aanpasbare stukjes data " +"die kunnen worden geassocieerd met andere entiteiten. Attributen hebben " "geassocieerde categorieën, groepen, waardetypes en namen. Het model " "ondersteunt meerdere typen waarden, waaronder string, integer, float, " "boolean, array en object. Dit maakt dynamische en flexibele " "gegevensstructurering mogelijk." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Groep van dit kenmerk" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "String" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Integer" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Vlotter" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Booleaans" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Array" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Object" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Type waarde van het kenmerk" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Waardetype" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Naam van dit kenmerk" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Naam attribuut" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "kan worden gefilterd" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" "Welke attributen en waarden kunnen worden gebruikt om deze categorie te " "filteren." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribuut" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Vertegenwoordigt een specifieke waarde voor een kenmerk dat is gekoppeld aan " -"een product. Het koppelt het 'kenmerk' aan een unieke 'waarde', wat een " +"Vertegenwoordigt een specifieke waarde voor een kenmerk dat is gekoppeld aan" +" een product. Het koppelt het 'kenmerk' aan een unieke 'waarde', wat een " "betere organisatie en dynamische weergave van productkenmerken mogelijk " "maakt." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Attribuut van deze waarde" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Het specifieke product geassocieerd met de waarde van dit kenmerk" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "De specifieke waarde voor dit kenmerk" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2117,46 +2118,46 @@ msgstr "" "weergavevolgorde te bepalen. Het bevat ook een toegankelijkheidsfunctie met " "alternatieve tekst voor de afbeeldingen." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Geef alternatieve tekst voor de afbeelding voor toegankelijkheid" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Alt-tekst afbeelding" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Upload het afbeeldingsbestand voor dit product" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Product afbeelding" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Bepaalt de volgorde waarin afbeeldingen worden weergegeven" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Prioriteit weergeven" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Het product dat deze afbeelding vertegenwoordigt" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Product afbeeldingen" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Vertegenwoordigt een promotiecampagne voor producten met een korting. Deze " "klasse wordt gebruikt om promotiecampagnes te definiëren en beheren die een " @@ -2166,39 +2167,39 @@ msgstr "" "integreert met de productcatalogus om de betreffende artikelen in de " "campagne te bepalen." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Kortingspercentage voor de geselecteerde producten" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Kortingspercentage" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Geef deze promotie een unieke naam" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Naam promotie" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Promotie beschrijving" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Selecteer welke producten onder deze promotie vallen" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Meegeleverde producten" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Promotie" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " @@ -2211,30 +2212,30 @@ msgstr "" "toevoegen en verwijderen van producten, maar ook bewerkingen voor het " "toevoegen en verwijderen van meerdere producten tegelijk." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Producten die de gebruiker als gewenst heeft gemarkeerd" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Gebruiker die eigenaar is van deze verlanglijst" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Eigenaar verlanglijstje" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Verlanglijst" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Vertegenwoordigt een documentair record gekoppeld aan een product. Deze " "klasse wordt gebruikt om informatie op te slaan over documentaires met " @@ -2244,92 +2245,92 @@ msgstr "" "Het breidt functionaliteit uit van specifieke mixins en biedt extra " "aangepaste functies." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Documentaire" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Documentaires" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Onopgelost" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Vertegenwoordigt een adresentiteit met locatiegegevens en associaties met " "een gebruiker. Biedt functionaliteit voor het opslaan van geografische en " "adresgegevens, evenals integratie met geocoderingsservices. Deze klasse is " -"ontworpen om gedetailleerde adresgegevens op te slaan, inclusief componenten " -"als straat, stad, regio, land en geolocatie (lengtegraad en breedtegraad). " +"ontworpen om gedetailleerde adresgegevens op te slaan, inclusief componenten" +" als straat, stad, regio, land en geolocatie (lengtegraad en breedtegraad). " "Het ondersteunt integratie met geocodering API's, waardoor de opslag van " "ruwe API antwoorden voor verdere verwerking of inspectie mogelijk wordt. De " "klasse maakt het ook mogelijk om een adres met een gebruiker te associëren, " "wat het verwerken van gepersonaliseerde gegevens vergemakkelijkt." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Adresregel voor de klant" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Adresregel" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Straat" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "District" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "Stad" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Regio" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Postcode" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Land" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocatie Punt (lengtegraad, breedtegraad)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Volledig JSON-antwoord van geocoder voor dit adres" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Opgeslagen JSON-antwoord van de geocoderingsservice" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Adres" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adressen" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2347,97 +2348,98 @@ msgstr "" "te valideren en toe te passen op een bestelling, waarbij ervoor wordt " "gezorgd dat aan de beperkingen wordt voldaan." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Unieke code die een gebruiker gebruikt om een korting te verzilveren" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Promo code identificatie" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "" "Vast kortingsbedrag dat wordt toegepast als percentage niet wordt gebruikt" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Vast kortingsbedrag" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Kortingspercentage dat wordt toegepast als het vaste bedrag niet wordt " "gebruikt" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Kortingspercentage" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Tijdstempel wanneer de promocode verloopt" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Geldigheidsduur einde" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Tijdstempel vanaf wanneer deze promocode geldig is" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Begin geldigheidsduur" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -"Tijdstempel wanneer de promocode werd gebruikt, leeg indien nog niet gebruikt" +"Tijdstempel wanneer de promocode werd gebruikt, leeg indien nog niet " +"gebruikt" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Gebruik tijdstempel" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Gebruiker toegewezen aan deze promocode indien van toepassing" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Toegewezen gebruiker" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Kortingscode" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Actiecodes" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Er moet slechts één type korting worden gedefinieerd (bedrag of percentage), " -"maar niet beide of geen van beide." +"Er moet slechts één type korting worden gedefinieerd (bedrag of percentage)," +" maar niet beide of geen van beide." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Promocode is al gebruikt" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ongeldig kortingstype voor promocode {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2450,142 +2452,142 @@ msgstr "" "bijgewerkt. De functionaliteit ondersteunt ook het beheer van de producten " "in de levenscyclus van de bestelling." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Het factuuradres dat voor deze bestelling is gebruikt" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Optionele promotiecode toegepast op deze bestelling" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Kortingscode toegepast" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Het verzendadres dat voor deze bestelling is gebruikt" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Verzendadres" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Huidige status van de order in zijn levenscyclus" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Bestelstatus" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "JSON-structuur van meldingen om weer te geven aan gebruikers, in admin UI " "wordt de tabelweergave gebruikt" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "JSON-weergave van bestelattributen voor deze bestelling" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "De gebruiker die de bestelling heeft geplaatst" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Gebruiker" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "De tijdstempel waarop de bestelling is afgerond" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Tijd kopen" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "Een menselijk leesbare identificatiecode voor de bestelling" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "menselijk leesbare ID" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Bestel" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "Een gebruiker mag maar één lopende order tegelijk hebben!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" "U kunt geen producten toevoegen aan een bestelling die niet in behandeling " "is." -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "U kunt geen inactieve producten toevoegen aan uw bestelling" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "Je kunt niet meer producten toevoegen dan er op voorraad zijn" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -"U kunt geen producten verwijderen uit een bestelling die niet in behandeling " -"is." +"U kunt geen producten verwijderen uit een bestelling die niet in behandeling" +" is." -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} bestaat niet met query <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Promocode bestaat niet" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "Je kunt alleen fysieke producten kopen met opgegeven verzendadres!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Adres bestaat niet" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "U kunt op dit moment niet kopen. Probeer het over een paar minuten nog eens." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Ongeldige krachtwaarde" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Je kunt geen lege bestelling kopen!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "" -"U kunt geen producten verwijderen uit een bestelling die niet in behandeling " -"is." +"U kunt geen producten verwijderen uit een bestelling die niet in behandeling" +" is." -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "Een gebruiker zonder saldo kan niet kopen met saldo!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Onvoldoende fondsen om de bestelling te voltooien" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2593,14 +2595,15 @@ msgstr "" "u niet kunt kopen zonder registratie, geef dan de volgende informatie: " "klantnaam, e-mail klant, telefoonnummer klant" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -"Ongeldige betalingsmethode: {payment_method} van {available_payment_methods}!" +"Ongeldige betalingsmethode: {payment_method} van " +"{available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2609,40 +2612,41 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "Beheert gebruikersfeedback voor producten. Deze klasse is ontworpen om " -"feedback van gebruikers over specifieke producten die ze hebben gekocht vast " -"te leggen en op te slaan. De klasse bevat attributen voor het opslaan van " +"feedback van gebruikers over specifieke producten die ze hebben gekocht vast" +" te leggen en op te slaan. De klasse bevat attributen voor het opslaan van " "opmerkingen van gebruikers, een verwijzing naar het betreffende product in " "de bestelling en een door de gebruiker toegekende beoordeling. De klasse " "gebruikt databasevelden om feedbackgegevens effectief te modelleren en te " "beheren." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "Opmerkingen van gebruikers over hun ervaring met het product" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Reacties" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "Verwijst naar het specifieke product in een bestelling waar deze feedback " "over gaat" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Gerelateerd product bestellen" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Door de gebruiker toegekende waardering voor het product" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Productbeoordeling" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2662,120 +2666,120 @@ msgstr "" "het producttegoed of het toevoegen van feedback. Dit model biedt ook " "methoden en eigenschappen die bedrijfslogica ondersteunen, zoals het " "berekenen van de totaalprijs of het genereren van een download-URL voor " -"digitale producten. Het model integreert met de modellen Order en Product en " -"slaat een verwijzing ernaar op." +"digitale producten. Het model integreert met de modellen Order en Product en" +" slaat een verwijzing ernaar op." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "De prijs die de klant bij aankoop voor dit product heeft betaald" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Aankoopprijs bij bestelling" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Interne opmerkingen voor beheerders over dit bestelde product" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Interne opmerkingen" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Meldingen van gebruikers" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "JSON weergave van de attributen van dit item" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Geordende producteigenschappen" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "Verwijzing naar de bovenliggende bestelling die dit product bevat" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Ouderlijk bevel" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Het specifieke product dat bij deze bestelregel hoort" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Hoeveelheid van dit specifieke product in de bestelling" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Hoeveelheid product" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Huidige status van dit product in de bestelling" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Status productlijn" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Orderproduct moet een bijbehorende order hebben!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Verkeerde actie opgegeven voor feedback: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "" -"U kunt geen producten verwijderen uit een bestelling die niet in behandeling " -"is." +"U kunt geen producten verwijderen uit een bestelling die niet in behandeling" +" is." -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Naam" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL van de integratie" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Authenticatiegegevens" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Je kunt maar één standaard CRM-provider hebben" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM's" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "CRM link van bestelling" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "CRM-koppelingen voor bestellingen" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Vertegenwoordigt de downloadfunctionaliteit voor digitale activa gekoppeld " "aan bestellingen. De DigitalAssetDownload klasse biedt de mogelijkheid om " @@ -2785,11 +2789,11 @@ msgstr "" "om een URL te genereren voor het downloaden van de activa wanneer de " "bijbehorende order een voltooide status heeft." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Downloaden" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Downloads" @@ -2990,8 +2994,7 @@ msgstr "Hallo %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Hartelijk dank voor uw bestelling #%(order.pk)s! We zijn blij om u te " @@ -3106,8 +3109,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Bedankt voor uw bestelling! We zijn blij om uw aankoop te bevestigen. " @@ -3138,13 +3140,14 @@ msgstr "" "alle rechten\n" " voorbehouden" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Zowel gegevens als time-out zijn vereist" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" -msgstr "Ongeldige time-outwaarde, deze moet tussen 0 en 216000 seconden liggen" +msgstr "" +"Ongeldige time-outwaarde, deze moet tussen 0 en 216000 seconden liggen" #: engine/core/utils/emailing.py:27 #, python-brace-format @@ -3174,14 +3177,14 @@ msgstr "U hebt geen toestemming om deze actie uit te voeren." msgid "NOMINATIM_URL must be configured." msgstr "De parameter NOMINATIM_URL moet worden geconfigureerd!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Afbeeldingsafmetingen mogen niet groter zijn dan w{max_width} x " "h{max_height} pixels" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3190,7 +3193,7 @@ msgstr "" "terug. Het zorgt ervoor dat het antwoord de juiste inhoudstype header voor " "XML bevat." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3200,100 +3203,89 @@ msgstr "" "verwerkt het verzoek, haalt het juiste sitemap detail antwoord op en stelt " "de Content-Type header in voor XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Geeft een lijst met ondersteunde talen en de bijbehorende informatie." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Retourneert de parameters van de website als een JSON-object." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"Verwerkt cachebewerkingen zoals het lezen en instellen van cachegegevens met " -"een opgegeven sleutel en time-out." +"Verwerkt cachebewerkingen zoals het lezen en instellen van cachegegevens met" +" een opgegeven sleutel en time-out." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Handelt `contact met ons` formulier inzendingen af." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -"Handelt verzoeken af voor het verwerken en valideren van URL's van inkomende " -"POST-verzoeken." +"Handelt verzoeken af voor het verwerken en valideren van URL's van inkomende" +" POST-verzoeken." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Handelt globale zoekopdrachten af." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Behandelt de logica van kopen als bedrijf zonder registratie." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" -"Handelt het downloaden af van een digitaal actief dat is gekoppeld aan een " -"bestelling.\n" -"Deze functie probeert het digitale activabestand te serveren dat zich in de " -"opslagmap van het project bevindt. Als het bestand niet wordt gevonden, " -"wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron niet " -"beschikbaar is." +"Handelt het downloaden af van een digitaal actief dat is gekoppeld aan een bestelling.\n" +"Deze functie probeert het digitale activabestand te serveren dat zich in de opslagmap van het project bevindt. Als het bestand niet wordt gevonden, wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron niet beschikbaar is." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid is vereist" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "bestelproduct bestaat niet" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "U kunt het digitale goed maar één keer downloaden" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "" "de bestelling moet worden betaald voordat het digitale actief kan worden " "gedownload" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Het bestelde product heeft geen product" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon niet gevonden" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Handelt verzoeken af voor de favicon van een website.\n" -"Deze functie probeert het favicon-bestand te serveren dat zich in de " -"statische map van het project bevindt. Als het favicon-bestand niet wordt " -"gevonden, wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron " -"niet beschikbaar is." +"Deze functie probeert het favicon-bestand te serveren dat zich in de statische map van het project bevindt. Als het favicon-bestand niet wordt gevonden, wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron niet beschikbaar is." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Stuurt het verzoek door naar de admin-indexpagina. De functie handelt " @@ -3301,16 +3293,16 @@ msgstr "" "Django admin-interface. Het gebruikt Django's `redirect` functie voor het " "afhandelen van de HTTP-omleiding." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Geeft als resultaat de huidige versie van eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Inkomsten en orders (laatste %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Geeft aangepaste variabelen voor Dashboard." @@ -3322,18 +3314,19 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"Definieert een viewset voor het beheren van Evibes-gerelateerde handelingen. " -"De klasse EvibesViewSet erft van ModelViewSet en biedt functionaliteit voor " -"het afhandelen van acties en bewerkingen op Evibes-entiteiten. Het omvat " +"Definieert een viewset voor het beheren van Evibes-gerelateerde handelingen." +" De klasse EvibesViewSet erft van ModelViewSet en biedt functionaliteit voor" +" het afhandelen van acties en bewerkingen op Evibes-entiteiten. Het omvat " "ondersteuning voor dynamische serializer klassen op basis van de huidige " "actie, aanpasbare machtigingen, en rendering formaten." #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Vertegenwoordigt een viewset voor het beheren van AttributeGroup objecten. " "Verwerkt bewerkingen met betrekking tot AttributeGroup, inclusief filteren, " @@ -3354,20 +3347,21 @@ msgstr "" "applicatie. Biedt een set API-eindpunten voor interactie met " "Attribuutgegevens. Deze klasse beheert het opvragen, filteren en seriëren " "van Attribuutobjecten, waardoor dynamische controle over de geretourneerde " -"gegevens mogelijk is, zoals filteren op specifieke velden of het ophalen van " -"gedetailleerde versus vereenvoudigde informatie afhankelijk van het verzoek." +"gegevens mogelijk is, zoals filteren op specifieke velden of het ophalen van" +" gedetailleerde versus vereenvoudigde informatie afhankelijk van het " +"verzoek." #: engine/core/viewsets.py:198 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"Een viewset voor het beheren van AttributeValue-objecten. Deze viewset biedt " -"functionaliteit voor het opsommen, ophalen, maken, bijwerken en verwijderen " -"van AttributeValue objecten. Het integreert met Django REST Framework's " +"Een viewset voor het beheren van AttributeValue-objecten. Deze viewset biedt" +" functionaliteit voor het opsommen, ophalen, maken, bijwerken en verwijderen" +" van AttributeValue objecten. Het integreert met Django REST Framework's " "viewset mechanismen en gebruikt passende serializers voor verschillende " "acties. Filtermogelijkheden worden geleverd door de DjangoFilterBackend." @@ -3383,8 +3377,8 @@ msgstr "" "CategoryViewSet is verantwoordelijk voor het afhandelen van bewerkingen met " "betrekking tot het categoriemodel in het systeem. Het ondersteunt het " "ophalen, filteren en seriëren van categoriegegevens. De viewset dwingt ook " -"rechten af om ervoor te zorgen dat alleen bevoegde gebruikers toegang hebben " -"tot specifieke gegevens." +"rechten af om ervoor te zorgen dat alleen bevoegde gebruikers toegang hebben" +" tot specifieke gegevens." #: engine/core/viewsets.py:346 msgid "" @@ -3428,8 +3422,8 @@ msgstr "" "Vertegenwoordigt een viewset voor het beheren van Vendor-objecten. Met deze " "viewset kunnen gegevens van een verkoper worden opgehaald, gefilterd en " "geserialiseerd. Het definieert de queryset, filter configuraties, en " -"serializer klassen gebruikt om verschillende acties af te handelen. Het doel " -"van deze klasse is om gestroomlijnde toegang te bieden tot Vendor-" +"serializer klassen gebruikt om verschillende acties af te handelen. Het doel" +" van deze klasse is om gestroomlijnde toegang te bieden tot Vendor-" "gerelateerde bronnen via het Django REST framework." #: engine/core/viewsets.py:625 @@ -3437,8 +3431,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Weergave van een weergaveset die Feedback-objecten afhandelt. Deze klasse " @@ -3454,9 +3448,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet voor het beheren van orders en gerelateerde operaties. Deze klasse " @@ -3473,15 +3467,15 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" -"Biedt een viewset voor het beheren van OrderProduct-entiteiten. Deze viewset " -"maakt CRUD-bewerkingen en aangepaste acties mogelijk die specifiek zijn voor " -"het OrderProduct-model. Het omvat filteren, toestemmingscontroles en " -"serializer-omschakeling op basis van de gevraagde actie. Bovendien biedt het " -"een gedetailleerde actie voor het afhandelen van feedback op OrderProduct " +"Biedt een viewset voor het beheren van OrderProduct-entiteiten. Deze viewset" +" maakt CRUD-bewerkingen en aangepaste acties mogelijk die specifiek zijn " +"voor het OrderProduct-model. Het omvat filteren, toestemmingscontroles en " +"serializer-omschakeling op basis van de gevraagde actie. Bovendien biedt het" +" een gedetailleerde actie voor het afhandelen van feedback op OrderProduct " "instanties" #: engine/core/viewsets.py:974 @@ -3494,8 +3488,8 @@ msgid "" "Manages the retrieval and handling of PromoCode instances through various " "API actions." msgstr "" -"Beheert het ophalen en afhandelen van PromoCode-instanties via verschillende " -"API-acties." +"Beheert het ophalen en afhandelen van PromoCode-instanties via verschillende" +" API-acties." #: engine/core/viewsets.py:1019 msgid "Represents a view set for managing promotions. " @@ -3510,8 +3504,8 @@ msgstr "" msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3533,9 +3527,9 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"Deze klasse biedt viewsetfunctionaliteit voor het beheren van `Adres`-" -"objecten. De klasse AddressViewSet maakt CRUD-bewerkingen, filteren en " -"aangepaste acties met betrekking tot adresentiteiten mogelijk. Het bevat " +"Deze klasse biedt viewsetfunctionaliteit voor het beheren van " +"`Adres`-objecten. De klasse AddressViewSet maakt CRUD-bewerkingen, filteren " +"en aangepaste acties met betrekking tot adresentiteiten mogelijk. Het bevat " "gespecialiseerde gedragingen voor verschillende HTTP methoden, serializer " "omzeilingen en toestemmingsafhandeling gebaseerd op de verzoekcontext." @@ -3553,8 +3547,8 @@ msgid "" "serializers based on the action being performed." msgstr "" "Behandelt bewerkingen met betrekking tot Product Tags binnen de applicatie. " -"Deze klasse biedt functionaliteit voor het ophalen, filteren en serialiseren " -"van Product Tag objecten. Het ondersteunt flexibel filteren op specifieke " +"Deze klasse biedt functionaliteit voor het ophalen, filteren en serialiseren" +" van Product Tag objecten. Het ondersteunt flexibel filteren op specifieke " "attributen met behulp van de gespecificeerde filter backend en gebruikt " "dynamisch verschillende serializers op basis van de actie die wordt " "uitgevoerd." diff --git a/engine/core/locale/no_NO/LC_MESSAGES/django.mo b/engine/core/locale/no_NO/LC_MESSAGES/django.mo index 9cd0daa4c4d5309d6f00f10a24c05b393d49c968..a3f0be19bd617f63512dc2714ed41d7a3aed2624 100644 GIT binary patch delta 14861 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 delta 14680 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 OzH`3av*LUy)&37kI8N;V diff --git a/engine/core/locale/no_NO/LC_MESSAGES/django.po b/engine/core/locale/no_NO/LC_MESSAGES/django.po index f387e682..1ebec673 100644 --- a/engine/core/locale/no_NO/LC_MESSAGES/django.po +++ b/engine/core/locale/no_NO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-18 19:09+0300\n" +"POT-Creation-Date: 2025-12-21 00:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -28,7 +28,8 @@ msgstr "Er aktiv" #: engine/core/abstract.py:22 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Hvis dette objektet er satt til false, kan det ikke ses av brukere uten " "nødvendig tillatelse" @@ -73,65 +74,65 @@ msgstr "Metadata" msgid "timestamps" msgstr "Tidsstempler" -#: engine/core/admin.py:157 +#: engine/core/admin.py:158 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktiver valgt %(verbose_name_plural)s" -#: engine/core/admin.py:165 +#: engine/core/admin.py:166 msgid "selected items have been activated." msgstr "Utvalgte elementer har blitt aktivert!" -#: engine/core/admin.py:173 +#: engine/core/admin.py:174 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deaktiver valgt %(verbose_name_plural)s" -#: engine/core/admin.py:183 +#: engine/core/admin.py:184 msgid "selected items have been deactivated." msgstr "Utvalgte elementer har blitt deaktivert!" -#: engine/core/admin.py:195 engine/core/graphene/object_types.py:650 -#: engine/core/graphene/object_types.py:657 engine/core/models.py:824 -#: engine/core/models.py:832 +#: engine/core/admin.py:196 engine/core/graphene/object_types.py:652 +#: engine/core/graphene/object_types.py:659 engine/core/models.py:825 +#: engine/core/models.py:833 msgid "attribute value" msgstr "Attributtverdi" -#: engine/core/admin.py:196 engine/core/graphene/object_types.py:75 -#: engine/core/models.py:833 +#: engine/core/admin.py:197 engine/core/graphene/object_types.py:77 +#: engine/core/models.py:834 msgid "attribute values" msgstr "Attributtverdier" -#: engine/core/admin.py:207 +#: engine/core/admin.py:208 msgid "image" msgstr "Bilde" -#: engine/core/admin.py:208 engine/core/graphene/object_types.py:527 +#: engine/core/admin.py:209 engine/core/graphene/object_types.py:529 msgid "images" msgstr "Bilder" -#: engine/core/admin.py:219 engine/core/models.py:587 +#: engine/core/admin.py:220 engine/core/models.py:576 msgid "stock" msgstr "Lager" -#: engine/core/admin.py:220 engine/core/graphene/object_types.py:710 +#: engine/core/admin.py:221 engine/core/graphene/object_types.py:712 msgid "stocks" msgstr "Aksjer" -#: engine/core/admin.py:231 engine/core/models.py:1930 +#: engine/core/admin.py:232 engine/core/models.py:1931 msgid "order product" msgstr "Bestill produkt" -#: engine/core/admin.py:232 engine/core/graphene/object_types.py:438 -#: engine/core/models.py:1931 +#: engine/core/admin.py:233 engine/core/graphene/object_types.py:440 +#: engine/core/models.py:1932 msgid "order products" msgstr "Bestill produkter" -#: engine/core/admin.py:250 engine/core/admin.py:251 +#: engine/core/admin.py:251 engine/core/admin.py:252 msgid "children" msgstr "Barn" -#: engine/core/admin.py:1059 +#: engine/core/admin.py:1064 msgid "Config" msgstr "Konfigurer" @@ -155,7 +156,8 @@ msgstr "Leveres" msgid "canceled" msgstr "Avlyst" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Mislyktes" @@ -193,51 +195,50 @@ msgid "" "negotiation. Language can be selected with Accept-Language and query " "parameter both." msgstr "" -"OpenApi3-skjema for dette API-et. Format kan velges via innholdsforhandling. " -"Språk kan velges både med Accept-Language og spørringsparameteren." +"OpenApi3-skjema for dette API-et. Format kan velges via innholdsforhandling." +" Språk kan velges både med Accept-Language og spørringsparameteren." -#: engine/core/docs/drf/views.py:43 engine/core/graphene/mutations.py:37 +#: engine/core/docs/drf/views.py:46 engine/core/graphene/mutations.py:36 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:45 +#: engine/core/docs/drf/views.py:48 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Bruk bare en nøkkel for å lese tillatte data fra hurtigbufferen.\n" -"Bruk nøkkel, data og tidsavbrudd med autentisering for å skrive data til " -"hurtigbufferen." +"Bruk nøkkel, data og tidsavbrudd med autentisering for å skrive data til hurtigbufferen." -#: engine/core/docs/drf/views.py:63 +#: engine/core/docs/drf/views.py:66 msgid "get a list of supported languages" msgstr "Få en liste over språk som støttes" -#: engine/core/docs/drf/views.py:75 +#: engine/core/docs/drf/views.py:78 msgid "get application's exposable parameters" msgstr "Hent applikasjonens eksponerbare parametere" -#: engine/core/docs/drf/views.py:89 +#: engine/core/docs/drf/views.py:92 msgid "send a message to the support team" msgstr "Send en melding til supportteamet" -#: engine/core/docs/drf/views.py:103 engine/core/graphene/mutations.py:59 +#: engine/core/docs/drf/views.py:106 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Be om en CORSed URL. Bare https er tillatt." -#: engine/core/docs/drf/views.py:119 +#: engine/core/docs/drf/views.py:122 msgid "Search between products, categories and brands" msgstr "Søk mellom produkter, kategorier og merker" -#: engine/core/docs/drf/views.py:141 +#: engine/core/docs/drf/views.py:144 msgid "global search endpoint to query across project's tables" msgstr "Globalt søkeendepunkt for å søke på tvers av prosjektets tabeller" -#: engine/core/docs/drf/views.py:150 +#: engine/core/docs/drf/views.py:153 msgid "purchase an order as a business" msgstr "Kjøp en ordre som en bedrift" -#: engine/core/docs/drf/views.py:158 +#: engine/core/docs/drf/views.py:161 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -245,7 +246,7 @@ msgstr "" "Kjøp en ordre som en bedrift, ved hjelp av de angitte `produktene` med " "`product_uuid` og `attributter`." -#: engine/core/docs/drf/views.py:177 +#: engine/core/docs/drf/views.py:180 msgid "download a digital asset from purchased digital order" msgstr "laste ned en digital ressurs fra en kjøpt digital bestilling" @@ -272,7 +273,8 @@ msgstr "" "attributter" #: engine/core/docs/drf/viewsets.py:107 -msgid "rewrite some fields of an existing attribute group saving non-editables" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende attributtgruppe for å lagre ikke-" "redigerbare felt" @@ -327,7 +329,8 @@ msgstr "" "attributter" #: engine/core/docs/drf/viewsets.py:208 -msgid "rewrite some fields of an existing attribute value saving non-editables" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende attributtverdi og lagre ikke-" "redigerbare felt" @@ -364,9 +367,9 @@ msgstr "" #: engine/core/docs/drf/viewsets.py:280 engine/core/docs/drf/viewsets.py:757 #: engine/core/docs/drf/viewsets.py:1046 -#: engine/core/graphene/object_types.py:117 -#: engine/core/graphene/object_types.py:236 -#: engine/core/graphene/object_types.py:537 +#: engine/core/graphene/object_types.py:119 +#: engine/core/graphene/object_types.py:238 +#: engine/core/graphene/object_types.py:539 msgid "SEO Meta snapshot" msgstr "SEO Meta-øyeblikksbilde" @@ -384,8 +387,8 @@ msgstr "For ikke-ansatte brukere returneres bare deres egne bestillinger." #: engine/core/docs/drf/viewsets.py:309 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Søk etter store og små bokstaver på tvers av human_readable_id, " "order_products.product.name og order_products.product.partnumber" @@ -420,13 +423,13 @@ msgstr "Filtrer etter ordrestatus (skiller mellom store og små bokstaver)" #: engine/core/docs/drf/viewsets.py:354 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Bestill etter en av: uuid, human_readable_id, user_email, user, status, " -"created, modified, buy_time, random. Prefiks med '-' for synkende rekkefølge " -"(f.eks. '-buy_time')." +"created, modified, buy_time, random. Prefiks med '-' for synkende rekkefølge" +" (f.eks. '-buy_time')." #: engine/core/docs/drf/viewsets.py:366 msgid "retrieve a single order (detailed view)" @@ -480,7 +483,7 @@ msgstr "hente en brukers nåværende ventende ordre" msgid "retrieves a current pending order of an authenticated user" msgstr "henter en gjeldende ventende ordre fra en autentisert bruker" -#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:354 +#: engine/core/docs/drf/viewsets.py:438 engine/core/graphene/mutations.py:353 msgid "purchase an order without account creation" msgstr "kjøpe en ordre uten å opprette konto" @@ -497,8 +500,8 @@ msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -"Legger til et produkt i en bestilling ved hjelp av de angitte `product_uuid` " -"og `attributtene`." +"Legger til et produkt i en bestilling ved hjelp av de angitte `product_uuid`" +" og `attributtene`." #: engine/core/docs/drf/viewsets.py:461 msgid "add a list of products to order, quantities will not count" @@ -598,7 +601,8 @@ msgstr "Fjern et produkt fra ønskelisten" #: engine/core/docs/drf/viewsets.py:568 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -"Fjerner et produkt fra en ønskeliste ved hjelp av den angitte `product_uuid`." +"Fjerner et produkt fra en ønskeliste ved hjelp av den angitte " +"`product_uuid`." #: engine/core/docs/drf/viewsets.py:577 msgid "add many products to wishlist" @@ -625,28 +629,18 @@ msgstr "" msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrer etter ett eller flere attributtnavn/verdipar. \n" "- **Syntaks**: `attr_name=metode-verdi[;attr2=metode2-verdi2]...`.\n" -"- **Metoder** (standardinnstilling er `icontains` hvis utelatt): `iexact`, " -"`exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, " -"`endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- **Vertyping av verdi**: JSON forsøkes først (slik at du kan sende lister/" -"dikter), `true`/`false` for booleans, heltall, floats; ellers behandlet som " -"streng. \n" -"- **Base64**: prefiks med `b64-` for URL-sikker base64-koding av " -"råverdien. \n" +"- **Metoder** (standardinnstilling er `icontains` hvis utelatt): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- **Vertyping av verdi**: JSON forsøkes først (slik at du kan sende lister/dikter), `true`/`false` for booleans, heltall, floats; ellers behandlet som streng. \n" +"- **Base64**: prefiks med `b64-` for URL-sikker base64-koding av råverdien. \n" "Eksempler: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-beskrivelse=icontains-aGVhdC1jb2xk`" @@ -661,12 +655,10 @@ msgstr "(nøyaktig) Produkt UUID" #: engine/core/docs/drf/viewsets.py:630 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Kommaseparert liste over felt som skal sorteres etter. Prefiks med `-` for " -"synkende sortering. \n" +"Kommaseparert liste over felt som skal sorteres etter. Prefiks med `-` for synkende sortering. \n" "**Tillatt:** uuid, vurdering, navn, slug, opprettet, endret, pris, tilfeldig" #: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 @@ -680,9 +672,6 @@ msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" #: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 -#: engine/core/graphene/dashboard_mutations/product.py:80 -#: engine/core/graphene/dashboard_mutations/product.py:118 -#: engine/core/graphene/dashboard_mutations/product.py:166 msgid "create a product" msgstr "Opprett et produkt" @@ -992,8 +981,8 @@ msgstr "" "Skriv om noen av feltene i en eksisterende kategori for å lagre ikke-" "redigerbare" -#: engine/core/elasticsearch/__init__.py:127 -#: engine/core/elasticsearch/__init__.py:627 +#: engine/core/elasticsearch/__init__.py:128 +#: engine/core/elasticsearch/__init__.py:629 msgid "no search term provided." msgstr "Ingen søkeord oppgitt." @@ -1002,8 +991,8 @@ msgstr "Ingen søkeord oppgitt." msgid "Search" msgstr "Søk" -#: engine/core/filters.py:79 engine/core/filters.py:662 -#: engine/core/filters.py:691 +#: engine/core/filters.py:79 engine/core/filters.py:663 +#: engine/core/filters.py:692 msgid "UUID" msgstr "UUID" @@ -1049,8 +1038,8 @@ msgid "Quantity" msgstr "Antall" #: engine/core/filters.py:101 engine/core/filters.py:489 -#: engine/core/filters.py:628 engine/core/models.py:327 -#: engine/core/models.py:508 engine/core/models.py:665 +#: engine/core/filters.py:628 engine/core/models.py:316 +#: engine/core/models.py:497 engine/core/models.py:663 msgid "Slug" msgstr "Snegl" @@ -1066,7 +1055,7 @@ msgstr "Inkluder underkategorier" msgid "Include personal ordered" msgstr "Inkluder personlig bestilte produkter" -#: engine/core/filters.py:110 engine/core/models.py:669 +#: engine/core/filters.py:110 engine/core/models.py:667 msgid "SKU" msgstr "SKU" @@ -1088,12 +1077,12 @@ msgid "Bought before (inclusive)" msgstr "Kjøpt før (inkludert)" #: engine/core/filters.py:410 engine/core/filters.py:461 -#: engine/core/filters.py:696 +#: engine/core/filters.py:697 msgid "User email" msgstr "Brukerens e-post" #: engine/core/filters.py:413 engine/core/filters.py:464 -#: engine/core/filters.py:671 engine/core/filters.py:693 +#: engine/core/filters.py:672 engine/core/filters.py:694 msgid "User UUID" msgstr "Bruker UUID" @@ -1117,253 +1106,255 @@ msgstr "Hele kategorien (har minst 1 produkt eller ikke)" msgid "Level" msgstr "Nivå" -#: engine/core/filters.py:666 +#: engine/core/filters.py:667 msgid "Product UUID" msgstr "Produkt UUID" -#: engine/core/graphene/mutations.py:41 +#: engine/core/graphene/mutations.py:40 msgid "key to look for in or set into the cache" msgstr "Nøkkel å lete etter i eller legge inn i hurtigbufferen" -#: engine/core/graphene/mutations.py:43 +#: engine/core/graphene/mutations.py:42 msgid "data to store in cache" msgstr "Data som skal lagres i hurtigbufferen" -#: engine/core/graphene/mutations.py:46 +#: engine/core/graphene/mutations.py:45 msgid "timeout in seconds to set the data for into the cache" msgstr "Tidsavbrudd i sekunder for å legge inn data i hurtigbufferen" -#: engine/core/graphene/mutations.py:49 +#: engine/core/graphene/mutations.py:48 msgid "cached data" msgstr "Bufret data" -#: engine/core/graphene/mutations.py:64 +#: engine/core/graphene/mutations.py:63 msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-data fra den forespurte URL-en" -#: engine/core/graphene/mutations.py:69 engine/core/views.py:249 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:248 msgid "only URLs starting with http(s):// are allowed" msgstr "Bare nettadresser som begynner med http(s):// er tillatt" -#: engine/core/graphene/mutations.py:87 +#: engine/core/graphene/mutations.py:86 msgid "add a product to the order" msgstr "Legg til et produkt i bestillingen" -#: engine/core/graphene/mutations.py:110 engine/core/graphene/mutations.py:139 -#: engine/core/graphene/mutations.py:255 engine/core/graphene/mutations.py:307 +#: engine/core/graphene/mutations.py:109 engine/core/graphene/mutations.py:138 +#: engine/core/graphene/mutations.py:254 engine/core/graphene/mutations.py:306 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Ordre {order_uuid} ikke funnet!" -#: engine/core/graphene/mutations.py:116 engine/core/graphene/mutations.py:167 +#: engine/core/graphene/mutations.py:115 engine/core/graphene/mutations.py:166 msgid "remove a product from the order" msgstr "Fjern et produkt fra bestillingen" -#: engine/core/graphene/mutations.py:145 +#: engine/core/graphene/mutations.py:144 msgid "remove all products from the order" msgstr "Fjern alle produktene fra bestillingen" -#: engine/core/graphene/mutations.py:190 +#: engine/core/graphene/mutations.py:189 msgid "buy an order" msgstr "Kjøp en ordre" -#: engine/core/graphene/mutations.py:221 engine/core/graphene/mutations.py:283 +#: engine/core/graphene/mutations.py:220 engine/core/graphene/mutations.py:282 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Vennligst oppgi enten order_uuid eller order_hr_id - gjensidig utelukkende!" -#: engine/core/graphene/mutations.py:250 engine/core/graphene/mutations.py:525 -#: engine/core/graphene/mutations.py:574 engine/core/viewsets.py:753 +#: engine/core/graphene/mutations.py:249 engine/core/graphene/mutations.py:524 +#: engine/core/graphene/mutations.py:573 engine/core/viewsets.py:753 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Feil type kom fra order.buy()-metoden: {type(instance)!s}" -#: engine/core/graphene/mutations.py:261 +#: engine/core/graphene/mutations.py:260 msgid "perform an action on a list of products in the order" msgstr "Utfør en handling på en liste over produkter i bestillingen" -#: engine/core/graphene/mutations.py:266 +#: engine/core/graphene/mutations.py:265 msgid "remove/add" msgstr "Fjern/legg til" -#: engine/core/graphene/mutations.py:302 engine/core/graphene/mutations.py:343 +#: engine/core/graphene/mutations.py:301 engine/core/graphene/mutations.py:342 msgid "action must be either add or remove" msgstr "Handlingen må enten være \"legg til\" eller \"fjern\"!" -#: engine/core/graphene/mutations.py:313 +#: engine/core/graphene/mutations.py:312 msgid "perform an action on a list of products in the wishlist" msgstr "Utføre en handling på en liste over produkter i ønskelisten" -#: engine/core/graphene/mutations.py:331 +#: engine/core/graphene/mutations.py:330 msgid "please provide wishlist_uuid value" msgstr "Vennligst oppgi verdien `wishlist_uuid`." -#: engine/core/graphene/mutations.py:348 engine/core/graphene/mutations.py:424 -#: engine/core/graphene/mutations.py:452 engine/core/graphene/mutations.py:480 -#: engine/core/graphene/mutations.py:530 +#: engine/core/graphene/mutations.py:347 engine/core/graphene/mutations.py:423 +#: engine/core/graphene/mutations.py:451 engine/core/graphene/mutations.py:479 +#: engine/core/graphene/mutations.py:529 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Ønskeliste {wishlist_uuid} ikke funnet!" -#: engine/core/graphene/mutations.py:402 +#: engine/core/graphene/mutations.py:401 msgid "add a product to the wishlist" msgstr "Legg til et produkt i bestillingen" -#: engine/core/graphene/mutations.py:430 +#: engine/core/graphene/mutations.py:429 msgid "remove a product from the wishlist" msgstr "Fjern et produkt fra bestillingen" -#: engine/core/graphene/mutations.py:458 +#: engine/core/graphene/mutations.py:457 msgid "remove all products from the wishlist" msgstr "Fjern et produkt fra bestillingen" -#: engine/core/graphene/mutations.py:486 +#: engine/core/graphene/mutations.py:485 msgid "buy all products from the wishlist" msgstr "Fjern et produkt fra bestillingen" -#: engine/core/graphene/mutations.py:536 +#: engine/core/graphene/mutations.py:535 msgid "buy a product" msgstr "Kjøp en ordre" -#: engine/core/graphene/mutations.py:543 +#: engine/core/graphene/mutations.py:542 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Send attributtene som en streng formatert som attr1=verdi1,attr2=verdi2" -#: engine/core/graphene/mutations.py:581 +#: engine/core/graphene/mutations.py:580 msgid "add or delete a feedback for orderproduct" msgstr "Legg til eller slett en tilbakemelding for ordreproduktet" -#: engine/core/graphene/mutations.py:607 +#: engine/core/graphene/mutations.py:606 msgid "action must be either `add` or `remove`" msgstr "Handlingen må være enten `add` eller `remove`!" -#: engine/core/graphene/mutations.py:610 +#: engine/core/graphene/mutations.py:609 #, python-brace-format msgid "order product {order_product_uuid} not found" msgstr "Bestill produkt {order_product_uuid} ikke funnet!" -#: engine/core/graphene/mutations.py:617 +#: engine/core/graphene/mutations.py:616 msgid "original address string provided by the user" msgstr "Opprinnelig adressestreng oppgitt av brukeren" -#: engine/core/graphene/mutations.py:654 engine/core/models.py:978 -#: engine/core/models.py:991 engine/core/models.py:1435 -#: engine/core/models.py:1466 engine/core/models.py:1497 +#: engine/core/graphene/mutations.py:653 engine/core/models.py:979 +#: engine/core/models.py:992 engine/core/models.py:1436 +#: engine/core/models.py:1467 engine/core/models.py:1498 #: engine/core/viewsets.py:760 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} eksisterer ikke: {uuid}!" -#: engine/core/graphene/mutations.py:668 +#: engine/core/graphene/mutations.py:667 msgid "limit must be between 1 and 10" msgstr "Grensen må være mellom 1 og 10" -#: engine/core/graphene/mutations.py:717 +#: engine/core/graphene/mutations.py:716 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fungerer som en drøm" -#: engine/core/graphene/object_types.py:82 -#: engine/core/graphene/object_types.py:417 -#: engine/core/graphene/object_types.py:468 engine/core/models.py:795 -#: engine/core/models.py:1289 engine/core/models.py:2021 +#: engine/core/graphene/object_types.py:84 +#: engine/core/graphene/object_types.py:419 +#: engine/core/graphene/object_types.py:470 engine/core/models.py:796 +#: engine/core/models.py:1290 engine/core/models.py:2022 msgid "attributes" msgstr "Egenskaper" -#: engine/core/graphene/object_types.py:95 +#: engine/core/graphene/object_types.py:97 msgid "grouped attributes" msgstr "Grupperte attributter" -#: engine/core/graphene/object_types.py:102 +#: engine/core/graphene/object_types.py:104 msgid "groups of attributes" msgstr "Grupper av attributter" -#: engine/core/graphene/object_types.py:116 -#: engine/core/graphene/object_types.py:214 -#: engine/core/graphene/object_types.py:252 engine/core/models.py:451 +#: engine/core/graphene/object_types.py:118 +#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:254 engine/core/models.py:440 msgid "categories" msgstr "Kategorier" -#: engine/core/graphene/object_types.py:132 engine/core/models.py:522 +#: engine/core/graphene/object_types.py:134 engine/core/models.py:511 msgid "brands" msgstr "Merkevarer" -#: engine/core/graphene/object_types.py:216 +#: engine/core/graphene/object_types.py:218 msgid "category image url" msgstr "Kategorier" -#: engine/core/graphene/object_types.py:217 -#: engine/core/graphene/object_types.py:362 engine/core/models.py:289 +#: engine/core/graphene/object_types.py:219 +#: engine/core/graphene/object_types.py:364 engine/core/models.py:278 msgid "markup percentage" msgstr "Påslag i prosent" -#: engine/core/graphene/object_types.py:221 +#: engine/core/graphene/object_types.py:223 msgid "which attributes and values can be used for filtering this category." msgstr "" -"Hvilke attributter og verdier som kan brukes til å filtrere denne kategorien." +"Hvilke attributter og verdier som kan brukes til å filtrere denne " +"kategorien." -#: engine/core/graphene/object_types.py:227 -msgid "minimum and maximum prices for products in this category, if available." +#: engine/core/graphene/object_types.py:229 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimums- og maksimumspriser for produkter i denne kategorien, hvis " "tilgjengelig." -#: engine/core/graphene/object_types.py:231 +#: engine/core/graphene/object_types.py:233 msgid "tags for this category" msgstr "Tagger for denne kategorien" -#: engine/core/graphene/object_types.py:234 +#: engine/core/graphene/object_types.py:236 msgid "products in this category" msgstr "Produkter i denne kategorien" -#: engine/core/graphene/object_types.py:369 engine/core/models.py:194 +#: engine/core/graphene/object_types.py:371 engine/core/models.py:183 msgid "vendors" msgstr "Leverandører" -#: engine/core/graphene/object_types.py:373 +#: engine/core/graphene/object_types.py:375 msgid "Latitude (Y coordinate)" msgstr "Breddegrad (Y-koordinat)" -#: engine/core/graphene/object_types.py:374 +#: engine/core/graphene/object_types.py:376 msgid "Longitude (X coordinate)" msgstr "Lengdegrad (X-koordinat)" -#: engine/core/graphene/object_types.py:403 +#: engine/core/graphene/object_types.py:405 msgid "comment" msgstr "Hvordan" -#: engine/core/graphene/object_types.py:405 -#: engine/core/graphene/object_types.py:539 +#: engine/core/graphene/object_types.py:407 +#: engine/core/graphene/object_types.py:541 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Vurderingsverdi fra 1 til og med 10, eller 0 hvis den ikke er angitt." -#: engine/core/graphene/object_types.py:413 +#: engine/core/graphene/object_types.py:415 msgid "represents feedback from a user." msgstr "Representerer tilbakemeldinger fra en bruker." -#: engine/core/graphene/object_types.py:418 -#: engine/core/graphene/object_types.py:469 engine/core/models.py:1283 +#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:471 engine/core/models.py:1284 msgid "notifications" msgstr "Varsler" -#: engine/core/graphene/object_types.py:420 +#: engine/core/graphene/object_types.py:422 msgid "download url for this order product if applicable" msgstr "Last ned url for dette bestillingsproduktet, hvis aktuelt" -#: engine/core/graphene/object_types.py:422 engine/core/models.py:1848 +#: engine/core/graphene/object_types.py:424 engine/core/models.py:1849 msgid "feedback" msgstr "Tilbakemeldinger" -#: engine/core/graphene/object_types.py:456 +#: engine/core/graphene/object_types.py:458 msgid "a list of order products in this order" msgstr "En liste over bestillingsprodukter i denne rekkefølgen" -#: engine/core/graphene/object_types.py:458 engine/core/models.py:1253 +#: engine/core/graphene/object_types.py:460 engine/core/models.py:1254 msgid "billing address" msgstr "Faktureringsadresse" -#: engine/core/graphene/object_types.py:462 +#: engine/core/graphene/object_types.py:464 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1371,53 +1362,53 @@ msgstr "" "Leveringsadresse for denne bestillingen, la den stå tom hvis den er den " "samme som faktureringsadressen eller hvis den ikke er relevant" -#: engine/core/graphene/object_types.py:465 +#: engine/core/graphene/object_types.py:467 msgid "total price of this order" msgstr "Totalpris for denne bestillingen" -#: engine/core/graphene/object_types.py:466 +#: engine/core/graphene/object_types.py:468 msgid "total quantity of products in order" msgstr "Totalt antall produkter i bestillingen" -#: engine/core/graphene/object_types.py:467 +#: engine/core/graphene/object_types.py:469 msgid "are all products in the order digital" msgstr "Er alle produktene i bestillingen digitale" -#: engine/core/graphene/object_types.py:471 +#: engine/core/graphene/object_types.py:473 msgid "transactions for this order" msgstr "Transaksjoner for denne bestillingen" -#: engine/core/graphene/object_types.py:491 engine/core/models.py:1317 +#: engine/core/graphene/object_types.py:493 engine/core/models.py:1318 msgid "orders" msgstr "Bestillinger" -#: engine/core/graphene/object_types.py:512 +#: engine/core/graphene/object_types.py:514 msgid "image url" msgstr "Bilde-URL" -#: engine/core/graphene/object_types.py:519 +#: engine/core/graphene/object_types.py:521 msgid "product's images" msgstr "Bilder av produktet" -#: engine/core/graphene/object_types.py:526 engine/core/models.py:450 -#: engine/core/models.py:607 +#: engine/core/graphene/object_types.py:528 engine/core/models.py:439 +#: engine/core/models.py:596 msgid "category" msgstr "Kategori" -#: engine/core/graphene/object_types.py:528 engine/core/models.py:1849 +#: engine/core/graphene/object_types.py:530 engine/core/models.py:1850 msgid "feedbacks" msgstr "Tilbakemeldinger" -#: engine/core/graphene/object_types.py:529 engine/core/models.py:521 -#: engine/core/models.py:616 +#: engine/core/graphene/object_types.py:531 engine/core/models.py:510 +#: engine/core/models.py:605 msgid "brand" msgstr "Merkevare" -#: engine/core/graphene/object_types.py:531 engine/core/models.py:106 +#: engine/core/graphene/object_types.py:533 engine/core/models.py:103 msgid "attribute groups" msgstr "Attributtgrupper" -#: engine/core/graphene/object_types.py:533 +#: engine/core/graphene/object_types.py:535 #: engine/core/templates/digital_order_created_email.html:111 #: engine/core/templates/digital_order_delivered_email.html:109 #: engine/core/templates/shipped_order_created_email.html:109 @@ -1425,7 +1416,7 @@ msgstr "Attributtgrupper" msgid "price" msgstr "Pris" -#: engine/core/graphene/object_types.py:534 +#: engine/core/graphene/object_types.py:536 #: engine/core/templates/digital_order_created_email.html:110 #: engine/core/templates/digital_order_delivered_email.html:108 #: engine/core/templates/shipped_order_created_email.html:108 @@ -1433,39 +1424,39 @@ msgstr "Pris" msgid "quantity" msgstr "Antall" -#: engine/core/graphene/object_types.py:535 +#: engine/core/graphene/object_types.py:537 msgid "number of feedbacks" msgstr "Antall tilbakemeldinger" -#: engine/core/graphene/object_types.py:536 +#: engine/core/graphene/object_types.py:538 msgid "only available for personal orders" msgstr "Produkter kun tilgjengelig for personlige bestillinger" -#: engine/core/graphene/object_types.py:541 +#: engine/core/graphene/object_types.py:543 msgid "discount price" msgstr "Rabattert pris" -#: engine/core/graphene/object_types.py:565 engine/core/models.py:679 +#: engine/core/graphene/object_types.py:567 engine/core/models.py:677 msgid "products" msgstr "Produkter" -#: engine/core/graphene/object_types.py:675 +#: engine/core/graphene/object_types.py:677 msgid "promocodes" msgstr "Promokoder" -#: engine/core/graphene/object_types.py:690 +#: engine/core/graphene/object_types.py:692 msgid "products on sale" msgstr "Produkter på salg" -#: engine/core/graphene/object_types.py:698 engine/core/models.py:927 +#: engine/core/graphene/object_types.py:700 engine/core/models.py:928 msgid "promotions" msgstr "Kampanjer" -#: engine/core/graphene/object_types.py:702 engine/core/models.py:193 +#: engine/core/graphene/object_types.py:704 engine/core/models.py:182 msgid "vendor" msgstr "Leverandør" -#: engine/core/graphene/object_types.py:703 engine/core/models.py:678 +#: engine/core/graphene/object_types.py:705 engine/core/models.py:676 #: engine/core/templates/digital_order_created_email.html:109 #: engine/core/templates/digital_order_delivered_email.html:107 #: engine/core/templates/shipped_order_created_email.html:107 @@ -1473,99 +1464,98 @@ msgstr "Leverandør" msgid "product" msgstr "Produkt" -#: engine/core/graphene/object_types.py:715 engine/core/models.py:950 +#: engine/core/graphene/object_types.py:717 engine/core/models.py:951 msgid "wishlisted products" msgstr "Produkter på ønskelisten" -#: engine/core/graphene/object_types.py:722 engine/core/models.py:967 +#: engine/core/graphene/object_types.py:724 engine/core/models.py:968 msgid "wishlists" msgstr "Ønskelister" -#: engine/core/graphene/object_types.py:727 +#: engine/core/graphene/object_types.py:729 msgid "tagged products" msgstr "Merkede produkter" -#: engine/core/graphene/object_types.py:735 engine/core/models.py:230 -#: engine/core/models.py:622 +#: engine/core/graphene/object_types.py:737 engine/core/models.py:219 +#: engine/core/models.py:611 msgid "product tags" msgstr "Produktmerker" -#: engine/core/graphene/object_types.py:740 +#: engine/core/graphene/object_types.py:742 msgid "tagged categories" msgstr "Merkede kategorier" -#: engine/core/graphene/object_types.py:748 +#: engine/core/graphene/object_types.py:750 msgid "categories tags" msgstr "Kategorier' tagger" -#: engine/core/graphene/object_types.py:752 +#: engine/core/graphene/object_types.py:754 msgid "project name" msgstr "Prosjektets navn" -#: engine/core/graphene/object_types.py:753 +#: engine/core/graphene/object_types.py:755 msgid "company name" msgstr "Selskapets navn" -#: engine/core/graphene/object_types.py:754 +#: engine/core/graphene/object_types.py:756 msgid "company address" msgstr "Selskapets adresse" -#: engine/core/graphene/object_types.py:755 +#: engine/core/graphene/object_types.py:757 msgid "company phone number" msgstr "Telefonnummer til selskapet" -#: engine/core/graphene/object_types.py:758 +#: engine/core/graphene/object_types.py:760 msgid "email from, sometimes it must be used instead of host user value" -msgstr "" -"\"e-post fra\", noen ganger må den brukes i stedet for vertsbrukerverdien" +msgstr "\"e-post fra\", noen ganger må den brukes i stedet for vertsbrukerverdien" -#: engine/core/graphene/object_types.py:761 +#: engine/core/graphene/object_types.py:763 msgid "email host user" msgstr "E-post vert bruker" -#: engine/core/graphene/object_types.py:762 +#: engine/core/graphene/object_types.py:764 msgid "maximum amount for payment" msgstr "Maksimalt beløp for betaling" -#: engine/core/graphene/object_types.py:763 +#: engine/core/graphene/object_types.py:765 msgid "minimum amount for payment" msgstr "Minimumsbeløp for betaling" -#: engine/core/graphene/object_types.py:764 +#: engine/core/graphene/object_types.py:766 msgid "analytics data" msgstr "Analysedata" -#: engine/core/graphene/object_types.py:765 +#: engine/core/graphene/object_types.py:767 msgid "advertisement data" msgstr "Annonsedata" -#: engine/core/graphene/object_types.py:768 +#: engine/core/graphene/object_types.py:770 msgid "company configuration" msgstr "Konfigurasjon" -#: engine/core/graphene/object_types.py:772 +#: engine/core/graphene/object_types.py:774 msgid "language code" msgstr "Språkkode" -#: engine/core/graphene/object_types.py:773 +#: engine/core/graphene/object_types.py:775 msgid "language name" msgstr "Navn på språk" -#: engine/core/graphene/object_types.py:774 +#: engine/core/graphene/object_types.py:776 msgid "language flag, if exists :)" msgstr "Språkflagg, hvis det finnes :)" -#: engine/core/graphene/object_types.py:777 +#: engine/core/graphene/object_types.py:779 msgid "supported languages" msgstr "Få en liste over språk som støttes" -#: engine/core/graphene/object_types.py:809 -#: engine/core/graphene/object_types.py:812 -#: engine/core/graphene/object_types.py:815 +#: engine/core/graphene/object_types.py:811 +#: engine/core/graphene/object_types.py:814 +#: engine/core/graphene/object_types.py:817 msgid "products search results" msgstr "Søkeresultater for produkter" -#: engine/core/graphene/object_types.py:817 +#: engine/core/graphene/object_types.py:819 msgid "posts search results" msgstr "Søkeresultater for produkter" @@ -1576,29 +1566,29 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"Representerer en gruppe attributter, som kan være hierarkiske. Denne klassen " -"brukes til å administrere og organisere attributtgrupper. En attributtgruppe " -"kan ha en overordnet gruppe som danner en hierarkisk struktur. Dette kan " -"være nyttig for å kategorisere og administrere attributter på en mer " -"effektiv måte i et komplekst system." +"Representerer en gruppe attributter, som kan være hierarkiske. Denne klassen" +" brukes til å administrere og organisere attributtgrupper. En " +"attributtgruppe kan ha en overordnet gruppe som danner en hierarkisk " +"struktur. Dette kan være nyttig for å kategorisere og administrere " +"attributter på en mer effektiv måte i et komplekst system." -#: engine/core/models.py:91 +#: engine/core/models.py:88 msgid "parent of this group" msgstr "Foreldre til denne gruppen" -#: engine/core/models.py:92 +#: engine/core/models.py:89 msgid "parent attribute group" msgstr "Overordnet attributtgruppe" -#: engine/core/models.py:96 engine/core/models.py:97 +#: engine/core/models.py:93 engine/core/models.py:94 msgid "attribute group's name" msgstr "Attributtgruppens navn" -#: engine/core/models.py:105 engine/core/models.py:755 +#: engine/core/models.py:102 engine/core/models.py:756 msgid "attribute group" msgstr "Attributtgruppe" -#: engine/core/models.py:111 +#: engine/core/models.py:108 msgid "" "Represents a vendor entity capable of storing information about external " "vendors and their interaction requirements. The Vendor class is used to " @@ -1609,57 +1599,57 @@ msgid "" "use in systems that interact with third-party vendors." msgstr "" "Representerer en leverandørenhet som kan lagre informasjon om eksterne " -"leverandører og deres interaksjonskrav. Vendor-klassen brukes til å definere " -"og administrere informasjon knyttet til en ekstern leverandør. Den lagrer " +"leverandører og deres interaksjonskrav. Vendor-klassen brukes til å definere" +" og administrere informasjon knyttet til en ekstern leverandør. Den lagrer " "leverandørens navn, autentiseringsdetaljer som kreves for kommunikasjon, og " "prosentmarkeringen som brukes på produkter som hentes fra leverandøren. " "Denne modellen inneholder også ytterligere metadata og begrensninger, noe " "som gjør den egnet for bruk i systemer som samhandler med " "tredjepartsleverandører." -#: engine/core/models.py:125 +#: engine/core/models.py:122 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Lagrer legitimasjon og endepunkter som kreves for leverandørens API-" "kommunikasjon" -#: engine/core/models.py:127 +#: engine/core/models.py:124 msgid "authentication info" msgstr "Autentiseringsinformasjon" -#: engine/core/models.py:132 +#: engine/core/models.py:129 msgid "define the markup for products retrieved from this vendor" msgstr "Definer påslag for produkter som hentes fra denne leverandøren" -#: engine/core/models.py:133 +#: engine/core/models.py:130 msgid "vendor markup percentage" msgstr "Leverandørens påslagsprosent" -#: engine/core/models.py:137 +#: engine/core/models.py:134 msgid "name of this vendor" msgstr "Navn på denne leverandøren" -#: engine/core/models.py:138 +#: engine/core/models.py:135 msgid "vendor name" msgstr "Leverandørens navn" -#: engine/core/models.py:153 +#: engine/core/models.py:150 msgid "response file" msgstr "svarfil" -#: engine/core/models.py:154 +#: engine/core/models.py:151 msgid "vendor's last processing response" msgstr "leverandørens siste behandlingssvar" -#: engine/core/models.py:160 +#: engine/core/models.py:157 msgid "vendor's integration file path" msgstr "Leverandørens integrasjonsfilbane" -#: engine/core/models.py:161 +#: engine/core/models.py:158 msgid "integration path" msgstr "Integreringsvei" -#: engine/core/models.py:203 +#: engine/core/models.py:192 msgid "" "Represents a product tag used for classifying or identifying products. The " "ProductTag class is designed to uniquely identify and classify products " @@ -1668,33 +1658,33 @@ msgid "" "metadata customization for administrative purposes." msgstr "" "Representerer en produkttagg som brukes til å klassifisere eller " -"identifisere produkter. ProductTag-klassen er utformet for å identifisere og " -"klassifisere produkter på en unik måte ved hjelp av en kombinasjon av en " +"identifisere produkter. ProductTag-klassen er utformet for å identifisere og" +" klassifisere produkter på en unik måte ved hjelp av en kombinasjon av en " "intern tagg-identifikator og et brukervennlig visningsnavn. Den støtter " "operasjoner som eksporteres gjennom mixins, og gir metadatatilpasning for " "administrative formål." -#: engine/core/models.py:215 engine/core/models.py:246 +#: engine/core/models.py:204 engine/core/models.py:235 msgid "internal tag identifier for the product tag" msgstr "Intern tagg-identifikator for produkttaggen" -#: engine/core/models.py:216 engine/core/models.py:247 +#: engine/core/models.py:205 engine/core/models.py:236 msgid "tag name" msgstr "Tagg navn" -#: engine/core/models.py:220 engine/core/models.py:251 +#: engine/core/models.py:209 engine/core/models.py:240 msgid "user-friendly name for the product tag" msgstr "Brukervennlig navn for produkttaggen" -#: engine/core/models.py:221 engine/core/models.py:252 +#: engine/core/models.py:210 engine/core/models.py:241 msgid "tag display name" msgstr "Visningsnavn for taggen" -#: engine/core/models.py:229 +#: engine/core/models.py:218 msgid "product tag" msgstr "Produktmerke" -#: engine/core/models.py:235 +#: engine/core/models.py:224 msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " @@ -1702,18 +1692,18 @@ msgid "" msgstr "" "Representerer en kategorikode som brukes for produkter. Denne klassen " "modellerer en kategorikode som kan brukes til å knytte til og klassifisere " -"produkter. Den inneholder attributter for en intern tagg-identifikator og et " -"brukervennlig visningsnavn." +"produkter. Den inneholder attributter for en intern tagg-identifikator og et" +" brukervennlig visningsnavn." -#: engine/core/models.py:260 +#: engine/core/models.py:249 msgid "category tag" msgstr "kategorimerke" -#: engine/core/models.py:261 engine/core/models.py:333 +#: engine/core/models.py:250 engine/core/models.py:322 msgid "category tags" msgstr "kategorikoder" -#: engine/core/models.py:266 +#: engine/core/models.py:255 msgid "" "Represents a category entity to organize and group related items in a " "hierarchical structure. Categories may have hierarchical relationships with " @@ -1726,8 +1716,8 @@ msgid "" "priority." msgstr "" "Representerer en kategorienhet for å organisere og gruppere relaterte " -"elementer i en hierarkisk struktur. Kategorier kan ha hierarkiske relasjoner " -"med andre kategorier, noe som støtter foreldre-barn-relasjoner. Klassen " +"elementer i en hierarkisk struktur. Kategorier kan ha hierarkiske relasjoner" +" med andre kategorier, noe som støtter foreldre-barn-relasjoner. Klassen " "inneholder felt for metadata og visuell representasjon, som danner " "grunnlaget for kategorirelaterte funksjoner. Denne klassen brukes vanligvis " "til å definere og administrere produktkategorier eller andre lignende " @@ -1735,56 +1725,57 @@ msgstr "" "spesifisere navn, beskrivelse og hierarki for kategoriene, samt tildele " "attributter som bilder, tagger eller prioritet." -#: engine/core/models.py:280 +#: engine/core/models.py:269 msgid "upload an image representing this category" msgstr "Last opp et bilde som representerer denne kategorien" -#: engine/core/models.py:283 +#: engine/core/models.py:272 msgid "category image" msgstr "Kategori bilde" -#: engine/core/models.py:288 +#: engine/core/models.py:277 msgid "define a markup percentage for products in this category" msgstr "Definer en påslagsprosent for produkter i denne kategorien" -#: engine/core/models.py:297 +#: engine/core/models.py:286 msgid "parent of this category to form a hierarchical structure" msgstr "Overordnet til denne kategorien for å danne en hierarkisk struktur" -#: engine/core/models.py:298 +#: engine/core/models.py:287 msgid "parent category" msgstr "Overordnet kategori" -#: engine/core/models.py:303 +#: engine/core/models.py:292 msgid "category name" msgstr "Navn på kategori" -#: engine/core/models.py:304 +#: engine/core/models.py:293 msgid "provide a name for this category" msgstr "Oppgi et navn for denne kategorien" -#: engine/core/models.py:311 +#: engine/core/models.py:300 msgid "add a detailed description for this category" msgstr "Legg til en detaljert beskrivelse for denne kategorien" -#: engine/core/models.py:312 +#: engine/core/models.py:301 msgid "category description" msgstr "Beskrivelse av kategori" -#: engine/core/models.py:332 +#: engine/core/models.py:321 msgid "tags that help describe or group this category" msgstr "tagger som bidrar til å beskrive eller gruppere denne kategorien" -#: engine/core/models.py:339 engine/core/models.py:514 +#: engine/core/models.py:328 engine/core/models.py:503 msgid "priority" msgstr "Prioritet" -#: engine/core/models.py:457 +#: engine/core/models.py:446 msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Representerer et merkevareobjekt i systemet. Denne klassen håndterer " "informasjon og attributter knyttet til et merke, inkludert navn, logoer, " @@ -1792,128 +1783,128 @@ msgstr "" "prioriteringsrekkefølge. Den gjør det mulig å organisere og representere " "merkerelaterte data i applikasjonen." -#: engine/core/models.py:467 +#: engine/core/models.py:456 msgid "name of this brand" msgstr "Navnet på dette merket" -#: engine/core/models.py:468 +#: engine/core/models.py:457 msgid "brand name" msgstr "Merkenavn" -#: engine/core/models.py:475 +#: engine/core/models.py:464 msgid "upload a logo representing this brand" msgstr "Last opp en logo som representerer dette varemerket" -#: engine/core/models.py:477 +#: engine/core/models.py:466 msgid "brand small image" msgstr "Merkevare lite image" -#: engine/core/models.py:483 +#: engine/core/models.py:472 msgid "upload a big logo representing this brand" msgstr "Last opp en stor logo som representerer dette varemerket" -#: engine/core/models.py:485 +#: engine/core/models.py:474 msgid "brand big image" msgstr "Merkevare med stort image" -#: engine/core/models.py:490 +#: engine/core/models.py:479 msgid "add a detailed description of the brand" msgstr "Legg til en detaljert beskrivelse av merket" -#: engine/core/models.py:491 +#: engine/core/models.py:480 msgid "brand description" msgstr "Varemerkebeskrivelse" -#: engine/core/models.py:496 +#: engine/core/models.py:485 msgid "optional categories that this brand is associated with" msgstr "Valgfrie kategorier som dette merket er assosiert med" -#: engine/core/models.py:497 +#: engine/core/models.py:486 msgid "associated categories" msgstr "Kategorier" -#: engine/core/models.py:527 +#: engine/core/models.py:516 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"Representerer lagerbeholdningen til et produkt som administreres i systemet. " -"Denne klassen gir informasjon om forholdet mellom leverandører, produkter og " -"deres lagerinformasjon, samt lagerrelaterte egenskaper som pris, " +"Representerer lagerbeholdningen til et produkt som administreres i systemet." +" Denne klassen gir informasjon om forholdet mellom leverandører, produkter " +"og deres lagerinformasjon, samt lagerrelaterte egenskaper som pris, " "innkjøpspris, antall, SKU og digitale eiendeler. Den er en del av " "lagerstyringssystemet for å muliggjøre sporing og evaluering av produkter " "som er tilgjengelige fra ulike leverandører." -#: engine/core/models.py:539 +#: engine/core/models.py:528 msgid "the vendor supplying this product stock" msgstr "Leverandøren som leverer dette produktet lagerfører" -#: engine/core/models.py:540 +#: engine/core/models.py:529 msgid "associated vendor" msgstr "Tilknyttet leverandør" -#: engine/core/models.py:544 +#: engine/core/models.py:533 msgid "final price to the customer after markups" msgstr "Sluttpris til kunden etter påslag" -#: engine/core/models.py:545 +#: engine/core/models.py:534 msgid "selling price" msgstr "Salgspris" -#: engine/core/models.py:550 +#: engine/core/models.py:539 msgid "the product associated with this stock entry" msgstr "Produktet som er knyttet til denne lagerposten" -#: engine/core/models.py:551 engine/core/models.py:820 -#: engine/core/models.py:866 engine/core/models.py:1904 +#: engine/core/models.py:540 engine/core/models.py:821 +#: engine/core/models.py:867 engine/core/models.py:1905 msgid "associated product" msgstr "Tilhørende produkt" -#: engine/core/models.py:558 +#: engine/core/models.py:547 msgid "the price paid to the vendor for this product" msgstr "Prisen som er betalt til leverandøren for dette produktet" -#: engine/core/models.py:559 +#: engine/core/models.py:548 msgid "vendor purchase price" msgstr "Leverandørens innkjøpspris" -#: engine/core/models.py:563 +#: engine/core/models.py:552 msgid "available quantity of the product in stock" msgstr "Tilgjengelig mengde av produktet på lager" -#: engine/core/models.py:564 +#: engine/core/models.py:553 msgid "quantity in stock" msgstr "Antall på lager" -#: engine/core/models.py:568 +#: engine/core/models.py:557 msgid "vendor-assigned SKU for identifying the product" msgstr "Leverandørens SKU for identifisering av produktet" -#: engine/core/models.py:569 +#: engine/core/models.py:558 msgid "vendor sku" msgstr "Leverandørens SKU" -#: engine/core/models.py:575 +#: engine/core/models.py:564 msgid "digital file associated with this stock if applicable" msgstr "Digital fil knyttet til denne aksjen, hvis aktuelt" -#: engine/core/models.py:576 +#: engine/core/models.py:565 msgid "digital file" msgstr "Digital fil" -#: engine/core/models.py:580 +#: engine/core/models.py:569 msgid "system attributes" msgstr "Systemattributter" -#: engine/core/models.py:588 +#: engine/core/models.py:577 msgid "stock entries" msgstr "Lageroppføringer" -#: engine/core/models.py:593 +#: engine/core/models.py:582 msgid "" "Represents a product with attributes such as category, brand, tags, digital " "status, name, description, part number, and slug. Provides related utility " @@ -1934,61 +1925,69 @@ msgstr "" "ytelsen. Den brukes til å definere og manipulere produktdata og tilhørende " "informasjon i en applikasjon." -#: engine/core/models.py:606 +#: engine/core/models.py:595 msgid "category this product belongs to" msgstr "Kategori dette produktet tilhører" -#: engine/core/models.py:615 +#: engine/core/models.py:604 msgid "optionally associate this product with a brand" msgstr "Du kan eventuelt knytte dette produktet til et varemerke" -#: engine/core/models.py:621 +#: engine/core/models.py:610 msgid "tags that help describe or group this product" msgstr "Tagger som bidrar til å beskrive eller gruppere dette produktet" -#: engine/core/models.py:626 +#: engine/core/models.py:615 msgid "indicates whether this product is digitally delivered" msgstr "Angir om dette produktet leveres digitalt" -#: engine/core/models.py:627 +#: engine/core/models.py:616 msgid "is product digital" msgstr "Er produktet digitalt" -#: engine/core/models.py:633 +#: engine/core/models.py:623 +msgid "indicates whether this product should be updated from periodic task" +msgstr "angir om dette produktet skal oppdateres fra periodisk oppgave" + +#: engine/core/models.py:625 +msgid "is product updatable" +msgstr "er produktet oppdaterbart" + +#: engine/core/models.py:631 msgid "provide a clear identifying name for the product" msgstr "Gi produktet et tydelig navn som identifiserer det" -#: engine/core/models.py:634 +#: engine/core/models.py:632 msgid "product name" msgstr "Produktnavn" -#: engine/core/models.py:640 engine/core/models.py:915 +#: engine/core/models.py:638 engine/core/models.py:916 msgid "add a detailed description of the product" msgstr "Legg til en detaljert beskrivelse av produktet" -#: engine/core/models.py:641 +#: engine/core/models.py:639 msgid "product description" msgstr "Produktbeskrivelse" -#: engine/core/models.py:648 +#: engine/core/models.py:646 msgid "part number for this product" msgstr "Delenummer for dette produktet" -#: engine/core/models.py:649 +#: engine/core/models.py:647 msgid "part number" msgstr "Delenummer" -#: engine/core/models.py:668 +#: engine/core/models.py:666 msgid "stock keeping unit for this product" msgstr "Lagerholdsenhet for dette produktet" -#: engine/core/models.py:741 +#: engine/core/models.py:742 msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Representerer et attributt i systemet. Denne klassen brukes til å definere " @@ -1998,310 +1997,311 @@ msgstr "" "float, boolsk, matrise og objekt. Dette gir mulighet for dynamisk og " "fleksibel datastrukturering." -#: engine/core/models.py:754 +#: engine/core/models.py:755 msgid "group of this attribute" msgstr "Gruppe av dette attributtet" -#: engine/core/models.py:760 +#: engine/core/models.py:761 msgid "string" msgstr "Streng" -#: engine/core/models.py:761 +#: engine/core/models.py:762 msgid "integer" msgstr "Heltall" -#: engine/core/models.py:762 +#: engine/core/models.py:763 msgid "float" msgstr "Flyter" -#: engine/core/models.py:763 +#: engine/core/models.py:764 msgid "boolean" msgstr "Boolsk" -#: engine/core/models.py:764 +#: engine/core/models.py:765 msgid "array" msgstr "Array" -#: engine/core/models.py:765 +#: engine/core/models.py:766 msgid "object" msgstr "Objekt" -#: engine/core/models.py:767 +#: engine/core/models.py:768 msgid "type of the attribute's value" msgstr "Type av attributtets verdi" -#: engine/core/models.py:768 +#: engine/core/models.py:769 msgid "value type" msgstr "Verditype" -#: engine/core/models.py:773 +#: engine/core/models.py:774 msgid "name of this attribute" msgstr "Navn på dette attributtet" -#: engine/core/models.py:774 +#: engine/core/models.py:775 msgid "attribute's name" msgstr "Attributtets navn" -#: engine/core/models.py:779 +#: engine/core/models.py:780 msgid "is filterable" msgstr "er filtrerbar" -#: engine/core/models.py:781 +#: engine/core/models.py:782 msgid "designates whether this attribute can be used for filtering or not" msgstr "" -"Hvilke attributter og verdier som kan brukes til å filtrere denne kategorien." +"Hvilke attributter og verdier som kan brukes til å filtrere denne " +"kategorien." -#: engine/core/models.py:794 engine/core/models.py:812 +#: engine/core/models.py:795 engine/core/models.py:813 #: engine/core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attributt" -#: engine/core/models.py:800 +#: engine/core/models.py:801 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Representerer en spesifikk verdi for et attributt som er knyttet til et " "produkt. Den knytter \"attributtet\" til en unik \"verdi\", noe som gir " "bedre organisering og dynamisk representasjon av produktegenskaper." -#: engine/core/models.py:811 +#: engine/core/models.py:812 msgid "attribute of this value" msgstr "Attributt for denne verdien" -#: engine/core/models.py:819 +#: engine/core/models.py:820 msgid "the specific product associated with this attribute's value" msgstr "Det spesifikke produktet som er knyttet til dette attributtets verdi" -#: engine/core/models.py:825 +#: engine/core/models.py:826 msgid "the specific value for this attribute" msgstr "Den spesifikke verdien for dette attributtet" -#: engine/core/models.py:838 +#: engine/core/models.py:839 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Representerer et produktbilde som er knyttet til et produkt i systemet. " -"Denne klassen er utviklet for å administrere bilder for produkter, inkludert " -"funksjonalitet for å laste opp bildefiler, knytte dem til spesifikke " +"Denne klassen er utviklet for å administrere bilder for produkter, inkludert" +" funksjonalitet for å laste opp bildefiler, knytte dem til spesifikke " "produkter og bestemme visningsrekkefølgen. Den inneholder også en " "tilgjengelighetsfunksjon med alternativ tekst for bildene." -#: engine/core/models.py:849 +#: engine/core/models.py:850 msgid "provide alternative text for the image for accessibility" msgstr "Gi alternativ tekst til bildet for tilgjengelighet" -#: engine/core/models.py:850 +#: engine/core/models.py:851 msgid "image alt text" msgstr "Alt-tekst til bilder" -#: engine/core/models.py:853 +#: engine/core/models.py:854 msgid "upload the image file for this product" msgstr "Last opp bildefilen for dette produktet" -#: engine/core/models.py:854 engine/core/models.py:885 +#: engine/core/models.py:855 engine/core/models.py:886 msgid "product image" msgstr "Produktbilde" -#: engine/core/models.py:859 +#: engine/core/models.py:860 msgid "determines the order in which images are displayed" msgstr "Bestemmer rekkefølgen bildene skal vises i" -#: engine/core/models.py:860 +#: engine/core/models.py:861 msgid "display priority" msgstr "Prioritet på skjermen" -#: engine/core/models.py:865 +#: engine/core/models.py:866 msgid "the product that this image represents" msgstr "Produktet som dette bildet representerer" -#: engine/core/models.py:886 +#: engine/core/models.py:887 msgid "product images" msgstr "Produktbilder" -#: engine/core/models.py:891 +#: engine/core/models.py:892 msgid "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"Representerer en kampanje for produkter med rabatt. Denne klassen brukes til " -"å definere og administrere kampanjekampanjer som tilbyr en prosentbasert " +"Representerer en kampanje for produkter med rabatt. Denne klassen brukes til" +" å definere og administrere kampanjekampanjer som tilbyr en prosentbasert " "rabatt for produkter. Klassen inneholder attributter for å angi " "rabattsatsen, gi detaljer om kampanjen og knytte den til de aktuelle " "produktene. Den integreres med produktkatalogen for å finne de berørte " "varene i kampanjen." -#: engine/core/models.py:903 +#: engine/core/models.py:904 msgid "percentage discount for the selected products" msgstr "Prosentvis rabatt for de valgte produktene" -#: engine/core/models.py:904 +#: engine/core/models.py:905 msgid "discount percentage" msgstr "Rabattprosent" -#: engine/core/models.py:909 +#: engine/core/models.py:910 msgid "provide a unique name for this promotion" msgstr "Oppgi et unikt navn for denne kampanjen" -#: engine/core/models.py:910 +#: engine/core/models.py:911 msgid "promotion name" msgstr "Navn på kampanjen" -#: engine/core/models.py:916 +#: engine/core/models.py:917 msgid "promotion description" msgstr "Beskrivelse av kampanjen" -#: engine/core/models.py:921 +#: engine/core/models.py:922 msgid "select which products are included in this promotion" msgstr "Velg hvilke produkter som er inkludert i denne kampanjen" -#: engine/core/models.py:922 +#: engine/core/models.py:923 msgid "included products" msgstr "Inkluderte produkter" -#: engine/core/models.py:926 +#: engine/core/models.py:927 msgid "promotion" msgstr "Markedsføring" -#: engine/core/models.py:937 +#: engine/core/models.py:938 msgid "" "Represents a user's wishlist for storing and managing desired products. The " "class provides functionality to manage a collection of products, supporting " "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"Representerer en brukers ønskeliste for lagring og administrasjon av ønskede " -"produkter. Klassen tilbyr funksjonalitet for å administrere en samling " +"Representerer en brukers ønskeliste for lagring og administrasjon av ønskede" +" produkter. Klassen tilbyr funksjonalitet for å administrere en samling " "produkter, og støtter operasjoner som å legge til og fjerne produkter, samt " "operasjoner for å legge til og fjerne flere produkter samtidig." -#: engine/core/models.py:949 +#: engine/core/models.py:950 msgid "products that the user has marked as wanted" msgstr "Produkter som brukeren har merket som ønsket" -#: engine/core/models.py:957 +#: engine/core/models.py:958 msgid "user who owns this wishlist" msgstr "Bruker som eier denne ønskelisten" -#: engine/core/models.py:958 +#: engine/core/models.py:959 msgid "wishlist owner" msgstr "Ønskelistens eier" -#: engine/core/models.py:966 +#: engine/core/models.py:967 msgid "wishlist" msgstr "Ønskeliste" -#: engine/core/models.py:1008 +#: engine/core/models.py:1009 msgid "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"Representerer en dokumentarpost knyttet til et produkt. Denne klassen brukes " -"til å lagre informasjon om dokumentarer knyttet til bestemte produkter, " +"Representerer en dokumentarpost knyttet til et produkt. Denne klassen brukes" +" til å lagre informasjon om dokumentarer knyttet til bestemte produkter, " "inkludert filopplastinger og metadata for disse. Den inneholder metoder og " "egenskaper for å håndtere filtype og lagringsbane for dokumentarfilene. Den " "utvider funksjonaliteten fra spesifikke mixins og tilbyr flere tilpassede " "funksjoner." -#: engine/core/models.py:1023 +#: engine/core/models.py:1024 msgid "documentary" msgstr "Dokumentarfilm" -#: engine/core/models.py:1024 +#: engine/core/models.py:1025 msgid "documentaries" msgstr "Dokumentarfilmer" -#: engine/core/models.py:1034 +#: engine/core/models.py:1035 msgid "unresolved" msgstr "Uavklart" -#: engine/core/models.py:1039 +#: engine/core/models.py:1040 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Representerer en adresseenhet som inneholder stedsdetaljer og assosiasjoner " "til en bruker. Tilbyr funksjonalitet for lagring av geografiske data og " "adressedata, samt integrering med geokodingstjenester. Denne klassen er " -"utformet for å lagre detaljert adresseinformasjon, inkludert komponenter som " -"gate, by, region, land og geolokalisering (lengde- og breddegrad). Den " +"utformet for å lagre detaljert adresseinformasjon, inkludert komponenter som" +" gate, by, region, land og geolokalisering (lengde- og breddegrad). Den " "støtter integrasjon med API-er for geokoding, og gjør det mulig å lagre rå " -"API-svar for videre behandling eller inspeksjon. Klassen gjør det også mulig " -"å knytte en adresse til en bruker, noe som gjør det enklere å tilpasse " +"API-svar for videre behandling eller inspeksjon. Klassen gjør det også mulig" +" å knytte en adresse til en bruker, noe som gjør det enklere å tilpasse " "datahåndteringen." -#: engine/core/models.py:1054 +#: engine/core/models.py:1055 msgid "address line for the customer" msgstr "Adresselinje for kunden" -#: engine/core/models.py:1055 +#: engine/core/models.py:1056 msgid "address line" msgstr "Adresselinje" -#: engine/core/models.py:1057 +#: engine/core/models.py:1058 msgid "street" msgstr "Gate" -#: engine/core/models.py:1058 +#: engine/core/models.py:1059 msgid "district" msgstr "Distrikt" -#: engine/core/models.py:1059 +#: engine/core/models.py:1060 msgid "city" msgstr "By" -#: engine/core/models.py:1060 +#: engine/core/models.py:1061 msgid "region" msgstr "Region" -#: engine/core/models.py:1061 +#: engine/core/models.py:1062 msgid "postal code" msgstr "Postnummer" -#: engine/core/models.py:1062 +#: engine/core/models.py:1063 msgid "country" msgstr "Land" -#: engine/core/models.py:1069 +#: engine/core/models.py:1070 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokaliseringspunkt(lengdegrad, breddegrad)" -#: engine/core/models.py:1075 +#: engine/core/models.py:1076 msgid "full JSON response from geocoder for this address" msgstr "Fullstendig JSON-svar fra geokoderen for denne adressen" -#: engine/core/models.py:1081 +#: engine/core/models.py:1082 msgid "stored JSON response from the geocoding service" msgstr "Lagret JSON-svar fra geokodingstjenesten" -#: engine/core/models.py:1091 +#: engine/core/models.py:1092 msgid "address" msgstr "Adresse" -#: engine/core/models.py:1092 +#: engine/core/models.py:1093 msgid "addresses" msgstr "Adresser" -#: engine/core/models.py:1104 +#: engine/core/models.py:1105 msgid "" "Represents a promotional code that can be used for discounts, managing its " "validity, type of discount, and application. The PromoCode class stores " @@ -2312,78 +2312,79 @@ msgid "" msgstr "" "Representerer en kampanjekode som kan brukes til rabatter, og styrer dens " "gyldighet, rabattype og anvendelse. PromoCode-klassen lagrer informasjon om " -"en kampanjekode, inkludert dens unike identifikator, rabattegenskaper (beløp " -"eller prosent), gyldighetsperiode, tilknyttet bruker (hvis noen) og status " +"en kampanjekode, inkludert dens unike identifikator, rabattegenskaper (beløp" +" eller prosent), gyldighetsperiode, tilknyttet bruker (hvis noen) og status " "for bruken av den. Den inneholder funksjonalitet for å validere og bruke " -"kampanjekoden på en bestilling, samtidig som den sikrer at begrensningene er " -"oppfylt." +"kampanjekoden på en bestilling, samtidig som den sikrer at begrensningene er" +" oppfylt." -#: engine/core/models.py:1118 +#: engine/core/models.py:1119 msgid "unique code used by a user to redeem a discount" msgstr "Unik kode som brukes av en bruker for å løse inn en rabatt" -#: engine/core/models.py:1119 +#: engine/core/models.py:1120 msgid "promo code identifier" msgstr "Kampanjekode-identifikator" -#: engine/core/models.py:1126 +#: engine/core/models.py:1127 msgid "fixed discount amount applied if percent is not used" msgstr "Fast rabattbeløp som brukes hvis prosent ikke brukes" -#: engine/core/models.py:1127 +#: engine/core/models.py:1128 msgid "fixed discount amount" msgstr "Fast rabattbeløp" -#: engine/core/models.py:1133 +#: engine/core/models.py:1134 msgid "percentage discount applied if fixed amount is not used" msgstr "Prosentvis rabatt hvis fast beløp ikke brukes" -#: engine/core/models.py:1134 +#: engine/core/models.py:1135 msgid "percentage discount" msgstr "Prosentvis rabatt" -#: engine/core/models.py:1139 +#: engine/core/models.py:1140 msgid "timestamp when the promocode expires" msgstr "Tidsstempel for når kampanjekoden utløper" -#: engine/core/models.py:1140 +#: engine/core/models.py:1141 msgid "end validity time" msgstr "Slutt gyldighetstid" -#: engine/core/models.py:1145 +#: engine/core/models.py:1146 msgid "timestamp from which this promocode is valid" msgstr "Tidsstempel som denne kampanjekoden er gyldig fra" -#: engine/core/models.py:1146 +#: engine/core/models.py:1147 msgid "start validity time" msgstr "Start gyldighetstid" -#: engine/core/models.py:1151 +#: engine/core/models.py:1152 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -"Tidsstempel for når kampanjekoden ble brukt, tomt hvis den ikke er brukt ennå" +"Tidsstempel for når kampanjekoden ble brukt, tomt hvis den ikke er brukt " +"ennå" -#: engine/core/models.py:1152 +#: engine/core/models.py:1153 msgid "usage timestamp" msgstr "Tidsstempel for bruk" -#: engine/core/models.py:1157 +#: engine/core/models.py:1158 msgid "user assigned to this promocode if applicable" msgstr "Bruker som er tilordnet denne kampanjekoden, hvis aktuelt" -#: engine/core/models.py:1158 +#: engine/core/models.py:1159 msgid "assigned user" msgstr "Tilordnet bruker" -#: engine/core/models.py:1165 +#: engine/core/models.py:1166 msgid "promo code" msgstr "Kampanjekode" -#: engine/core/models.py:1166 +#: engine/core/models.py:1167 msgid "promo codes" msgstr "Kampanjekoder" -#: engine/core/models.py:1182 +#: engine/core/models.py:1183 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -2391,167 +2392,167 @@ msgstr "" "Bare én type rabatt skal defineres (beløp eller prosent), men ikke begge " "eller ingen av delene." -#: engine/core/models.py:1204 +#: engine/core/models.py:1205 msgid "promocode already used" msgstr "Promokoden har allerede blitt brukt" -#: engine/core/models.py:1226 +#: engine/core/models.py:1227 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ugyldig rabattype for kampanjekode {self.uuid}!" -#: engine/core/models.py:1235 +#: engine/core/models.py:1236 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Representerer en bestilling som er lagt inn av en bruker. Denne klassen " "modellerer en bestilling i applikasjonen, inkludert ulike attributter som " -"fakturerings- og leveringsinformasjon, status, tilknyttet bruker, varsler og " -"relaterte operasjoner. Bestillinger kan ha tilknyttede produkter, kampanjer " -"kan brukes, adresser kan angis, og frakt- eller faktureringsopplysninger kan " -"oppdateres. På samme måte støtter funksjonaliteten håndtering av produktene " -"i bestillingens livssyklus." +"fakturerings- og leveringsinformasjon, status, tilknyttet bruker, varsler og" +" relaterte operasjoner. Bestillinger kan ha tilknyttede produkter, kampanjer" +" kan brukes, adresser kan angis, og frakt- eller faktureringsopplysninger " +"kan oppdateres. På samme måte støtter funksjonaliteten håndtering av " +"produktene i bestillingens livssyklus." -#: engine/core/models.py:1252 +#: engine/core/models.py:1253 msgid "the billing address used for this order" msgstr "Faktureringsadressen som brukes for denne bestillingen" -#: engine/core/models.py:1260 +#: engine/core/models.py:1261 msgid "optional promo code applied to this order" msgstr "Valgfri kampanjekode brukt på denne bestillingen" -#: engine/core/models.py:1261 +#: engine/core/models.py:1262 msgid "applied promo code" msgstr "Anvendt kampanjekode" -#: engine/core/models.py:1269 +#: engine/core/models.py:1270 msgid "the shipping address used for this order" msgstr "Leveringsadressen som brukes for denne bestillingen" -#: engine/core/models.py:1270 +#: engine/core/models.py:1271 msgid "shipping address" msgstr "Leveringsadresse" -#: engine/core/models.py:1276 +#: engine/core/models.py:1277 msgid "current status of the order in its lifecycle" msgstr "Ordrens nåværende status i livssyklusen" -#: engine/core/models.py:1277 +#: engine/core/models.py:1278 msgid "order status" msgstr "Order status" -#: engine/core/models.py:1282 engine/core/models.py:1881 +#: engine/core/models.py:1283 engine/core/models.py:1882 msgid "json structure of notifications to display to users" msgstr "" "JSON-struktur for varsler som skal vises til brukere, i admin-grensesnittet " "brukes tabellvisningen" -#: engine/core/models.py:1288 +#: engine/core/models.py:1289 msgid "json representation of order attributes for this order" msgstr "JSON-representasjon av ordreattributter for denne ordren" -#: engine/core/models.py:1294 +#: engine/core/models.py:1295 msgid "the user who placed the order" msgstr "Brukeren som har lagt inn bestillingen" -#: engine/core/models.py:1295 +#: engine/core/models.py:1296 msgid "user" msgstr "Bruker" -#: engine/core/models.py:1301 +#: engine/core/models.py:1302 msgid "the timestamp when the order was finalized" msgstr "Tidsstempel for når bestillingen ble fullført" -#: engine/core/models.py:1302 +#: engine/core/models.py:1303 msgid "buy time" msgstr "Kjøp tid" -#: engine/core/models.py:1309 +#: engine/core/models.py:1310 msgid "a human-readable identifier for the order" msgstr "En menneskelig lesbar identifikator for bestillingen" -#: engine/core/models.py:1310 +#: engine/core/models.py:1311 msgid "human readable id" msgstr "ID som kan leses av mennesker" -#: engine/core/models.py:1316 +#: engine/core/models.py:1317 msgid "order" msgstr "Bestilling" -#: engine/core/models.py:1363 +#: engine/core/models.py:1364 msgid "a user must have only one pending order at a time" msgstr "En bruker kan bare ha én ventende ordre om gangen!" -#: engine/core/models.py:1396 +#: engine/core/models.py:1397 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Du kan ikke legge til produkter i en bestilling som ikke er en pågående " "bestilling" -#: engine/core/models.py:1402 +#: engine/core/models.py:1403 msgid "you cannot add inactive products to order" msgstr "Du kan ikke legge til inaktive produkter i bestillingen" -#: engine/core/models.py:1424 +#: engine/core/models.py:1425 msgid "you cannot add more products than available in stock" msgstr "" "Du kan ikke legge til flere produkter enn det som er tilgjengelig på lager" -#: engine/core/models.py:1448 engine/core/models.py:1477 -#: engine/core/models.py:1487 +#: engine/core/models.py:1449 engine/core/models.py:1478 +#: engine/core/models.py:1488 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Du kan ikke fjerne produkter fra en bestilling som ikke er en pågående " "bestilling" -#: engine/core/models.py:1472 +#: engine/core/models.py:1473 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} finnes ikke med spørring <{query}>!" -#: engine/core/models.py:1511 +#: engine/core/models.py:1512 msgid "promocode does not exist" msgstr "Promokoden finnes ikke" -#: engine/core/models.py:1526 +#: engine/core/models.py:1527 msgid "you can only buy physical products with shipping address specified" msgstr "Du kan bare kjøpe fysiske produkter med oppgitt leveringsadresse!" -#: engine/core/models.py:1547 +#: engine/core/models.py:1548 msgid "address does not exist" msgstr "Adressen eksisterer ikke" -#: engine/core/models.py:1569 engine/core/models.py:1648 +#: engine/core/models.py:1570 engine/core/models.py:1649 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Du kan ikke kjøpe for øyeblikket, vennligst prøv igjen om noen minutter." -#: engine/core/models.py:1575 engine/core/models.py:1641 +#: engine/core/models.py:1576 engine/core/models.py:1642 msgid "invalid force value" msgstr "Ugyldig kraftverdi" -#: engine/core/models.py:1581 engine/core/models.py:1652 +#: engine/core/models.py:1582 engine/core/models.py:1653 msgid "you cannot purchase an empty order!" msgstr "Du kan ikke kjøpe en tom ordre!" -#: engine/core/models.py:1602 +#: engine/core/models.py:1603 msgid "you cannot buy an order without a user" msgstr "Du kan ikke kjøpe en ordre uten en bruker!" -#: engine/core/models.py:1616 +#: engine/core/models.py:1617 msgid "a user without a balance cannot buy with balance" msgstr "En bruker uten saldo kan ikke kjøpe med saldo!" -#: engine/core/models.py:1622 +#: engine/core/models.py:1623 msgid "insufficient funds to complete the order" msgstr "Utilstrekkelige midler til å fullføre bestillingen" -#: engine/core/models.py:1663 +#: engine/core/models.py:1664 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2559,14 +2560,14 @@ msgstr "" "du kan ikke kjøpe uten registrering, vennligst oppgi følgende informasjon: " "kundenavn, kundens e-postadresse, kundens telefonnummer" -#: engine/core/models.py:1674 +#: engine/core/models.py:1675 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Ugyldig betalingsmetode: {payment_method} fra {available_payment_methods}!" -#: engine/core/models.py:1805 +#: engine/core/models.py:1806 msgid "" "Manages user feedback for products. This class is designed to capture and " "store user feedback for specific products that they have purchased. It " @@ -2574,40 +2575,41 @@ msgid "" "product in the order, and a user-assigned rating. The class uses database " "fields to effectively model and manage feedback data." msgstr "" -"Håndterer brukernes tilbakemeldinger på produkter. Denne klassen er utformet " -"for å fange opp og lagre tilbakemeldinger fra brukerne om spesifikke " +"Håndterer brukernes tilbakemeldinger på produkter. Denne klassen er utformet" +" for å fange opp og lagre tilbakemeldinger fra brukerne om spesifikke " "produkter de har kjøpt. Den inneholder attributter for å lagre " "brukerkommentarer, en referanse til det relaterte produktet i bestillingen " "og en brukertildelt vurdering. Klassen bruker databasefelt for å modellere " "og administrere tilbakemeldingsdata på en effektiv måte." -#: engine/core/models.py:1817 +#: engine/core/models.py:1818 msgid "user-provided comments about their experience with the product" msgstr "Brukerkommentarer om deres erfaringer med produktet" -#: engine/core/models.py:1818 +#: engine/core/models.py:1819 msgid "feedback comments" msgstr "Tilbakemeldinger og kommentarer" -#: engine/core/models.py:1826 -msgid "references the specific product in an order that this feedback is about" +#: engine/core/models.py:1827 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Refererer til det spesifikke produktet i en ordre som denne tilbakemeldingen " -"handler om" +"Refererer til det spesifikke produktet i en ordre som denne tilbakemeldingen" +" handler om" -#: engine/core/models.py:1828 +#: engine/core/models.py:1829 msgid "related order product" msgstr "Relatert bestillingsprodukt" -#: engine/core/models.py:1833 +#: engine/core/models.py:1834 msgid "user-assigned rating for the product" msgstr "Brukertildelt vurdering for produktet" -#: engine/core/models.py:1834 +#: engine/core/models.py:1835 msgid "product rating" msgstr "Produktvurdering" -#: engine/core/models.py:1854 +#: engine/core/models.py:1855 msgid "" "Represents products associated with orders and their attributes. The " "OrderProduct model maintains information about a product that is part of an " @@ -2630,130 +2632,130 @@ msgstr "" "Modellen integreres med Order- og Product-modellene og lagrer en referanse " "til disse." -#: engine/core/models.py:1869 +#: engine/core/models.py:1870 msgid "the price paid by the customer for this product at purchase time" msgstr "Prisen kunden betalte for dette produktet på kjøpstidspunktet" -#: engine/core/models.py:1870 +#: engine/core/models.py:1871 msgid "purchase price at order time" msgstr "Innkjøpspris på bestillingstidspunktet" -#: engine/core/models.py:1875 +#: engine/core/models.py:1876 msgid "internal comments for admins about this ordered product" msgstr "Interne kommentarer for administratorer om dette bestilte produktet" -#: engine/core/models.py:1876 +#: engine/core/models.py:1877 msgid "internal comments" msgstr "Interne kommentarer" -#: engine/core/models.py:1882 +#: engine/core/models.py:1883 msgid "user notifications" msgstr "Brukervarsler" -#: engine/core/models.py:1887 +#: engine/core/models.py:1888 msgid "json representation of this item's attributes" msgstr "JSON-representasjon av dette elementets attributter" -#: engine/core/models.py:1888 +#: engine/core/models.py:1889 msgid "ordered product attributes" msgstr "Bestilte produktegenskaper" -#: engine/core/models.py:1893 +#: engine/core/models.py:1894 msgid "reference to the parent order that contains this product" msgstr "" "Referanse til den overordnede bestillingen som inneholder dette produktet" -#: engine/core/models.py:1894 +#: engine/core/models.py:1895 msgid "parent order" msgstr "Overordnet ordre" -#: engine/core/models.py:1903 +#: engine/core/models.py:1904 msgid "the specific product associated with this order line" msgstr "Det spesifikke produktet som er knyttet til denne ordrelinjen" -#: engine/core/models.py:1910 +#: engine/core/models.py:1911 msgid "quantity of this specific product in the order" msgstr "Antall av dette spesifikke produktet i bestillingen" -#: engine/core/models.py:1911 +#: engine/core/models.py:1912 msgid "product quantity" msgstr "Produktmengde" -#: engine/core/models.py:1918 +#: engine/core/models.py:1919 msgid "current status of this product in the order" msgstr "Nåværende status for dette produktet i bestillingen" -#: engine/core/models.py:1919 +#: engine/core/models.py:1920 msgid "product line status" msgstr "Status for produktlinjen" -#: engine/core/models.py:1986 +#: engine/core/models.py:1987 msgid "order product must have an order" msgstr "Orderproduct må ha en tilknyttet ordre!" -#: engine/core/models.py:1988 +#: engine/core/models.py:1989 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Feil handling angitt for tilbakemelding: {action}!" -#: engine/core/models.py:2005 +#: engine/core/models.py:2006 msgid "you cannot feedback an order which is not received" msgstr "du kan ikke gi tilbakemelding på en bestilling som ikke er mottatt" -#: engine/core/models.py:2014 +#: engine/core/models.py:2015 msgid "name" msgstr "Navn" -#: engine/core/models.py:2016 +#: engine/core/models.py:2017 msgid "URL of the integration" msgstr "URL-adressen til integrasjonen" -#: engine/core/models.py:2019 +#: engine/core/models.py:2020 msgid "authentication credentials" msgstr "Legitimasjon for autentisering" -#: engine/core/models.py:2042 +#: engine/core/models.py:2043 msgid "you can only have one default CRM provider" msgstr "Du kan bare ha én standard CRM-leverandør" -#: engine/core/models.py:2052 +#: engine/core/models.py:2053 msgid "CRM" msgstr "CRM" -#: engine/core/models.py:2053 +#: engine/core/models.py:2054 msgid "CRMs" msgstr "CRM" -#: engine/core/models.py:2069 +#: engine/core/models.py:2070 msgid "order CRM link" msgstr "Ordre CRM-kobling" -#: engine/core/models.py:2070 +#: engine/core/models.py:2071 msgid "orders CRM links" msgstr "CRM-koblinger for bestillinger" -#: engine/core/models.py:2075 +#: engine/core/models.py:2076 msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" -"Representerer nedlastingsfunksjonaliteten for digitale ressurser knyttet til " -"bestillinger. DigitalAssetDownload-klassen gir mulighet til å administrere " +"Representerer nedlastingsfunksjonaliteten for digitale ressurser knyttet til" +" bestillinger. DigitalAssetDownload-klassen gir mulighet til å administrere " "og få tilgang til nedlastinger knyttet til bestillingsprodukter. Den " "inneholder informasjon om det tilknyttede bestillingsproduktet, antall " "nedlastinger og om ressursen er offentlig synlig. Den inneholder en metode " "for å generere en URL for nedlasting av ressursen når den tilknyttede " "bestillingen har status som fullført." -#: engine/core/models.py:2091 +#: engine/core/models.py:2092 msgid "download" msgstr "Last ned" -#: engine/core/models.py:2092 +#: engine/core/models.py:2093 msgid "downloads" msgstr "Nedlastinger" @@ -2954,13 +2956,12 @@ msgstr "Hallo %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"Takk for din bestilling #%(order.pk)s! Vi er glade for å informere deg om at " -"vi har tatt bestillingen din i arbeid. Nedenfor er detaljene i bestillingen " -"din:" +"Takk for din bestilling #%(order.pk)s! Vi er glade for å informere deg om at" +" vi har tatt bestillingen din i arbeid. Nedenfor er detaljene i bestillingen" +" din:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -3070,8 +3071,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Takk for bestillingen din! Vi er glade for å kunne bekrefte kjøpet ditt. " @@ -3102,11 +3102,11 @@ msgstr "" "Alle rettigheter\n" " forbeholdt" -#: engine/core/utils/caching.py:48 +#: engine/core/utils/caching.py:49 msgid "both data and timeout are required" msgstr "Både data og tidsavbrudd er påkrevd" -#: engine/core/utils/caching.py:51 +#: engine/core/utils/caching.py:52 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Ugyldig tidsavbruddsverdi, den må være mellom 0 og 216000 sekunder" @@ -3138,21 +3138,21 @@ msgstr "Du har ikke tillatelse til å utføre denne handlingen." msgid "NOMINATIM_URL must be configured." msgstr "Parameteren NOMINATIM_URL må være konfigurert!" -#: engine/core/validators.py:21 +#: engine/core/validators.py:23 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Bildedimensjonene bør ikke overstige b{max_width} x h{max_height} piksler!" -#: engine/core/views.py:105 +#: engine/core/views.py:104 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -"Håndterer forespørselen om områdekartindeksen og returnerer et XML-svar. Den " -"sørger for at svaret inneholder riktig innholdstypeoverskrift for XML." +"Håndterer forespørselen om områdekartindeksen og returnerer et XML-svar. Den" +" sørger for at svaret inneholder riktig innholdstypeoverskrift for XML." -#: engine/core/views.py:120 +#: engine/core/views.py:119 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3162,17 +3162,17 @@ msgstr "" "behandler forespørselen, henter det aktuelle detaljsvaret for områdekartet " "og angir overskriften Content-Type for XML." -#: engine/core/views.py:156 +#: engine/core/views.py:155 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returnerer en liste over språk som støttes, med tilhørende informasjon." -#: engine/core/views.py:183 +#: engine/core/views.py:182 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerer nettstedets parametere som et JSON-objekt." -#: engine/core/views.py:199 +#: engine/core/views.py:198 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3180,79 +3180,70 @@ msgstr "" "Håndterer cache-operasjoner som lesing og innstilling av cachedata med en " "spesifisert nøkkel og tidsavbrudd." -#: engine/core/views.py:221 +#: engine/core/views.py:220 msgid "Handles `contact us` form submissions." msgstr "Håndterer innsendinger av `kontakt oss`-skjemaer." -#: engine/core/views.py:237 +#: engine/core/views.py:236 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -"Håndterer forespørsler om behandling og validering av URL-er fra innkommende " -"POST-forespørsler." +"Håndterer forespørsler om behandling og validering av URL-er fra innkommende" +" POST-forespørsler." -#: engine/core/views.py:274 +#: engine/core/views.py:273 msgid "Handles global search queries." msgstr "Håndterer globale søk." -#: engine/core/views.py:290 +#: engine/core/views.py:289 msgid "Handles the logic of buying as a business without registration." msgstr "Håndterer logikken med å kjøpe som en bedrift uten registrering." -#: engine/core/views.py:338 +#: engine/core/views.py:337 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" -"Håndterer nedlastingen av en digital ressurs som er knyttet til en " -"bestilling.\n" -"Denne funksjonen forsøker å levere den digitale ressursfilen som ligger i " -"lagringskatalogen til prosjektet. Hvis filen ikke blir funnet, vises en HTTP " -"404-feil for å indikere at ressursen ikke er tilgjengelig." +"Håndterer nedlastingen av en digital ressurs som er knyttet til en bestilling.\n" +"Denne funksjonen forsøker å levere den digitale ressursfilen som ligger i lagringskatalogen til prosjektet. Hvis filen ikke blir funnet, vises en HTTP 404-feil for å indikere at ressursen ikke er tilgjengelig." -#: engine/core/views.py:349 +#: engine/core/views.py:348 msgid "order_product_uuid is required" msgstr "order_product_uuid er påkrevd" -#: engine/core/views.py:356 +#: engine/core/views.py:355 msgid "order product does not exist" msgstr "ordreproduktet eksisterer ikke" -#: engine/core/views.py:359 +#: engine/core/views.py:358 msgid "you can only download the digital asset once" msgstr "Du kan bare laste ned den digitale ressursen én gang" -#: engine/core/views.py:363 +#: engine/core/views.py:362 msgid "the order must be paid before downloading the digital asset" msgstr "bestillingen må betales før nedlasting av den digitale ressursen" -#: engine/core/views.py:370 +#: engine/core/views.py:369 msgid "the order product does not have a product" msgstr "Ordreproduktet har ikke et produkt" -#: engine/core/views.py:414 +#: engine/core/views.py:412 msgid "favicon not found" msgstr "favicon ble ikke funnet" -#: engine/core/views.py:419 +#: engine/core/views.py:418 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Håndterer forespørsler om faviconet til et nettsted.\n" -"Denne funksjonen forsøker å vise favicon-filen som ligger i den statiske " -"katalogen i prosjektet. Hvis favicon-filen ikke blir funnet, vises en HTTP " -"404-feil for å indikere at ressursen ikke er tilgjengelig." +"Denne funksjonen forsøker å vise favicon-filen som ligger i den statiske katalogen i prosjektet. Hvis favicon-filen ikke blir funnet, vises en HTTP 404-feil for å indikere at ressursen ikke er tilgjengelig." -#: engine/core/views.py:431 +#: engine/core/views.py:432 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Omdirigerer forespørselen til admin-indekssiden. Funksjonen håndterer " @@ -3260,16 +3251,16 @@ msgstr "" "administrasjonsgrensesnittet. Den bruker Djangos `redirect`-funksjon for å " "håndtere HTTP-omdirigeringen." -#: engine/core/views.py:443 +#: engine/core/views.py:445 msgid "Returns current version of the eVibes. " msgstr "Returnerer gjeldende versjon av eVibes." -#: engine/core/views.py:672 engine/core/views.py:687 +#: engine/core/views.py:674 engine/core/views.py:689 #, python-format msgid "Revenue & Orders (last %(days)d)" msgstr "Inntekter og bestillinger (siste %(days)d)" -#: engine/core/views.py:868 +#: engine/core/views.py:870 msgid "Returns custom variables for Dashboard. " msgstr "Returnerer egendefinerte variabler for Dashboard." @@ -3289,10 +3280,11 @@ msgstr "" #: engine/core/viewsets.py:160 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Representerer et visningssett for håndtering av AttributeGroup-objekter. " "Håndterer operasjoner knyttet til AttributeGroup, inkludert filtrering, " @@ -3309,20 +3301,20 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"Håndterer operasjoner knyttet til Attribute-objekter i applikasjonen. Tilbyr " -"et sett med API-endepunkter for interaksjon med attributtdata. Denne klassen " -"håndterer spørring, filtrering og serialisering av Attribute-objekter, noe " -"som gir dynamisk kontroll over dataene som returneres, for eksempel " -"filtrering etter bestemte felt eller henting av detaljert versus forenklet " -"informasjon avhengig av forespørselen." +"Håndterer operasjoner knyttet til Attribute-objekter i applikasjonen. Tilbyr" +" et sett med API-endepunkter for interaksjon med attributtdata. Denne " +"klassen håndterer spørring, filtrering og serialisering av Attribute-" +"objekter, noe som gir dynamisk kontroll over dataene som returneres, for " +"eksempel filtrering etter bestemte felt eller henting av detaljert versus " +"forenklet informasjon avhengig av forespørselen." #: engine/core/viewsets.py:198 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Et visningssett for administrasjon av AttributeValue-objekter. Dette " "visningssettet inneholder funksjonalitet for å liste opp, hente, opprette, " @@ -3371,8 +3363,8 @@ msgstr "" "filtrering, serialisering og operasjoner på spesifikke forekomster. Den " "utvides fra `EvibesViewSet` for å bruke felles funksjonalitet og integreres " "med Django REST-rammeverket for RESTful API-operasjoner. Inkluderer metoder " -"for å hente produktdetaljer, tildele tillatelser og få tilgang til relaterte " -"tilbakemeldinger om et produkt." +"for å hente produktdetaljer, tildele tillatelser og få tilgang til relaterte" +" tilbakemeldinger om et produkt." #: engine/core/viewsets.py:605 msgid "" @@ -3384,9 +3376,9 @@ msgid "" msgstr "" "Representerer et visningssett for håndtering av Vendor-objekter. Dette " "visningssettet gjør det mulig å hente, filtrere og serialisere Vendor-data. " -"Den definerer spørresettet, filterkonfigurasjonene og serialiseringsklassene " -"som brukes til å håndtere ulike handlinger. Formålet med denne klassen er å " -"gi strømlinjeformet tilgang til Vendor-relaterte ressurser gjennom Django " +"Den definerer spørresettet, filterkonfigurasjonene og serialiseringsklassene" +" som brukes til å håndtere ulike handlinger. Formålet med denne klassen er å" +" gi strømlinjeformet tilgang til Vendor-relaterte ressurser gjennom Django " "REST-rammeverket." #: engine/core/viewsets.py:625 @@ -3394,8 +3386,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Representasjon av et visningssett som håndterer Feedback-objekter. Denne " @@ -3411,9 +3403,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet for håndtering av bestillinger og relaterte operasjoner. Denne " @@ -3422,22 +3414,22 @@ msgstr "" "ordreoperasjoner, for eksempel å legge til eller fjerne produkter, utføre " "kjøp for både registrerte og uregistrerte brukere og hente den aktuelle " "autentiserte brukerens ventende bestillinger. ViewSet bruker flere " -"serialisatorer basert på den spesifikke handlingen som utføres, og håndhever " -"tillatelser i samsvar med dette under samhandling med ordredata." +"serialisatorer basert på den spesifikke handlingen som utføres, og håndhever" +" tillatelser i samsvar med dette under samhandling med ordredata." #: engine/core/viewsets.py:914 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Tilbyr et visningssett for håndtering av OrderProduct-enheter. Dette " -"visningssettet muliggjør CRUD-operasjoner og egendefinerte handlinger som er " -"spesifikke for OrderProduct-modellen. Det inkluderer filtrering, kontroll av " -"tillatelser og bytte av serializer basert på den forespurte handlingen. I " -"tillegg inneholder det en detaljert handling for håndtering av " +"visningssettet muliggjør CRUD-operasjoner og egendefinerte handlinger som er" +" spesifikke for OrderProduct-modellen. Det inkluderer filtrering, kontroll " +"av tillatelser og bytte av serializer basert på den forespurte handlingen. I" +" tillegg inneholder det en detaljert handling for håndtering av " "tilbakemeldinger på OrderProduct-instanser" #: engine/core/viewsets.py:974 @@ -3449,8 +3441,8 @@ msgid "" "Manages the retrieval and handling of PromoCode instances through various " "API actions." msgstr "" -"Administrerer henting og håndtering av PromoCode-instanser gjennom ulike API-" -"handlinger." +"Administrerer henting og håndtering av PromoCode-instanser gjennom ulike " +"API-handlinger." #: engine/core/viewsets.py:1019 msgid "Represents a view set for managing promotions. " @@ -3464,8 +3456,8 @@ msgstr "Håndterer operasjoner knyttet til lagerdata i systemet." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3475,8 +3467,8 @@ msgstr "" "gjør det mulig å hente, endre og tilpasse produkter i ønskelisten. Dette " "ViewSetet legger til rette for funksjonalitet som å legge til, fjerne og " "utføre massehandlinger for ønskelisteprodukter. Tillatelseskontroller er " -"integrert for å sikre at brukere bare kan administrere sine egne ønskelister " -"med mindre eksplisitte tillatelser er gitt." +"integrert for å sikre at brukere bare kan administrere sine egne ønskelister" +" med mindre eksplisitte tillatelser er gitt." #: engine/core/viewsets.py:1183 msgid "" @@ -3486,11 +3478,11 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"Denne klassen tilbyr visningssettfunksjonalitet for håndtering av `Address`-" -"objekter. AddressViewSet-klassen muliggjør CRUD-operasjoner, filtrering og " -"egendefinerte handlinger knyttet til adresseenheter. Den inkluderer " -"spesialisert atferd for ulike HTTP-metoder, overstyring av serializer og " -"håndtering av tillatelser basert på forespørselskonteksten." +"Denne klassen tilbyr visningssettfunksjonalitet for håndtering av " +"`Address`-objekter. AddressViewSet-klassen muliggjør CRUD-operasjoner, " +"filtrering og egendefinerte handlinger knyttet til adresseenheter. Den " +"inkluderer spesialisert atferd for ulike HTTP-metoder, overstyring av " +"serializer og håndtering av tillatelser basert på forespørselskonteksten." #: engine/core/viewsets.py:1254 #, python-brace-format diff --git a/engine/core/locale/pl_PL/LC_MESSAGES/django.mo b/engine/core/locale/pl_PL/LC_MESSAGES/django.mo index 00f108dfe1bf8e0d2ed9aaa63ab03febdd204eed..cb9bcd37128e760ac233a4b2fe52fc6135c0b2d2 100644 GIT binary patch delta 14881 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