diff --git a/blog/locale/ar_AR/LC_MESSAGES/django.mo b/blog/locale/ar_AR/LC_MESSAGES/django.mo index f313ef1e..b577c7ff 100644 Binary files a/blog/locale/ar_AR/LC_MESSAGES/django.mo and b/blog/locale/ar_AR/LC_MESSAGES/django.mo differ diff --git a/blog/locale/ar_AR/LC_MESSAGES/django.po b/blog/locale/ar_AR/LC_MESSAGES/django.po index 889822a7..14540dcb 100644 --- a/blog/locale/ar_AR/LC_MESSAGES/django.po +++ b/blog/locale/ar_AR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/cs_CZ/LC_MESSAGES/django.mo b/blog/locale/cs_CZ/LC_MESSAGES/django.mo index c507d90f..12ba80d3 100644 Binary files a/blog/locale/cs_CZ/LC_MESSAGES/django.mo and b/blog/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/blog/locale/cs_CZ/LC_MESSAGES/django.po b/blog/locale/cs_CZ/LC_MESSAGES/django.po index 5ede773d..7eb3c93c 100644 --- a/blog/locale/cs_CZ/LC_MESSAGES/django.po +++ b/blog/locale/cs_CZ/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/da_DK/LC_MESSAGES/django.mo b/blog/locale/da_DK/LC_MESSAGES/django.mo index af1ba23a..a2406aa0 100644 Binary files a/blog/locale/da_DK/LC_MESSAGES/django.mo and b/blog/locale/da_DK/LC_MESSAGES/django.mo differ diff --git a/blog/locale/da_DK/LC_MESSAGES/django.po b/blog/locale/da_DK/LC_MESSAGES/django.po index 8b725448..f569ce9d 100644 --- a/blog/locale/da_DK/LC_MESSAGES/django.po +++ b/blog/locale/da_DK/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/de_DE/LC_MESSAGES/django.mo b/blog/locale/de_DE/LC_MESSAGES/django.mo index dc0b5861..b03f14c3 100644 Binary files a/blog/locale/de_DE/LC_MESSAGES/django.mo and b/blog/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/blog/locale/de_DE/LC_MESSAGES/django.po b/blog/locale/de_DE/LC_MESSAGES/django.po index 9774aacc..2bbda835 100644 --- a/blog/locale/de_DE/LC_MESSAGES/django.po +++ b/blog/locale/de_DE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/en_GB/LC_MESSAGES/django.mo b/blog/locale/en_GB/LC_MESSAGES/django.mo index b3b2a30b..ba25a2e5 100644 Binary files a/blog/locale/en_GB/LC_MESSAGES/django.mo and b/blog/locale/en_GB/LC_MESSAGES/django.mo differ diff --git a/blog/locale/en_GB/LC_MESSAGES/django.po b/blog/locale/en_GB/LC_MESSAGES/django.po index edb971dd..49bf4312 100644 --- a/blog/locale/en_GB/LC_MESSAGES/django.po +++ b/blog/locale/en_GB/LC_MESSAGES/django.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/en_US/LC_MESSAGES/django.mo b/blog/locale/en_US/LC_MESSAGES/django.mo index 4f1d5f1f..954e02fd 100644 Binary files a/blog/locale/en_US/LC_MESSAGES/django.mo and b/blog/locale/en_US/LC_MESSAGES/django.mo differ diff --git a/blog/locale/en_US/LC_MESSAGES/django.po b/blog/locale/en_US/LC_MESSAGES/django.po index 7d0d3dae..6159466b 100644 --- a/blog/locale/en_US/LC_MESSAGES/django.po +++ b/blog/locale/en_US/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/es_ES/LC_MESSAGES/django.mo b/blog/locale/es_ES/LC_MESSAGES/django.mo index f993a3d2..f7649ab3 100644 Binary files a/blog/locale/es_ES/LC_MESSAGES/django.mo and b/blog/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/blog/locale/es_ES/LC_MESSAGES/django.po b/blog/locale/es_ES/LC_MESSAGES/django.po index a09ee410..928571ed 100644 --- a/blog/locale/es_ES/LC_MESSAGES/django.po +++ b/blog/locale/es_ES/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/fr_FR/LC_MESSAGES/django.mo b/blog/locale/fr_FR/LC_MESSAGES/django.mo index ffbc0cc0..dd351f63 100644 Binary files a/blog/locale/fr_FR/LC_MESSAGES/django.mo and b/blog/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/blog/locale/fr_FR/LC_MESSAGES/django.po b/blog/locale/fr_FR/LC_MESSAGES/django.po index 6faa55df..4bcef1f1 100644 --- a/blog/locale/fr_FR/LC_MESSAGES/django.po +++ b/blog/locale/fr_FR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/hi_IN/LC_MESSAGES/django.mo b/blog/locale/hi_IN/LC_MESSAGES/django.mo index 47c1f925..980937eb 100644 Binary files a/blog/locale/hi_IN/LC_MESSAGES/django.mo and b/blog/locale/hi_IN/LC_MESSAGES/django.mo differ diff --git a/blog/locale/hi_IN/LC_MESSAGES/django.po b/blog/locale/hi_IN/LC_MESSAGES/django.po index 6b340223..f892e854 100644 --- a/blog/locale/hi_IN/LC_MESSAGES/django.po +++ b/blog/locale/hi_IN/LC_MESSAGES/django.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/it_IT/LC_MESSAGES/django.mo b/blog/locale/it_IT/LC_MESSAGES/django.mo index beba2141..2228c1df 100644 Binary files a/blog/locale/it_IT/LC_MESSAGES/django.mo and b/blog/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/blog/locale/it_IT/LC_MESSAGES/django.po b/blog/locale/it_IT/LC_MESSAGES/django.po index 214c3409..3726ef8c 100644 --- a/blog/locale/it_IT/LC_MESSAGES/django.po +++ b/blog/locale/it_IT/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/ja_JP/LC_MESSAGES/django.mo b/blog/locale/ja_JP/LC_MESSAGES/django.mo index 0bea06f8..3d233914 100644 Binary files a/blog/locale/ja_JP/LC_MESSAGES/django.mo and b/blog/locale/ja_JP/LC_MESSAGES/django.mo differ diff --git a/blog/locale/ja_JP/LC_MESSAGES/django.po b/blog/locale/ja_JP/LC_MESSAGES/django.po index 21d9d5bc..19983ebf 100644 --- a/blog/locale/ja_JP/LC_MESSAGES/django.po +++ b/blog/locale/ja_JP/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/kk_KZ/LC_MESSAGES/django.mo b/blog/locale/kk_KZ/LC_MESSAGES/django.mo index 47c1f925..980937eb 100644 Binary files a/blog/locale/kk_KZ/LC_MESSAGES/django.mo and b/blog/locale/kk_KZ/LC_MESSAGES/django.mo differ diff --git a/blog/locale/kk_KZ/LC_MESSAGES/django.po b/blog/locale/kk_KZ/LC_MESSAGES/django.po index 6b340223..f892e854 100644 --- a/blog/locale/kk_KZ/LC_MESSAGES/django.po +++ b/blog/locale/kk_KZ/LC_MESSAGES/django.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/nl_NL/LC_MESSAGES/django.mo b/blog/locale/nl_NL/LC_MESSAGES/django.mo index fad5266d..d5e1750d 100644 Binary files a/blog/locale/nl_NL/LC_MESSAGES/django.mo and b/blog/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/blog/locale/nl_NL/LC_MESSAGES/django.po b/blog/locale/nl_NL/LC_MESSAGES/django.po index e14bcdc1..ef79e750 100644 --- a/blog/locale/nl_NL/LC_MESSAGES/django.po +++ b/blog/locale/nl_NL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/pl_PL/LC_MESSAGES/django.mo b/blog/locale/pl_PL/LC_MESSAGES/django.mo index 135950e8..a6224f6d 100644 Binary files a/blog/locale/pl_PL/LC_MESSAGES/django.mo and b/blog/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/blog/locale/pl_PL/LC_MESSAGES/django.po b/blog/locale/pl_PL/LC_MESSAGES/django.po index 3827d474..9d678595 100644 --- a/blog/locale/pl_PL/LC_MESSAGES/django.po +++ b/blog/locale/pl_PL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/pt_BR/LC_MESSAGES/django.mo b/blog/locale/pt_BR/LC_MESSAGES/django.mo index b9b9daa1..a6bf1ad6 100644 Binary files a/blog/locale/pt_BR/LC_MESSAGES/django.mo and b/blog/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/blog/locale/pt_BR/LC_MESSAGES/django.po b/blog/locale/pt_BR/LC_MESSAGES/django.po index 4b1addfc..ce257ef1 100644 --- a/blog/locale/pt_BR/LC_MESSAGES/django.po +++ b/blog/locale/pt_BR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/ro_RO/LC_MESSAGES/django.mo b/blog/locale/ro_RO/LC_MESSAGES/django.mo index 1f2f9c95..69d7d9e6 100644 Binary files a/blog/locale/ro_RO/LC_MESSAGES/django.mo and b/blog/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/blog/locale/ro_RO/LC_MESSAGES/django.po b/blog/locale/ro_RO/LC_MESSAGES/django.po index 2e6dce42..d59e6382 100644 --- a/blog/locale/ro_RO/LC_MESSAGES/django.po +++ b/blog/locale/ro_RO/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/ru_RU/LC_MESSAGES/django.mo b/blog/locale/ru_RU/LC_MESSAGES/django.mo index c310a3b1..88cc602d 100644 Binary files a/blog/locale/ru_RU/LC_MESSAGES/django.mo and b/blog/locale/ru_RU/LC_MESSAGES/django.mo differ diff --git a/blog/locale/ru_RU/LC_MESSAGES/django.po b/blog/locale/ru_RU/LC_MESSAGES/django.po index 148f0d82..3d1a5a32 100644 --- a/blog/locale/ru_RU/LC_MESSAGES/django.po +++ b/blog/locale/ru_RU/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/blog/locale/zh_Hans/LC_MESSAGES/django.mo b/blog/locale/zh_Hans/LC_MESSAGES/django.mo index d034c894..fb201c3b 100644 Binary files a/blog/locale/zh_Hans/LC_MESSAGES/django.mo and b/blog/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/blog/locale/zh_Hans/LC_MESSAGES/django.po b/blog/locale/zh_Hans/LC_MESSAGES/django.po index 22e73742..f4dd599c 100644 --- a/blog/locale/zh_Hans/LC_MESSAGES/django.po +++ b/blog/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/core/admin.py b/core/admin.py index d7bfbcf0..5a2de805 100644 --- a/core/admin.py +++ b/core/admin.py @@ -67,11 +67,22 @@ class FieldsetsMixin: fieldsets.append((_("relations"), {"fields": self.relation_fields})) opts = self.model._meta + meta_fields = [] + if any(f.name == "uuid" for f in opts.fields): - if any(f.name == "slug" for f in opts.fields): - fieldsets.append((_("metadata"), {"fields": ["uuid", "slug"]})) - else: - fieldsets.append((_("metadata"), {"fields": ["uuid"]})) + meta_fields.append("uuid") + + if any(f.name == "slug" for f in opts.fields): + meta_fields.append("slug") + + if any(f.name == "sku" for f in opts.fields): + meta_fields.append("sku") + + if any(f.name == "human_readable_id" for f in opts.fields): + meta_fields.append("sku") + + if meta_fields: + fieldsets.append((_("metadata"), {"fields": meta_fields})) ts = [] for name in ("created", "modified"): @@ -243,8 +254,8 @@ class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: # noinspection PyClassVar model = Product # type: ignore [misc] list_display = ( + "sku", "name", - "partnumber", "is_active", "category", "brand", @@ -269,6 +280,7 @@ class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: "category__slug", "uuid", "slug", + "sku", ) readonly_fields = ("slug", "uuid", "modified", "created") autocomplete_fields = ("category", "brand", "tags") diff --git a/core/docs/drf/viewsets.py b/core/docs/drf/viewsets.py index 2eeead63..83a9e713 100644 --- a/core/docs/drf/viewsets.py +++ b/core/docs/drf/viewsets.py @@ -152,7 +152,7 @@ CATEGORY_SCHEMA = { responses={status.HTTP_200_OK: CategoryDetailSerializer(), **BASE_ERRORS}, ), "seo": extend_schema( - summary=_("SEO Meta Snapshot"), + summary=_("SEO Meta snapshot"), description=_("returns a snapshot of the category's SEO meta data"), parameters=[ OpenApiParameter( @@ -550,7 +550,7 @@ PRODUCT_SCHEMA = { }, ), "seo": extend_schema( - summary=_("SEO Meta Snapshot"), + summary=_("SEO Meta snapshot"), description=_("returns a snapshot of the product's SEO meta data"), parameters=[ OpenApiParameter( diff --git a/core/filters.py b/core/filters.py index b773c3b7..aa6c138c 100644 --- a/core/filters.py +++ b/core/filters.py @@ -78,6 +78,7 @@ class ProductFilter(FilterSet): method="filter_include_personal_ordered", label=_("Include personal ordered"), ) + sku = CharFilter(field_name="sku", lookup_expr="iexact", label=_("SKU")) order_by = OrderingFilter( fields=( @@ -88,6 +89,7 @@ class ProductFilter(FilterSet): ("created", "created"), ("modified", "modified"), ("price_order", "price"), + ("sku", "sku"), ("?", "random"), ), initial="uuid", @@ -107,6 +109,7 @@ class ProductFilter(FilterSet): "is_active", "tags", "slug", + "sku", "min_price", "max_price", "brand", diff --git a/core/graphene/object_types.py b/core/graphene/object_types.py index 41d7566f..b2a5c906 100644 --- a/core/graphene/object_types.py +++ b/core/graphene/object_types.py @@ -114,7 +114,7 @@ class AttributeGroupType(DjangoObjectType): class BrandType(DjangoObjectType): categories = List(lambda: CategoryType, description=_("categories")) - seo_meta = Field(SEOMetaType, description=_("SEO meta snapshot")) + seo_meta = Field(SEOMetaType, description=_("SEO Meta snapshot")) class Meta: model = Brand @@ -204,7 +204,7 @@ class CategoryType(DjangoObjectType): ) tags = DjangoFilterConnectionField(lambda: CategoryTagType, description=_("tags for this category")) products = DjangoFilterConnectionField(lambda: ProductType, description=_("products in this category")) - seo_meta = Field(SEOMetaType, description=_("SEO meta snapshot")) + seo_meta = Field(SEOMetaType, description=_("SEO Meta snapshot")) class Meta: model = Category @@ -500,7 +500,7 @@ class ProductType(DjangoObjectType): quantity = Float(description=_("quantity")) feedbacks_count = Int(description=_("number of feedbacks")) personal_orders_only = Boolean(description=_("only available for personal orders")) - seo_meta = Field(SEOMetaType, description=_("SEO meta snapshot")) + seo_meta = Field(SEOMetaType, description=_("SEO Meta snapshot")) class Meta: model = Product diff --git a/core/locale/ar_AR/LC_MESSAGES/django.mo b/core/locale/ar_AR/LC_MESSAGES/django.mo index c51e2f9e..9f8acbd7 100644 Binary files a/core/locale/ar_AR/LC_MESSAGES/django.mo and b/core/locale/ar_AR/LC_MESSAGES/django.mo differ diff --git a/core/locale/ar_AR/LC_MESSAGES/django.po b/core/locale/ar_AR/LC_MESSAGES/django.po index 3203c1fe..9344f44a 100644 --- a/core/locale/ar_AR/LC_MESSAGES/django.po +++ b/core/locale/ar_AR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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 "نشط" #: core/abstract.py:20 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 "" "إذا تم تعيينه على خطأ، لا يمكن للمستخدمين رؤية هذا الكائن دون الحاجة إلى إذن" @@ -59,70 +60,70 @@ msgstr "جنرال لواء" msgid "relations" msgstr "العلاقات" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "البيانات الوصفية" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "الطوابع الزمنية" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "تنشيط المحدد _PH_0__%(verbose_name_plural)s" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "تم تفعيل العناصر المختارة!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "إلغاء التنشيط المحدد _PH_0_%(verbose_name_plural)s" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "تم إلغاء تنشيط العناصر المحددة!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "قيمة السمة" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "قيم السمات" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "الصورة" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "الصور" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "المخزون" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "الأسهم" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "طلب المنتج" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "اطلب المنتجات" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "الأطفال" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "التكوين" @@ -184,8 +185,7 @@ msgid "" "apply key, data and timeout with authentication to write data to cache." msgstr "" "تطبيق مفتاح فقط لقراءة البيانات المسموح بها من ذاكرة التخزين المؤقت.\n" -"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين " -"المؤقت." +"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين المؤقت." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -219,186 +219,202 @@ msgstr "" "اشترِ طلبًا كعمل تجاري، باستخدام \"المنتجات\" المتوفرة مع \"معرّف_المنتج\" " "و\"السمات\"." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "سرد كل مجموعات السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "استرداد مجموعة سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "إنشاء مجموعة سمات" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "حذف مجموعة سمات" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "إعادة كتابة مجموعة سمات موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "إعادة كتابة بعض حقول مجموعة سمات موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "سرد جميع السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "استرداد سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "إنشاء سمة" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "حذف سمة" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "إعادة كتابة سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "إعادة كتابة بعض حقول سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "سرد جميع قيم السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "استرداد قيمة سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "إنشاء قيمة السمة" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "حذف قيمة سمة" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "إعادة كتابة قيمة سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "إعادة كتابة بعض حقول قيمة سمة موجودة حفظ غير قابل للتعديل" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "قائمة بجميع الفئات (عرض بسيط)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "استرداد فئة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "إنشاء فئة" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "حذف فئة" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "إعادة كتابة فئة موجودة حفظ غير المواد غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "إعادة كتابة بعض حقول فئة موجودة حفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "لقطة تعريفية لتحسين محركات البحث SEO" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "إرجاع لقطة من البيانات الوصفية لتحسين محركات البحث الخاصة بالفئة" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "معرّف الفئة UUID أو سبيكة" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "قائمة بجميع الفئات (عرض بسيط)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "بالنسبة للمستخدمين من غير الموظفين، يتم إرجاع الطلبات الخاصة بهم فقط." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "تصفية الطلبات ذات وقت_الشراء >= تاريخ ووقت الشراء هذا ISO 8601" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "تصفية الطلبات ذات وقت_الشراء <= تاريخ ووقت الشراء ISO 8601 هذا" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "تصفية حسب الطلب الدقيق UUID" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "التصفية حسب مُعرِّف الطلب المقروء بشريًا بالضبط" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "تصفية حسب البريد الإلكتروني للمستخدم (مطابقة تامة غير حساسة لحالة الأحرف)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "تصفية حسب معرّف المستخدم UUID" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "تصفية حسب حالة الطلب (مطابقة سلسلة فرعية غير حساسة لحالة الأحرف)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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، معرف_بشري_مقروء، بريد_إلكتروني_مستخدم، مستخدم، " "حالة، إنشاء، تعديل، وقت_الشراء، عشوائي. البادئة بحرف \"-\" للترتيب التنازلي " "(على سبيل المثال \"-وقت_الشراء\")." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "استرداد فئة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "إنشاء سمة" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "لا يعمل مع المستخدمين من غير الموظفين." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "حذف سمة" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "إعادة كتابة فئة موجودة حفظ غير المواد غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "إعادة كتابة بعض حقول فئة موجودة حفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "سعر الشراء وقت الطلب" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -407,51 +423,51 @@ msgstr "" "ينهي أمر الشراء. إذا تم استخدام \"فرض_الرصيد\"، يتم إكمال عملية الشراء " "باستخدام رصيد المستخدم؛ إذا تم استخدام \"فرض_الدفع\"، يتم بدء المعاملة." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "شراء طلب شراء بدون إنشاء حساب" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "إنهاء طلب الشراء لمستخدم غير مسجل." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "إضافة منتج إلى الطلب" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "يضيف منتجًا إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "إضافة قائمة بالمنتجات المطلوب طلبها، لن يتم احتساب الكميات" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -"يضيف قائمة من المنتجات إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." +"يضيف قائمة من المنتجات إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" " +"المتوفرة." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "إزالة منتج من الطلب" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." +msgstr "يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "إزالة منتج من الطلب، لن يتم احتساب الكميات" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -459,223 +475,214 @@ msgstr "" "يزيل قائمة من المنتجات من الطلب باستخدام \"معرّف_المنتج\" و\"السمات\" " "المتوفرة." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "سرد جميع السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "بالنسبة للمستخدمين من غير الموظفين، يتم إرجاع قوائم الرغبات الخاصة بهم فقط." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "استرداد سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "إنشاء سمة" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "لا يعمل مع المستخدمين من غير الموظفين." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "حذف سمة" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "إعادة كتابة سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "إعادة كتابة بعض حقول سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "إضافة منتج إلى الطلب" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "يضيف منتجًا إلى قائمة أمنيات باستخدام 'product_uid' المتوفرة" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "إزالة منتج من قائمة الرغبات" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "يزيل منتجًا من قائمة أمنيات باستخدام 'product_uid' المتوفرة" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "إضافة العديد من المنتجات إلى قائمة الرغبات" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "يضيف العديد من المنتجات إلى قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "إزالة منتج من الطلب" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "يزيل العديد من المنتجات من قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "قائمة بجميع المنتجات (عرض بسيط)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(بالضبط) UUID المنتج" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(أيقونات) اسم المنتج" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(قائمة) أسماء الفئات، غير حساسة لحالة الأحرف" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(بالضبط) معرّف الفئة UUID" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(قائمة) أسماء العلامات، غير حساسة لحالة الأحرف" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) الحد الأدنى لسعر السهم" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) الحد الأقصى لسعر السهم" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(بالضبط) المنتجات النشطة فقط" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(أيكساكت) اسم العلامة التجارية" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(زط) الحد الأدنى لكمية المخزون" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(بالضبط) الرقمية مقابل المادية" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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، تصنيف، اسم، سبيكة، إنشاء، تعديل، سعر، عشوائي" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "استرداد منتج واحد (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "معرف المنتج UUID أو سبيكة المنتج" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "إنشاء منتج" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "إعادة كتابة منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "تحديث بعض حقول منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "حذف منتج" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "سرد جميع الملاحظات المسموح بها للمنتج" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "إرجاع لقطة من البيانات الوصفية لتحسين محركات البحث للمنتج" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "قائمة بجميع العناوين" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "استرجاع عنوان واحد" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "إنشاء عنوان جديد" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "حذف عنوان" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "تحديث عنوان كامل" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "تحديث جزئي للعنوان" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "إدخال عنوان الإكمال التلقائي" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "تطبيق docker compose exec تطبيق docker exec الشعر تشغيل إدارة python.py " @@ -684,169 +691,173 @@ msgstr "" "pl -l pt-br -l ro-ro -l ru-ru -l zh-hans -l zh-ans -a core -a geo -a geo -a " "payments -a vibes_auth -a blog" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "تحديد كمية النتائج، 1 < الحد < 10، الافتراضي: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "سرد جميع الملاحظات (عرض بسيط)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "استرداد تعليق واحد (عرض مفصل)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "إنشاء ملاحظات" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "حذف تعليق" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "إعادة كتابة ملاحظات حالية تحفظ المواد غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "إعادة كتابة بعض حقول الملاحظات الحالية التي تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "سرد جميع العلاقات بين الطلب والمنتج (عرض بسيط)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "استرداد علاقة طلب منتج واحد (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "إنشاء علاقة جديدة بين الطلب والمنتج" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "استبدال علاقة الطلب-المنتج الحالية" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "تحديث جزئي لعلاقة الطلب والمنتج الحالية" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "حذف علاقة الطلب-المنتج" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "إضافة أو إزالة الملاحظات على العلاقة بين الطلب والمنتج" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "لم يتم توفير مصطلح بحث." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "الاسم" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "الفئات" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "الفئات الرخويات" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "الوسوم" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "الحد الأدنى للسعر" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "ماكس برايس" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "نشط" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "العلامة التجارية" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "السمات" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "الكمية" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "سبيكة" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "هو رقمي" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "تضمين الفئات الفرعية" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "تضمين المنتجات المطلوبة شخصيًا" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "يجب أن يكون هناك category_uid لاستخدام علامة تضمين_الفئات_الفرعية" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "البحث (المعرف أو اسم المنتج أو رقم الجزء)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "تم الشراء بعد (شامل)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "تم الشراء من قبل (شامل)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "البريد الإلكتروني للمستخدم" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "معرّف المستخدم UUID" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "الحالة" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "معرّف قابل للقراءة من قبل الإنسان" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "الوالدين" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "الفئة الكاملة (تحتوي على منتج واحد على الأقل أو لا)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "المستوى" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "UUID المنتج" @@ -871,7 +882,7 @@ msgstr "البيانات المخزنة مؤقتاً" msgid "camelized JSON data from the requested URL" msgstr "بيانات JSON مجمّلة من عنوان URL المطلوب" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "يُسمح فقط بعناوين URL التي تبدأ ب http(s)://" @@ -902,7 +913,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "يرجى تقديم إما Order_uuid أو order_uid_hr_hr_id - متنافيان!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "جاء نوع خاطئ من طريقة order.buy(): {type(instance)!s}" @@ -955,8 +966,8 @@ msgstr "شراء طلبية" #: core/graphene/mutations.py:500 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" #: core/graphene/mutations.py:532 @@ -976,9 +987,9 @@ msgstr "طلب المنتج {order_product_uuid} غير موجود!" msgid "original address string provided by the user" msgstr "سلسلة العنوان الأصلي المقدمة من المستخدم" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} غير موجود: {uuid}!" @@ -991,96 +1002,97 @@ msgstr "يجب أن يكون الحد بين 1 و10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - يعمل مثل السحر" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "السمات" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "السمات المجمعة" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "مجموعات السمات" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "الفئات" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "العلامات التجارية" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "الفئات" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "النسبة المئوية للترميز" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 msgid "which attributes and values can be used for filtering this category." msgstr "ما هي السمات والقيم التي يمكن استخدامها لتصفية هذه الفئة." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "الحد الأدنى والحد الأقصى لأسعار المنتجات في هذه الفئة، إذا كانت متوفرة." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "العلامات الخاصة بهذه الفئة" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "المنتجات في هذه الفئة" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "البائعون" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "خط العرض (الإحداثي Y)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "خط الطول (الإحداثي X)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "كيفية" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "قيمة التصنيف من 1 إلى 10، شاملة، أو 0 إذا لم يتم تعيينها." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "يمثل ملاحظات من المستخدم." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "الإشعارات" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "تحميل الرابط الخاص بمنتج الطلب هذا إن أمكن" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "قائمة بطلب المنتجات بهذا الترتيب" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "عنوان إرسال الفواتير" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1088,51 +1100,51 @@ msgstr "" "عنوان الشحن لهذا الطلب، اترك العنوان فارغًا إذا كان هو نفسه عنوان إرسال " "الفواتير أو إذا لم يكن منطبقًا" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "السعر الإجمالي لهذا الطلب" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "إجمالي كمية المنتجات بالترتيب" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "هل جميع المنتجات في الطلب رقمي" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "المعاملات الخاصة بهذا الطلب" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "الطلبات" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "رابط الصورة" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "صور المنتج" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "الفئة" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "الملاحظات" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "العلامة التجارية" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "مجموعات السمات" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1140,7 +1152,7 @@ msgstr "مجموعات السمات" msgid "price" msgstr "السعر" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1148,31 +1160,35 @@ msgstr "السعر" msgid "quantity" msgstr "الكمية" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "عدد الملاحظات" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "المنتجات متاحة للطلبات الشخصية فقط" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "المنتجات" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "الرموز الترويجية" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "المنتجات المعروضة للبيع" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "العروض الترويجية" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "البائع" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1180,901 +1196,912 @@ msgstr "البائع" msgid "product" msgstr "المنتج" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "المنتجات المفضلة" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "قوائم التمنيات" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "المنتجات الموسومة" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "علامات المنتج" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "الفئات الموسومة" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "علامات الفئات" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "اسم المشروع" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "البريد الإلكتروني للشركة" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "اسم الشركة" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "عنوان الشركة" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "رقم هاتف الشركة" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -"\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم " -"المضيف" +"\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم" +" المضيف" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "مستخدم البريد الإلكتروني المضيف" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "الحد الأقصى لمبلغ السداد" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "الحد الأدنى لمبلغ السداد" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "بيانات التحليلات" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "بيانات الإعلانات" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "التكوين" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "رمز اللغة" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "اسم اللغة" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "علم اللغة، إذا كان موجوداً :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "الحصول على قائمة باللغات المدعومة" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "نتائج البحث عن المنتجات" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "نتائج البحث عن المنتجات" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "والد هذه المجموعة" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "مجموعة السمات الرئيسية" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "اسم مجموعة السمات" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "مجموعة السمات" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "تخزين بيانات الاعتماد ونقاط النهاية المطلوبة لاتصالات واجهة برمجة التطبيقات " "الخاصة بالمورّد" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "معلومات المصادقة" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "تحديد الترميز للمنتجات المسترجعة من هذا البائع" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "نسبة هامش الربح للبائع" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "اسم هذا البائع" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "اسم البائع" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "معرّف العلامة الداخلي لعلامة المنتج" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "اسم العلامة" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "اسم سهل الاستخدام لعلامة المنتج" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "اسم عرض العلامة" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "علامة المنتج" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "علامة الفئة" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "علامات الفئة" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "تحميل صورة تمثل هذه الفئة" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "صورة الفئة" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "تحديد نسبة ترميز للمنتجات في هذه الفئة" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "أصل هذه الفئة لتكوين بنية هرمية" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "الفئة الرئيسية" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "اسم الفئة" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "تقديم اسم لهذه الفئة" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "إضافة وصف تفصيلي لهذه الفئة" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "وصف الفئة" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "العلامات التي تساعد في وصف هذه الفئة أو تجميعها" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "الأولوية" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "اسم هذه العلامة التجارية" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "اسم العلامة التجارية" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "تحميل شعار يمثل هذه العلامة التجارية" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "صورة العلامة التجارية الصغيرة" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "رفع شعار كبير يمثل هذه العلامة التجارية" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "صورة كبيرة للعلامة التجارية" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "إضافة وصف تفصيلي للعلامة التجارية" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "وصف العلامة التجارية" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "الفئات الاختيارية التي ترتبط بها هذه العلامة التجارية" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "الفئات" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "البائع الذي يورد هذا المنتج المخزون" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "البائع المرتبط" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "السعر النهائي للعميل بعد هوامش الربح" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "سعر البيع" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "المنتج المرتبط بإدخال المخزون هذا" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "المنتج المرتبط" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "السعر المدفوع للبائع مقابل هذا المنتج" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "سعر الشراء من البائع" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "الكمية المتوفرة من المنتج في المخزون" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "الكمية في المخزون" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU المعين من قبل البائع لتحديد المنتج" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "وحدة تخزين البائع" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "الملف الرقمي المرتبط بهذا المخزون إن أمكن" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "ملف رقمي" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "إدخالات المخزون" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "الفئة التي ينتمي إليها هذا المنتج" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "ربط هذا المنتج اختياريًا بعلامة تجارية" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "العلامات التي تساعد في وصف أو تجميع هذا المنتج" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "يشير إلى ما إذا كان هذا المنتج يتم تسليمه رقميًا أم لا" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "هل المنتج رقمي" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "توفير اسم تعريفي واضح للمنتج" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "اسم المنتج" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "إضافة وصف تفصيلي للمنتج" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "وصف المنتج" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "رقم الجزء لهذا المنتج" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "رقم الجزء" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "وحدة حفظ المخزون لهذا المنتج" + +#: core/models.py:681 +msgid "SKU" +msgstr "وحدة التخزين" + +#: core/models.py:780 msgid "category of this attribute" msgstr "فئة هذه السمة" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "مجموعة هذه السمة" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "الخيط" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "عدد صحيح" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "تعويم" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "منطقية" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "المصفوفة" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "الكائن" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "نوع قيمة السمة" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "نوع القيمة" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "اسم هذه السمة" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "اسم السمة" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "السمة" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "سمة هذه القيمة" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "المنتج المحدد المرتبط بقيمة هذه السمة" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "القيمة المحددة لهذه السمة" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "توفير نص بديل للصورة لإمكانية الوصول" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "النص البديل للصورة" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "تحميل ملف الصورة لهذا المنتج" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "صورة المنتج" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "يحدد الترتيب الذي يتم عرض الصور به" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "أولوية العرض" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "المنتج الذي تمثله هذه الصورة" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "صور المنتج" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "النسبة المئوية للخصم على المنتجات المختارة" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "نسبة الخصم" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "تقديم اسم فريد لهذا العرض الترويجي" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "اسم الترقية" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "وصف الترقية" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "حدد المنتجات المشمولة في هذا العرض الترويجي" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "المنتجات المشمولة" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "الترقية" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "المنتجات التي حددها المستخدم على أنها مطلوبة" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "المستخدم الذي يمتلك قائمة الرغبات هذه" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "مالك قائمة الرغبات" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "قائمة الرغبات" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "فيلم وثائقي" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "الأفلام الوثائقية" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "لم يتم حلها" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "سطر العنوان للعميل" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "سطر العنوان" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "الشارع" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "المنطقة" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "المدينة" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "المنطقة" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "الرمز البريدي" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "البلد" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "نقطة تحديد الموقع الجغرافي(خط الطول، خط العرض)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "استجابة JSON كاملة من أداة التشفير الجغرافي لهذا العنوان" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "استجابة JSON مخزّنة من خدمة الترميز الجغرافي" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "العنوان" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "العناوين" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "الرمز الفريد الذي يستخدمه المستخدم لاسترداد قيمة الخصم" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "معرّف الرمز الترويجي" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "مبلغ الخصم الثابت المطبق في حالة عدم استخدام النسبة المئوية" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "مبلغ الخصم الثابت" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "النسبة المئوية للخصم المطبق في حالة عدم استخدام مبلغ ثابت" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "النسبة المئوية للخصم" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "الطابع الزمني عند انتهاء صلاحية الرمز الترويجي" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "وقت انتهاء الصلاحية" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "الطابع الزمني الذي يكون هذا الرمز الترويجي صالحاً منه" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "وقت بدء الصلاحية" -#: core/models.py:1242 +#: core/models.py:1269 msgid "timestamp when the promocode was used, blank if not used yet" -msgstr "الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" +msgstr "" +"الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "الطابع الزمني للاستخدام" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "المستخدم المعين لهذا الرمز الترويجي إن أمكن" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "المستخدم المعين" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "الرمز الترويجي" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "الرموز الترويجية" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين " -"أو لا هذا ولا ذاك." +"يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين" +" أو لا هذا ولا ذاك." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "تم استخدام الرمز الترويجي بالفعل" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "نوع الخصم غير صالح للرمز الترويجي {self.uuid}" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "عنوان إرسال الفواتير المستخدم لهذا الطلب" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "الرمز الترويجي الاختياري المطبق على هذا الطلب" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "الرمز الترويجي المطبق" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "عنوان الشحن المستخدم لهذا الطلب" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "عنوان الشحن" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "الحالة الحالية للطلب في دورة حياته" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "حالة الطلب" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 msgid "json structure of notifications to display to users" msgstr "" "بنية JSON للإشعارات التي سيتم عرضها للمستخدمين، في واجهة مستخدم المشرف، يتم " "استخدام عرض الجدول" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "تمثيل JSON لسمات الطلب لهذا الطلب" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "المستخدم الذي قدم الطلب" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "المستخدم" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "الطابع الزمني عند الانتهاء من الطلب" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "وقت الشراء" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "معرّف يمكن قراءته بواسطة البشر للطلب" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "معرّف يمكن قراءته من قبل البشر" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "الطلب" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "يجب أن يكون لدى المستخدم طلب واحد فقط معلق في كل مرة!" -#: core/models.py:1444 +#: core/models.py:1473 msgid "you cannot add products to an order that is not a pending one" msgstr "لا يمكنك إضافة منتجات إلى طلب غير معلق إلى طلب غير معلق" -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "لا يمكنك إضافة منتجات غير نشطة للطلب" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "لا يمكنك إضافة منتجات أكثر من المتوفرة في المخزون" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 msgid "you cannot remove products from an order that is not a pending one" msgstr "لا يمكنك إزالة المنتجات من طلب غير معلق من طلب غير معلق" -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} غير موجود مع الاستعلام <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "الرمز الترويجي غير موجود" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "يمكنك فقط شراء المنتجات المادية مع تحديد عنوان الشحن فقط!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "العنوان غير موجود" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "لا يمكنك الشراء في هذه اللحظة، يرجى المحاولة مرة أخرى بعد بضع دقائق." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "قيمة القوة غير صالحة" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "لا يمكنك شراء طلبية فارغة!" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "لا يمكنك شراء طلب بدون مستخدم!" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "المستخدم بدون رصيد لا يمكنه الشراء بالرصيد!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "عدم كفاية الأموال لإكمال الطلب" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -"لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد " -"الإلكتروني للعميل، رقم هاتف العميل" +"لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد" +" الإلكتروني للعميل، رقم هاتف العميل" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "طريقة الدفع غير صالحة: {payment_method} من {available_payment_methods}!" -#: core/models.py:1768 +#: core/models.py:1802 msgid "the price paid by the customer for this product at purchase time" msgstr "السعر الذي دفعه العميل لهذا المنتج وقت الشراء" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "سعر الشراء وقت الطلب" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "تعليقات داخلية للمسؤولين حول هذا المنتج المطلوب" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "التعليقات الداخلية" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "إشعارات المستخدم" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "تمثيل JSON لسمات هذا العنصر" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "سمات المنتج المطلوبة" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "الإشارة إلى الطلب الأصلي الذي يحتوي على هذا المنتج" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "ترتيب الوالدين" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "المنتج المحدد المرتبط بخط الطلب هذا" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "كمية هذا المنتج المحدد في الطلب" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "كمية المنتج" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "الحالة الحالية لهذا المنتج بالترتيب" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "حالة خط الإنتاج" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "يجب أن يكون لـ Orderproduct طلب مرتبط به!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "تم تحديد إجراء خاطئ للتغذية الراجعة: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 msgid "you cannot feedback an order which is not received" msgstr "لا يمكنك التعليق على طلب لم يتم استلامه" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "تنزيل" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "التنزيلات" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "لا يمكنك تنزيل أصل رقمي لطلب غير مكتمل" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "التعليقات المقدمة من المستخدمين حول تجربتهم مع المنتج" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "تعليقات على الملاحظات" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "الإشارة إلى المنتج المحدد في الطلب الذي تدور حوله هذه الملاحظات" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "منتجات الطلبات ذات الصلة" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "التصنيف المعين من قبل المستخدم للمنتج" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "تصنيف المنتج" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "الملاحظات" @@ -2083,7 +2110,7 @@ msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "يجب عليك تقديم تعليق، وتقييم، وطلب المنتج uuid لإضافة ملاحظاتك." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "خطأ أثناء إنشاء الرمز الترويجي: {e!s}" @@ -2115,12 +2142,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! يسعدنا إبلاغك بأننا قد أخذنا طلبك في العمل." +" فيما يلي تفاصيل طلبك:" #: core/templates/digital_order_created_email.html:112 #: core/templates/digital_order_delivered_email.html:110 @@ -2206,8 +2232,7 @@ msgstr "المفتاح" #: core/templates/shipped_order_created_email.html:101 #: 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 "شكرًا لك على طلبك! يسعدنا تأكيد طلبك. فيما يلي تفاصيل طلبك:" @@ -2244,17 +2269,17 @@ msgstr "كل من البيانات والمهلة مطلوبة" msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "قيمة المهلة غير صالحة، يجب أن تكون بين 0 و216000 ثانية" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | بادر بالاتصال بنا" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | تأكيد الطلب" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | طلبية تم تسليمها" @@ -2276,15 +2301,15 @@ msgstr "يجب ألا تتجاوز أبعاد الصورة w{max_width} x h{max_ msgid "invalid phone number format" msgstr "تنسيق رقم الهاتف غير صالح" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "يمكنك تنزيل الأصل الرقمي مرة واحدة فقط" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "الرمز المفضل غير موجود" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "خطأ في الترميز الجغرافي: {e}" diff --git a/core/locale/cs_CZ/LC_MESSAGES/django.mo b/core/locale/cs_CZ/LC_MESSAGES/django.mo index 7afca15f..2bea670f 100644 Binary files a/core/locale/cs_CZ/LC_MESSAGES/django.mo and b/core/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/core/locale/cs_CZ/LC_MESSAGES/django.po b/core/locale/cs_CZ/LC_MESSAGES/django.po index 1712b0dd..c5cfa9fe 100644 --- a/core/locale/cs_CZ/LC_MESSAGES/django.po +++ b/core/locale/cs_CZ/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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í" #: core/abstract.py:20 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í." @@ -61,70 +62,70 @@ msgstr "Obecné" msgid "relations" msgstr "Vztahy" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Metadata" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Časová razítka" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktivace vybraného %(verbose_name_plural)s" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Vybrané položky byly aktivovány!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deaktivace vybraných %(verbose_name_plural)s" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Vybrané položky byly deaktivovány!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Hodnota atributu" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Hodnoty atributů" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Obrázek" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Obrázky" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Stock" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Zásoby" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Objednat produkt" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Objednat produkty" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Děti" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Konfigurace" @@ -221,234 +222,250 @@ msgstr "" "Zakoupit objednávku jako podnik s použitím zadaných `produktů` s " "`product_uuid` a `atributy`." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "Seznam všech skupin atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Získání jedné skupiny atributů (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Vytvoření skupiny atributů" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Odstranění skupiny atributů" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Přepsání existující skupiny atributů s uložením neupravitelných položek" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +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" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "Seznam všech atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Získání jednoho atributu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Vytvoření atributu" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Odstranění atributu" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "Přepsat existující atribut a uložit neupravitelné položky" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Přepsání některých polí existujícího atributu s uložením neupravitelných " "položek" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "Seznam všech hodnot atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Získání jedné hodnoty atributu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Vytvoření hodnoty atributu" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Odstranění hodnoty atributu" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "Přepsání existující hodnoty atributu uložením neupravitelných položek" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +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" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "Seznam všech kategorií (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Vyhledání jedné kategorie (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Vytvoření kategorie" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Odstranění kategorie" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "Přepsání existující kategorie ukládající neupravitelné položky" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "Meta snímek SEO" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Vrací snímek meta dat SEO kategorie." + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "UUID nebo slug kategorie" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "Seznam všech kategorií (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "" "Uživatelům, kteří nejsou zaměstnanci, se vracejí pouze jejich vlastní " "objednávky." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrování příkazů s buy_time >= toto datum ISO 8601" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrování objednávek s buy_time <= toto ISO 8601 datetime" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filtrování podle přesné objednávky UUID" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Filtrování podle přesného lidsky čitelného ID objednávky" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtrování podle e-mailu uživatele (přesná shoda bez rozlišení velkých a " "malých písmen)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filtrování podle UUID uživatele" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtrování podle stavu objednávky (shoda podřetězce bez rozlišování velkých " "a malých písmen)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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é " "řazení použijte předponu \"-\" (např. \"-buy_time\")." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Vyhledání jedné kategorie (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Vytvoření atributu" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Nefunguje pro uživatele, kteří nejsou zaměstnanci." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Odstranění atributu" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "Přepsání existující kategorie ukládající neupravitelné položky" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Nákupní cena v době objednávky" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "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." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "zakoupení objednávky bez vytvoření účtu" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "dokončí nákup objednávky pro neregistrovaného uživatele." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Přidání produktu do objednávky" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" "Přidá produkt do objednávky pomocí zadaného `product_uuid` a `attributes`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "Přidat seznam produktů k objednání, množství se nezapočítává." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -456,22 +473,22 @@ msgstr "" "Přidá seznam produktů do objednávky pomocí zadaného `product_uuid` a " "`attributes`." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Odstranění produktu z objednávky" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" "Odebere produkt z objednávky pomocí zadaného `product_uuid` a `attributes`." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "Odstranění produktu z objednávky, množství se nezapočítává" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -479,397 +496,394 @@ msgstr "" "Odebere seznam produktů z objednávky pomocí zadaného `product_uuid` a " "`attributes`." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "Seznam všech atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Uživatelům, kteří nejsou zaměstnanci, se vrátí pouze jejich vlastní seznamy " "přání." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Získání jednoho atributu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Vytvoření atributu" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Nefunguje pro uživatele, kteří nejsou zaměstnanci." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Odstranění atributu" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "Přepsat existující atribut a uložit neupravitelné položky" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Přepsání některých polí existujícího atributu s uložením neupravitelných " "položek" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Přidání produktu do objednávky" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Přidá produkt do seznamu přání pomocí zadaného `product_uuid`." -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Odstranění produktu ze seznamu přání" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Odebere produkt ze seznamu přání pomocí zadaného `product_uuid`." -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Přidání mnoha produktů do seznamu přání" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 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`." -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Odstranění produktu z objednávky" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Odebere mnoho produktů ze seznamu přání pomocí zadaných `product_uuids`." -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "Seznam všech produktů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(přesně) UUID produktu" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(icontains) Název produktu" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(seznam) Názvy kategorií, nerozlišuje velká a malá písmena" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(přesně) Kategorie UUID" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(seznam) Názvy značek, nerozlišuje velká a malá písmena" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Minimální cena akcií" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Maximální cena akcií" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(přesně) Pouze aktivní produkty" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Obchodní značka" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimální skladové množství" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(přesně) Digitální vs. fyzické" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Vyhledání jednoho produktu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "Identifikátor UUID produktu nebo Slug" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Vytvoření produktu" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Přepsání existujícího produktu se zachováním polí, která nelze editovat" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Aktualizace některých polí existujícího produktu se zachováním polí, která " "nelze upravovat." -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Odstranění produktu" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "seznam všech povolených zpětných vazeb pro produkt" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Vrátí snímek meta dat SEO produktu." + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "Seznam všech adres" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Získání jedné adresy" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Vytvoření nové adresy" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Odstranění adresy" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Aktualizace celé adresy" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Částečná aktualizace adresy" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Automatické dokončování zadávání adresy" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Řetězec dotazu na nezpracovaná data, doplňte prosím data z koncového bodu " "geo-IP" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "omezuje množství výsledků, 1 < limit < 10, výchozí: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "seznam všech ohlasů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "načtení jedné zpětné vazby (podrobné zobrazení)." -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "vytvořit zpětnou vazbu" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "odstranit zpětnou vazbu" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "přepsat existující zpětnou vazbu a uložit neupravitelné položky." -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "seznam všech vztahů objednávka-produkt (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "načtení jednoho vztahu zakázka-produkt (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "vytvořit nový vztah objednávka-produkt" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "nahradit existující vztah objednávka-produkt" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "částečně aktualizovat existující vztah objednávka-produkt" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "odstranit vztah objednávka-produkt" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "přidat nebo odebrat zpětnou vazbu na vztah objednávka-produkt." -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "Nebyl zadán žádný vyhledávací termín." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Název" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Kategorie" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Kategorie Slimáci" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Štítky" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Minimální cena" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Max Price" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Je aktivní" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Značka" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Atributy" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Množství" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Slug" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "Je digitální" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Zahrnout podkategorie" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Zahrnout osobně objednané produkty" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Pro použití příznaku include_subcategories musí existovat category_uuid." -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Vyhledávání (ID, název produktu nebo číslo dílu)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Koupeno po (včetně)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Koupeno před (včetně)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "E-mail uživatele" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "UUID uživatele" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Stav" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "Lidsky čitelné ID" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Rodič" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Celá kategorie (má nebo nemá alespoň 1 produkt)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Úroveň" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "UUID produktu" @@ -893,7 +907,7 @@ msgstr "Data uložená v mezipaměti" msgid "camelized JSON data from the requested URL" msgstr "Kamelizovaná data JSON z požadované adresy URL" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Povoleny jsou pouze adresy URL začínající http(s)://." @@ -924,7 +938,7 @@ 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í!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Z metody order.buy() pochází nesprávný typ: {type(instance)!s}" @@ -977,11 +991,11 @@ msgstr "Koupit objednávku" #: core/graphene/mutations.py:500 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." #: core/graphene/mutations.py:532 msgid "add or delete a feedback for orderproduct" @@ -1000,9 +1014,9 @@ msgstr "Orderproduct {order_product_uuid} nenalezen!" msgid "original address string provided by the user" msgstr "Původní řetězec adresy zadaný uživatelem" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} neexistuje: {uuid}!" @@ -1015,96 +1029,98 @@ msgstr "Limit musí být mezi 1 a 10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funguje jako kouzlo" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Atributy" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Seskupené atributy" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Skupiny atributů" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Kategorie" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Značky" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Kategorie" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Procento přirážky" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 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." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +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." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Štítky pro tuto kategorii" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Produkty v této kategorii" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Prodejci" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Zeměpisná šířka (souřadnice Y)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Zeměpisná délka (souřadnice X)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Jak na to" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Představuje zpětnou vazbu od uživatele." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Oznámení" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 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é" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "Seznam objednaných produktů v tomto pořadí" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Fakturační adresa" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1112,51 +1128,51 @@ msgstr "" "Dodací adresa pro tuto objednávku, pokud je stejná jako fakturační adresa " "nebo pokud není použitelná, ponechte prázdné." -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Celková cena této objednávky" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Celkové množství objednaných produktů" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Jsou všechny produkty v objednávce digitální" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Transakce pro tuto objednávku" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Objednávky" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "Adresa URL obrázku" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Obrázky produktu" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Kategorie" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Zpětná vazba" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Značka" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Skupiny atributů" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1164,7 +1180,7 @@ msgstr "Skupiny atributů" msgid "price" msgstr "Cena" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1172,31 +1188,35 @@ msgstr "Cena" msgid "quantity" msgstr "Množství" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Počet zpětných vazeb" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Produkty jsou k dispozici pouze pro osobní objednávky" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Produkty" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Propagační kódy" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Produkty v prodeji" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Propagační akce" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Prodejce" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1204,636 +1224,645 @@ msgstr "Prodejce" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Produkty uvedené na seznamu přání" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Seznamy přání" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Produkty s příznakem" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Štítky produktu" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Kategorie s příznakem" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Štítky kategorií" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Název projektu" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "E-mail společnosti" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Název společnosti" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Adresa společnosti" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Telefonní číslo společnosti" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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." -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "Uživatel hostitelského e-mailu" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Maximální částka pro platbu" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Minimální částka pro platbu" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Analytická data" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Reklamní údaje" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Konfigurace" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Kód jazyka" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Název jazyka" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Příznak jazyka, pokud existuje :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Získat seznam podporovaných jazyků" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Výsledky vyhledávání produktů" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Výsledky vyhledávání produktů" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Rodič této skupiny" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Nadřazená skupina atributů" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Název skupiny atributů" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Skupina atributů" -#: core/models.py:150 +#: core/models.py:151 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." -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Informace o ověřování" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "Definice přirážky pro produkty získané od tohoto dodavatele" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Procento přirážky prodejce" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Název tohoto prodejce" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Název prodejce" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Interní identifikátor značky produktu" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Název štítku" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "Uživatelsky přívětivý název pro značku produktu" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Zobrazení názvu štítku" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Štítek produktu" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "značka kategorie" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "štítky kategorií" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Nahrát obrázek reprezentující tuto kategorii" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Obrázek kategorie" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "Definovat procento přirážky pro produkty v této kategorii." -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Nadřízený této kategorie, který tvoří hierarchickou strukturu." -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Nadřazená kategorie" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Název kategorie" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Uveďte název této kategorie" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Přidejte podrobný popis této kategorie" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Popis kategorie" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "značky, které pomáhají popsat nebo seskupit tuto kategorii" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Priorita" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Název této značky" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Název značky" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Nahrát logo reprezentující tuto značku" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Malý obrázek značky" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Nahrát velké logo reprezentující tuto značku" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Velká image značky" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Přidejte podrobný popis značky" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Popis značky" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Volitelné kategorie, se kterými je tato značka spojena" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Kategorie" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "Prodejce dodávající tento výrobek na sklad" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Přidružený prodejce" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Konečná cena pro zákazníka po přirážkách" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Prodejní cena" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "Produkt spojený s touto skladovou položkou" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Související produkt" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "Cena zaplacená prodejci za tento výrobek" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Kupní cena prodejce" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Dostupné množství produktu na skladě" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Množství na skladě" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU přidělený prodejcem pro identifikaci výrobku" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "SKU prodejce" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "Digitální soubor spojený s touto zásobou, je-li to vhodné" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Digitální soubor" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Zápisy do zásob" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Kategorie, do které tento produkt patří" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Volitelně přiřadit tento produkt ke značce" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Značky, které pomáhají popsat nebo seskupit tento produkt" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Označuje, zda je tento produkt dodáván digitálně" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "Je produkt digitální" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Uveďte jasný identifikační název výrobku" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Název produktu" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Přidejte podrobný popis produktu" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Popis produktu" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Číslo dílu pro tento produkt" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Číslo dílu" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Skladová jednotka pro tento produkt" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Kategorie tohoto atributu" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Skupina tohoto atributu" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "Řetězec" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Celé číslo" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Float" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Boolean" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Pole" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Objekt" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Typ hodnoty atributu" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Typ hodnoty" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Název tohoto atributu" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Název atributu" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Atribut" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Atribut této hodnoty" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "Konkrétní produkt spojený s hodnotou tohoto atributu" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "Konkrétní hodnota tohoto atributu" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "Poskytněte alternativní text k obrázku kvůli přístupnosti." -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Text alt obrázku" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Nahrát soubor s obrázkem tohoto produktu" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Obrázek produktu" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Určuje pořadí, v jakém se obrázky zobrazují." -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Priorita zobrazení" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "Výrobek, který tento obrázek představuje" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Obrázky produktů" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Procentuální sleva na vybrané produkty" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Procento slevy" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Uveďte jedinečný název této propagační akce" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Název akce" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Popis propagace" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Vyberte, které produkty jsou zahrnuty do této akce" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Zahrnuté produkty" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Propagace" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Výrobky, které uživatel označil jako požadované" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "Uživatel, který vlastní tento seznam přání" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Majitel seznamu přání" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Seznam přání" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Dokumentární film" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Dokumentární filmy" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Nevyřešené" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Adresní řádek pro zákazníka" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Adresní řádek" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Ulice" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "Okres" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "Město" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Region" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Poštovní směrovací číslo" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "Země" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokace Bod(Zeměpisná délka, Zeměpisná šířka)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Úplná odpověď JSON z geokodéru pro tuto adresu" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Uložená odpověď JSON ze služby geokódování" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Adresa" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Adresy" -#: core/models.py:1209 +#: core/models.py:1236 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." -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Identifikátor propagačního kódu" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "Pevná výše slevy, pokud není použito procento" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Pevná výše slevy" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentuální sleva uplatněná v případě nevyužití pevné částky" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Procentuální sleva" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Časové razítko ukončení platnosti promokódu" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "Doba ukončení platnosti" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Časové razítko, od kterého je tento promokód platný" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Čas zahájení platnosti" -#: core/models.py:1242 +#: core/models.py:1269 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." -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Časové razítko použití" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "Uživatel přiřazený k tomuto promokódu, je-li to relevantní" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Přiřazený uživatel" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Propagační kód" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Propagační kódy" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1841,144 +1870,145 @@ 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." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "Promo kód byl již použit" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Neplatný typ slevy pro promokód {self.uuid}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "Fakturační adresa použitá pro tuto objednávku" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Volitelný promo kód použitý na tuto objednávku" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Použitý promo kód" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "Dodací adresa použitá pro tuto objednávku" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Dodací adresa" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Aktuální stav zakázky v jejím životním cyklu" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Stav objednávky" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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í." -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "JSON reprezentace atributů objednávky pro tuto objednávku" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "Uživatel, který zadal objednávku" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "Uživatel" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "Časové razítko, kdy byla objednávka dokončena." -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Kupte si čas" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "Lidsky čitelný identifikátor objednávky" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "lidsky čitelné ID" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Objednávka" -#: core/models.py:1410 +#: core/models.py:1439 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!" -#: core/models.py:1444 +#: core/models.py:1473 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." -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "Do objednávky nelze přidat neaktivní produkty" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "Nelze přidat více produktů, než je dostupné na skladě" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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á." -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} neexistuje s dotazem <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Promo kód neexistuje" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "Fyzické produkty můžete zakoupit pouze se zadanou dodací adresou!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "Adresa neexistuje" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Neplatná hodnota síly" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "Nelze zakoupit prázdnou objednávku!" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "Bez uživatele nelze objednávku zakoupit!" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "Uživatel bez zůstatku nemůže nakupovat se zůstatkem!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Nedostatek finančních prostředků na dokončení objednávky" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1986,121 +2016,122 @@ 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." -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Neplatný způsob platby: {payment_method} z {available_payment_methods}!" -#: core/models.py:1768 +#: core/models.py:1802 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." -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Nákupní cena v době objednávky" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "Interní komentáře pro administrátory k tomuto objednanému produktu" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Interní připomínky" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "Oznámení uživatele" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "JSON reprezentace atributů této položky" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Objednané atributy produktu" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Odkaz na nadřazenou objednávku, která obsahuje tento produkt" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Objednávka rodičů" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "Konkrétní produkt spojený s touto objednávkou" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Množství tohoto konkrétního produktu v objednávce" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Množství produktu" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Aktuální stav tohoto produktu v objednávce" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Stav produktové řady" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "Orderproduct musí mít přiřazenou objednávku!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Špatně zadaná akce pro zpětnou vazbu: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 msgid "you cannot feedback an order which is not received" msgstr "nelze poskytnout zpětnou vazbu na objednávku, která nebyla přijata" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Stáhnout" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Ke stažení na" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "Digitální aktivum pro nedokončenou objednávku nelze stáhnout." -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "Komentáře uživatelů o jejich zkušenostech s produktem" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Zpětná vazba" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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á." -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Související objednávka produktu" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "Hodnocení produktu přidělené uživatelem" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Hodnocení produktu" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Zpětná vazba" @@ -2110,7 +2141,7 @@ msgid "" msgstr "" "pro přidání zpětné vazby musíte uvést komentář, hodnocení a uuid produktu." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Chyba při vytváření promokódu: {e!s}" @@ -2142,8 +2173,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, " @@ -2237,8 +2267,7 @@ msgstr "Klíč" #: core/templates/shipped_order_created_email.html:101 #: 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 " @@ -2277,17 +2306,17 @@ msgstr "Jsou vyžadována data i časový limit" 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." -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | kontaktujte nás inicioval" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Potvrzení objednávky" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Objednávka doručena" @@ -2310,15 +2339,15 @@ msgstr "" msgid "invalid phone number format" msgstr "Nesprávný formát telefonního čísla" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "Digitální aktivum můžete stáhnout pouze jednou" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "favicon nebyl nalezen" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Chyba v zeměpisném kódování: {e}" diff --git a/core/locale/da_DK/LC_MESSAGES/django.mo b/core/locale/da_DK/LC_MESSAGES/django.mo index 1a540d7e..511f923c 100644 Binary files a/core/locale/da_DK/LC_MESSAGES/django.mo and b/core/locale/da_DK/LC_MESSAGES/django.mo differ diff --git a/core/locale/da_DK/LC_MESSAGES/django.po b/core/locale/da_DK/LC_MESSAGES/django.po index e185395c..5437e135 100644 --- a/core/locale/da_DK/LC_MESSAGES/django.po +++ b/core/locale/da_DK/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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 "Er aktiv" #: core/abstract.py:20 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." @@ -60,70 +61,70 @@ msgstr "Generelt" msgid "relations" msgstr "Relationer" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Metadata" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Tidsstempler" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktivér valgt %(verbose_name_plural)s." -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Udvalgte varer er blevet aktiveret!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deaktiver valgte %(verbose_name_plural)s." -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Udvalgte varer er blevet deaktiveret!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Attributværdi" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Attributværdier" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Billede" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Billeder" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Lager" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Aktier" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Bestil produkt" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Bestil produkter" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Børn" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Konfig" @@ -185,8 +186,7 @@ msgid "" "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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -220,199 +220,216 @@ msgstr "" "Køb en ordre som en virksomhed ved hjælp af de angivne `produkter` med " "`produkt_uuid` og `attributter`." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "Liste over alle attributgrupper (simpel visning)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Hent en enkelt attributgruppe (detaljeret visning)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Opret en attributgruppe" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Slet en attributgruppe" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Omskriv en eksisterende attributgruppe, der gemmer ikke-redigerbare " "attributter" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +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" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "Liste over alle attributter (simpel visning)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Hent en enkelt attribut (detaljeret visning)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Opret en attribut" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Slet en attribut" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "Omskriv en eksisterende attribut, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende attribut og gem ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "Liste over alle attributværdier (simpel visning)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Hent en enkelt attributværdi (detaljeret visning)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Opret en attributværdi" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Slet en attributværdi" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Omskriv en eksisterende attributværdi, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +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" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "Liste over alle kategorier (enkel visning)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Hent en enkelt kategori (detaljeret visning)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Opret en kategori" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Slet en kategori" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "Omskriv en eksisterende kategori, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "SEO-meta-snapshot" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Returnerer et øjebliksbillede af kategoriens SEO-metadata" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "Kategori UUID eller slug" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "Liste over alle kategorier (enkel visning)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 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." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrer ordrer med buy_time >= denne ISO 8601 datetime" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrer ordrer med buy_time <= denne ISO 8601 datetime" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filtrer efter nøjagtig ordre-UUID" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Filtrer efter nøjagtigt menneskeligt læsbart ordre-ID" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "Filtrer efter brugerens e-mail (case-insensitive exact match)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filtrer efter brugerens UUID" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "Filtrer efter ordrestatus (case-insensitive substring match)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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')." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Hent en enkelt kategori (detaljeret visning)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Opret en attribut" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Virker ikke for ikke-ansatte brugere." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Slet en attribut" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "Omskriv en eksisterende kategori, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Købspris på bestillingstidspunktet" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -422,19 +439,19 @@ msgstr "" "ved hjælp af brugerens saldo; hvis `force_payment` bruges, igangsættes en " "transaktion." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "Køb en ordre uden at oprette en konto" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "afslutter ordrekøbet for en ikke-registreret bruger." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Tilføj et produkt til ordren" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -442,11 +459,11 @@ msgstr "" "Tilføjer et produkt til en ordre ved hjælp af de angivne `product_uuid` og " "`attributes`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "Tilføj en liste med produkter til bestilling, antal tæller ikke med" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -454,11 +471,11 @@ msgstr "" "Tilføjer en liste af produkter til en ordre ved hjælp af de angivne " "`product_uuid` og `attributes`." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Fjern et produkt fra ordren" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -466,11 +483,11 @@ msgstr "" "Fjerner et produkt fra en ordre ved hjælp af de angivne `product_uuid` og " "`attributes`." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "Fjern et produkt fra ordren, mængderne tæller ikke med" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -478,400 +495,397 @@ msgstr "" "Fjerner en liste af produkter fra en ordre ved hjælp af de angivne " "`product_uuid` og `attributes`." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "Liste over alle attributter (simpel visning)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "For ikke-ansatte brugere er det kun deres egne ønskelister, der returneres." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Hent en enkelt attribut (detaljeret visning)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Opret en attribut" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Virker ikke for ikke-ansatte brugere." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Slet en attribut" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "Omskriv en eksisterende attribut, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende attribut og gem ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Tilføj et produkt til ordren" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Tilføjer et produkt til en ønskeliste ved hjælp af den angivne " "`product_uuid`." -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Fjern et produkt fra ønskelisten" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 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`." -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Tilføj mange produkter til ønskelisten" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Tilføjer mange produkter til en ønskeliste ved hjælp af de angivne " "`product_uuids`." -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Fjern et produkt fra ordren" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Fjerner mange produkter fra en ønskeliste ved hjælp af de angivne " "`product_uuids`." -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`." -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "Liste over alle produkter (enkel visning)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(præcis) Produkt-UUID" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(icontains) Produktnavn" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(liste) Kategorinavne, skelner ikke mellem store og små bogstaver" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(præcis) UUID for kategori" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(liste) Tag-navne, skelner ikke mellem store og små bogstaver" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum aktiekurs" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Maksimal aktiekurs" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(præcis) Kun aktive produkter" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Mærkenavn" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum lagermængde" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(præcis) Digital vs. fysisk" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Hent et enkelt produkt (detaljeret visning)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Opret et produkt" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Omskriv et eksisterende produkt og bevar ikke-redigerbare felter" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Opdater nogle felter i et eksisterende produkt og bevar ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Slet et produkt" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "viser alle tilladte tilbagemeldinger for et produkt" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Returnerer et øjebliksbillede af produktets SEO-metadata" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "Angiv alle adresser" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Hent en enkelt adresse" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Opret en ny adresse" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Slet en adresse" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Opdater en hel adresse" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Delvis opdatering af en adresse" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Automatisk udfyldning af adresseinput" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "Rå dataforespørgselsstreng, tilføj venligst data fra geo-IP-slutpunkt" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "begrænser mængden af resultater, 1 < grænse < 10, standard: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "Vis alle tilbagemeldinger (enkel visning)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "Hent en enkelt feedback (detaljeret visning)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "skab en feedback" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "Slet en tilbagemelding" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "omskriv en eksisterende feedback, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "liste alle ordre-produkt-relationer (simpel visning)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "Hent en enkelt ordre-produkt-relation (detaljeret visning)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "Opret en ny ordre-produkt-relation" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "erstatte en eksisterende ordre-produkt-relation" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "delvist opdatere en eksisterende ordre-produkt-relation" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "slette en ordre-produkt-relation" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "tilføje eller fjerne feedback på en ordre-produkt-relation" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "Der er ikke angivet noget søgeord." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Navn" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Kategorier" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Kategorier Snegle" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Tags" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Min. pris" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Maks. pris" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Er aktiv" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Brand" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Egenskaber" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Mængde" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Snegl" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "Er digital" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Inkluder underkategorier" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Inkluder personligt bestilte produkter" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Der skal være en category_uuid for at bruge include_subcategories-flaget" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Søg (ID, produktnavn eller reservedelsnummer)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Købt efter (inklusive)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Købt før (inklusive)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "Brugerens e-mail" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "Bruger UUID" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Status" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "Menneskeligt læsbart ID" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Forælder" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Hele kategorien (har mindst 1 produkt eller ej)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Niveau" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "Produkt UUID" @@ -895,7 +909,7 @@ msgstr "Cachelagrede data" msgid "camelized JSON data from the requested URL" msgstr "Cameliserede JSON-data fra den ønskede URL" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Kun URL'er, der starter med http(s)://, er tilladt." @@ -926,7 +940,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Angiv enten order_uuid eller order_hr_id - det udelukker hinanden!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Forkert type kom fra metoden order.buy(): {type(instance)!s}" @@ -979,11 +993,11 @@ msgstr "Køb en ordre" #: core/graphene/mutations.py:500 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" #: core/graphene/mutations.py:532 msgid "add or delete a feedback for orderproduct" @@ -1002,9 +1016,9 @@ msgstr "Ordreprodukt {order_product_uuid} ikke fundet!" msgid "original address string provided by the user" msgstr "Original adressestreng leveret af brugeren" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} findes ikke: {uuid}!" @@ -1017,100 +1031,102 @@ msgstr "Grænsen skal være mellem 1 og 10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fungerer som en charme" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Egenskaber" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Grupperede attributter" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Grupper af attributter" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Kategorier" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Mærker" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Kategorier" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Markup-procentdel" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 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." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +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." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Tags for denne kategori" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Produkter i denne kategori" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Leverandører" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Breddegrad (Y-koordinat)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Længdegrad (X-koordinat)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Sådan gør du" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Repræsenterer feedback fra en bruger." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Meddelelser" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "Download url for dette ordreprodukt, hvis det er relevant" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "En liste over bestillingsprodukter i denne ordre" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Faktureringsadresse" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1118,51 +1134,51 @@ msgstr "" "Leveringsadresse for denne ordre, lad den være tom, hvis den er den samme " "som faktureringsadressen, eller hvis den ikke er relevant" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Samlet pris for denne ordre" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Samlet antal produkter i ordren" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Er alle produkterne i ordren digitale?" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Transaktioner for denne ordre" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Bestillinger" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "Billed-URL" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Produktets billeder" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Kategori" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Tilbagemeldinger" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Attributgrupper" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1170,7 +1186,7 @@ msgstr "Attributgrupper" msgid "price" msgstr "Pris" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1178,31 +1194,35 @@ msgstr "Pris" msgid "quantity" msgstr "Mængde" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Antal tilbagemeldinger" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Produkter kun tilgængelige for personlige bestillinger" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Produkter" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Promokoder" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Produkter til salg" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Kampagner" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Leverandør" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1210,637 +1230,646 @@ msgstr "Leverandør" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Produkter på ønskelisten" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Ønskelister" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Mærkede produkter" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Produktmærker" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Tagged kategorier" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Kategoriernes tags" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Projektets navn" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "Virksomhedens e-mail" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Virksomhedens navn" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Virksomhedens adresse" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Virksomhedens telefonnummer" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "E-mail-værtsbruger" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Maksimalt beløb til betaling" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Minimumsbeløb for betaling" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Analytiske data" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Data om reklamer" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Konfiguration" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Sprogkode" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Sprogets navn" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Sprogflag, hvis det findes :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Få en liste over understøttede sprog" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Søgeresultater for produkter" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Søgeresultater for produkter" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Forælder til denne gruppe" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Overordnet attributgruppe" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Attributgruppens navn" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Attributgruppe" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Gemmer legitimationsoplysninger og slutpunkter, der er nødvendige for " "leverandørens API-kommunikation" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Oplysninger om godkendelse" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "Definer markeringen for produkter, der hentes fra denne leverandør" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Sælgerens markup-procentdel" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Navn på denne leverandør" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Leverandørens navn" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Intern tag-identifikator for produkttagget" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Tag-navn" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "Brugervenligt navn til produktmærket" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Navn på tag-visning" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Produktmærke" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "Kategori-tag" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "Kategori-tags" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Upload et billede, der repræsenterer denne kategori" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Kategori billede" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "Definer en markup-procentdel for produkter i denne kategori" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Forælder til denne kategori for at danne en hierarkisk struktur" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Overordnet kategori" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Navn på kategori" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Giv et navn til denne kategori" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Tilføj en detaljeret beskrivelse af denne kategori" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Beskrivelse af kategori" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "tags, der hjælper med at beskrive eller gruppere denne kategori" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Prioritet" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Navnet på dette mærke" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Varemærke" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Upload et logo, der repræsenterer dette brand" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Brandets lille image" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Upload et stort logo, der repræsenterer dette brand" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Brandets store image" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Tilføj en detaljeret beskrivelse af brandet" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Varemærkebeskrivelse" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Valgfrie kategorier, som dette brand er forbundet med" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Kategorier" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "Den leverandør, der leverer dette produkt, lagerfører" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Tilknyttet leverandør" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Endelig pris til kunden efter tillæg" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Salgspris" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "Det produkt, der er knyttet til denne lagerpost" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Tilknyttet produkt" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "Den pris, der er betalt til sælgeren for dette produkt" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Leverandørens købspris" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Tilgængelig mængde af produktet på lager" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Antal på lager" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "Leverandørtildelt SKU til identifikation af produktet" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "Leverandørens SKU" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "Digital fil knyttet til dette lager, hvis relevant" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Digital fil" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Lagerposteringer" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Kategori, som dette produkt tilhører" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Tilknyt eventuelt dette produkt til et brand" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Tags, der hjælper med at beskrive eller gruppere dette produkt" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Angiver, om dette produkt leveres digitalt" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "Er produktet digitalt?" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Giv produktet et klart identificerende navn" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Produktets navn" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Tilføj en detaljeret beskrivelse af produktet" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Produktbeskrivelse" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Reservedelsnummer for dette produkt" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Varenummer" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Lagerbeholdning for dette produkt" + +#: core/models.py:681 +msgid "SKU" +msgstr "VARENUMMER" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Kategori for denne attribut" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Gruppe af denne attribut" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "Streng" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Heltal" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Flyder" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Boolsk" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Array" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Objekt" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Type af attributtens værdi" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Værditype" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Navn på denne attribut" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Attributtens navn" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribut" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Attribut for denne værdi" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "Det specifikke produkt, der er knyttet til denne attributs værdi" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "Den specifikke værdi for denne attribut" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "Giv alternativ tekst til billedet af hensyn til tilgængeligheden" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Billedets alt-tekst" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Upload billedfilen til dette produkt" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Produktbillede" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Bestemmer den rækkefølge, billederne vises i" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Skærm-prioritet" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "Det produkt, som dette billede repræsenterer" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Produktbilleder" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Procentvis rabat for de valgte produkter" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Rabatprocent" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Giv et unikt navn til denne kampagne" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Navn på kampagne" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Beskrivelse af kampagnen" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Vælg, hvilke produkter der er inkluderet i denne kampagne" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Inkluderede produkter" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Forfremmelse" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Produkter, som brugeren har markeret som ønskede" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "Bruger, der ejer denne ønskeliste" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Ønskelistens ejer" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Ønskeliste" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Dokumentarfilm" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Dokumentarfilm" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Uafklaret" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Adresselinje til kunden" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Adresselinje" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Gade" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "Distrikt" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "By" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Region" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Postnummer" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "Land" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokaliseringspunkt (længdegrad, breddegrad)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Fuldt JSON-svar fra geokoderen for denne adresse" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Gemt JSON-svar fra geokodningstjenesten" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Adresse" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Adresser" -#: core/models.py:1209 +#: core/models.py:1236 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" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Identifikator for kampagnekode" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "Fast rabatbeløb anvendes, hvis procent ikke bruges" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Fast rabatbeløb" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentvis rabat, hvis det faste beløb ikke bruges" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Procentvis rabat" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Tidsstempel, når promokoden udløber" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "Slut gyldighedstid" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Tidsstempel, hvorfra denne promokode er gyldig" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Start gyldighedstid" -#: core/models.py:1242 +#: core/models.py:1269 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" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Tidsstempel for brug" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "Bruger tildelt denne promokode, hvis relevant" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Tildelt bruger" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Kampagnekode" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Kampagnekoder" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1848,145 +1877,147 @@ msgstr "" "Der skal kun defineres én type rabat (beløb eller procent), men ikke begge " "eller ingen af dem." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "Promokoden er allerede blevet brugt" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ugyldig rabattype for promokode {self.uuid}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "Den faktureringsadresse, der bruges til denne ordre" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Valgfri kampagnekode anvendt på denne ordre" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Anvendt kampagnekode" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "Den leveringsadresse, der er brugt til denne ordre" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Leveringsadresse" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Ordrens aktuelle status i dens livscyklus" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Bestillingsstatus" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "JSON-repræsentation af ordreattributter for denne ordre" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "Den bruger, der har afgivet ordren" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "Bruger" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "Tidsstemplet for, hvornår ordren blev afsluttet" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Køb tid" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "En menneskeligt læsbar identifikator for ordren" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "menneskeligt læsbart ID" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Bestil" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "En bruger må kun have én afventende ordre ad gangen!" -#: core/models.py:1444 +#: core/models.py:1473 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." -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "Du kan ikke tilføje inaktive produkter til en ordre" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "Du kan ikke tilføje flere produkter, end der er på lager" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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." -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} findes ikke med forespørgslen <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Promokode findes ikke" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "Du kan kun købe fysiske produkter med angivet leveringsadresse!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "Adressen findes ikke" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Ugyldig kraftværdi" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "Du kan ikke købe en tom ordre!" -#: core/models.py:1615 +#: core/models.py:1644 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." -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "En bruger uden saldo kan ikke købe med saldo!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Utilstrækkelige midler til at gennemføre ordren" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1994,121 +2025,124 @@ msgstr "" "du kan ikke købe uden registrering, angiv venligst følgende oplysninger: " "kundens navn, kundens e-mail, kundens telefonnummer" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Ugyldig betalingsmetode: {payment_method} fra {available_payment_methods}!" -#: core/models.py:1768 +#: core/models.py:1802 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" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Købspris på bestillingstidspunktet" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "Interne kommentarer til administratorer om dette bestilte produkt" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Interne kommentarer" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "Notifikationer til brugere" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "JSON-repræsentation af dette elements attributter" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Bestilte produktattributter" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Henvisning til den overordnede ordre, der indeholder dette produkt" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Forældreordre" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "Det specifikke produkt, der er knyttet til denne ordrelinje" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Mængde af dette specifikke produkt i ordren" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Produktmængde" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Aktuel status for dette produkt i bestillingen" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Status for produktlinje" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "Orderproduct skal have en tilknyttet ordre!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Forkert handling angivet for feedback: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 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." -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Download" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Downloads" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "Du kan ikke downloade et digitalt aktiv for en ikke-færdiggjort ordre" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "Brugernes kommentarer om deres oplevelse med produktet" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Kommentarer til feedback" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Relateret ordreprodukt" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "Brugertildelt vurdering af produktet" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Produktvurdering" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Feedback" @@ -2119,7 +2153,7 @@ msgstr "" "Du skal angive en kommentar, en vurdering og et produkt-uid for at tilføje " "feedback." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Fejl under oprettelse af promokode: {e!s}" @@ -2151,8 +2185,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, " @@ -2245,8 +2278,7 @@ msgstr "Nøgle" #: core/templates/shipped_order_created_email.html:101 #: 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 " @@ -2285,17 +2317,17 @@ msgstr "Både data og timeout er påkrævet" 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" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | kontakt os påbegyndt" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Ordrebekræftelse" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Order Delivered" @@ -2312,21 +2344,22 @@ msgstr "Parameteren NOMINATIM_URL skal være konfigureret!" #, 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." #: core/validators.py:22 msgid "invalid phone number format" msgstr "Ugyldigt telefonnummerformat" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "Du kan kun downloade det digitale aktiv én gang" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "Favicon ikke fundet" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Fejl i geokodning: {e}" diff --git a/core/locale/de_DE/LC_MESSAGES/django.mo b/core/locale/de_DE/LC_MESSAGES/django.mo index fe91eb6e..23c2121c 100644 Binary files a/core/locale/de_DE/LC_MESSAGES/django.mo and b/core/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/core/locale/de_DE/LC_MESSAGES/django.po b/core/locale/de_DE/LC_MESSAGES/django.po index 51822d39..c44b0ef9 100644 --- a/core/locale/de_DE/LC_MESSAGES/django.po +++ b/core/locale/de_DE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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" #: core/abstract.py:20 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." @@ -62,70 +63,70 @@ msgstr "Allgemein" msgid "relations" msgstr "Beziehungen" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Metadaten" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Zeitstempel" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Ausgewählte %(verbose_name_plural)s aktivieren" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Ausgewählte Artikel wurden aktiviert!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Ausgewählte %(verbose_name_plural)s deaktivieren" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Ausgewählte Artikel wurden deaktiviert!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Attribut Wert" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Attribut Werte" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Bild" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Bilder" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Lagerbestand" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Bestände" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Produkt bestellen" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Produkte bestellen" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Kinder" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Konfigurieren Sie" @@ -186,10 +187,8 @@ 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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -223,209 +222,225 @@ msgstr "" "Kauf einer Bestellung als Unternehmen unter Verwendung der angegebenen " "\"Produkte\" mit \"product_uuid\" und \"Attributen\"." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "Alle Attributgruppen auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Abrufen einer einzelnen Attributgruppe (Detailansicht)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Erstellen einer Attributgruppe" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Löschen einer Attributgruppe" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Umschreiben einer bestehenden Attributgruppe mit Speicherung von Nicht-" "Editierbarkeit" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +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" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "Alle Attribute auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Ein einzelnes Attribut abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Ein Attribut erstellen" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Ein Attribut löschen" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributs, wobei nicht editierbare Daten " "gespeichert werden" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 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" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "Alle Attributwerte auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Abrufen eines einzelnen Attributwertes (Detailansicht)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Einen Attributwert erstellen" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Löschen eines Attributwertes" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributwerts mit Speicherung von Nicht-" "Editierbarkeit" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +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" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "Alle Kategorien auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Eine einzelne Kategorie abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Eine Kategorie erstellen" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Eine Kategorie löschen" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 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" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "SEO-Meta-Schnappschuss" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Gibt einen Schnappschuss der SEO-Metadaten der Kategorie zurück" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "Kategorie UUID oder Slug" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "Alle Kategorien auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "" "Bei Nicht-Mitarbeitern werden nur die eigenen Bestellungen zurückgeschickt." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Aufträge mit Kaufzeitpunkt >= dieser ISO 8601-Datumszeit filtern" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Aufträge mit Kaufzeitpunkt <= dieser ISO 8601-Datumszeit filtern" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filter nach exakter UUID der Bestellung" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Filtern nach exakter, von Menschen lesbarer Bestell-ID" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filter nach der E-Mail des Benutzers (Groß-/Kleinschreibung nicht " "berücksichtigend, exakte Übereinstimmung)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filter nach der UUID des Benutzers" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filter nach Bestellstatus (Groß-/Kleinschreibung nicht berücksichtigende " "Teilstring-Übereinstimmung)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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 " "(z. B. '-buy_time')." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Eine einzelne Kategorie abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Ein Attribut erstellen" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Funktioniert nicht für Benutzer, die nicht zum Personal gehören." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Ein Attribut löschen" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 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" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Einkaufspreis zum Zeitpunkt der Bestellung" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -435,20 +450,21 @@ msgstr "" "wird der Kauf mit dem Guthaben des Benutzers abgeschlossen; bei Verwendung " "von \"force_payment\" wird eine Transaktion ausgelöst." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "eine Bestellung kaufen, ohne ein Konto anzulegen" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 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." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -456,13 +472,13 @@ msgstr "" "Fügt ein Produkt unter Verwendung der angegebenen `product_uuid` und " "`attributes` zu einer Bestellung hinzu." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 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" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -470,11 +486,11 @@ msgstr "" "Fügt einer Bestellung eine Liste von Produkten unter Verwendung der " "angegebenen `product_uuid` und `attributes` hinzu." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -482,12 +498,12 @@ msgstr "" "Entfernt ein Produkt aus einer Bestellung unter Verwendung der angegebenen " "`product_uuid` und `attributes`." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "" "Ein Produkt aus der Bestellung entfernen, die Mengen werden nicht gezählt" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -495,414 +511,410 @@ msgstr "" "Entfernt eine Liste von Produkten aus einer Bestellung unter Verwendung der " "angegebenen `product_uuid` und `attributes`." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "Alle Attribute auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Bei Nicht-Mitarbeitern werden nur ihre eigenen Wunschlisten zurückgegeben." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Ein einzelnes Attribut abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Ein Attribut erstellen" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Funktioniert nicht für Benutzer, die nicht zum Personal gehören." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Ein Attribut löschen" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributs, wobei nicht editierbare Daten " "gespeichert werden" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 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" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Fügt ein Produkt mit der angegebenen `product_uuid` zu einer Wunschliste " "hinzu" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Ein Produkt von der Wunschliste entfernen" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Entfernt ein Produkt aus einer Wunschliste unter Verwendung der angegebenen " "`product_uuid`." -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Viele Produkte auf den Wunschzettel setzen" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Fügt einer Wunschliste viele Produkte unter Verwendung der angegebenen " "`product_uuids` hinzu" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Entfernt viele Produkte aus einer Wunschliste unter Verwendung der " "angegebenen `product_uuids`." -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "Alle Produkte auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(genaue) Produkt-UUID" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(icontains) Produktname" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "" "(Liste) Kategorienamen, Groß- und Kleinschreibung wird nicht berücksichtigt" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(genau) Kategorie UUID" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" -msgstr "(Liste) Tag-Namen, Groß- und Kleinschreibung wird nicht berücksichtigt" +msgstr "" +"(Liste) Tag-Namen, Groß- und Kleinschreibung wird nicht berücksichtigt" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Mindestaktienkurs" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Maximaler Aktienkurs" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(genau) Nur aktive Produkte" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Markenname" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Mindestlagermenge" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(genau) Digital vs. physisch" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Ein einzelnes Produkt abrufen (Detailansicht)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "Produkt UUID oder Slug" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Ein Produkt erstellen" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 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" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Einige Felder eines bestehenden Produkts aktualisieren, nicht editierbare " "Felder beibehalten" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Ein Produkt löschen" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "listet alle zulässigen Rückmeldungen für ein Produkt auf" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Gibt einen Schnappschuss der SEO-Metadaten des Produkts zurück" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "Alle Adressen auflisten" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Eine einzelne Adresse abrufen" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Eine neue Adresse erstellen" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Eine Adresse löschen" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Eine ganze Adresse aktualisieren" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Teilweise Aktualisierung einer Adresse" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Autovervollständigung der Adresseingabe" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 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" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "begrenzt die Anzahl der Ergebnisse, 1 < Limit < 10, Standard: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "alle Rückmeldungen auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "eine einzelne Rückmeldung abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "ein Feedback erstellen" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "eine Rückmeldung löschen" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 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" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "alle Bestell-Produkt-Beziehungen auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "eine einzelne Auftrag-Produkt-Relation abrufen (Detailansicht)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "eine neue Auftrag-Produkt-Beziehung erstellen" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "eine bestehende Auftrag-Produkt-Relation ersetzen" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "eine bestehende Auftrag-Produkt-Beziehung teilweise aktualisieren" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "eine Auftrag-Produkt-Beziehung löschen" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "" "Feedback zu einer Bestellung-Produkt-Beziehung hinzufügen oder entfernen" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "Kein Suchbegriff angegeben." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Name" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Kategorien" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Kategorien Schnecken" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Tags" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Mindestpreis" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Maximaler Preis" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Ist aktiv" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Marke" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Attribute" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Menge" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Schnecke" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "Is Digital" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Unterkategorien einbeziehen" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Persönlich bestellte Produkte einbeziehen" + +#: core/filters.py:160 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" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Suche (ID, Produktname oder Teilenummer)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Gekauft nach (einschließlich)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Gekauft vor (einschließlich)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "Benutzer-E-Mail" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "User UUID" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Status" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "Human Readable ID" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Elternteil" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Gesamte Kategorie (mit oder ohne mindestens 1 Produkt)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Ebene" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "Produkt UUID" @@ -926,7 +938,7 @@ msgstr "Zwischengespeicherte Daten" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-Daten aus der angeforderten URL" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Nur URLs, die mit http(s):// beginnen, sind zulässig" @@ -959,7 +971,7 @@ msgstr "" "sich gegenseitig aus!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Von der Methode order.buy() kam der falsche Typ: {type(instance)!s}" @@ -977,7 +989,8 @@ msgstr "Aktion muss entweder \"Hinzufügen\" oder \"Entfernen\" sein!" #: core/graphene/mutations.py:284 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" #: core/graphene/mutations.py:302 msgid "please provide wishlist_uuid value" @@ -1012,8 +1025,8 @@ msgstr "Eine Bestellung kaufen" #: core/graphene/mutations.py:500 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" @@ -1035,9 +1048,9 @@ msgstr "Bestellprodukt {order_product_uuid} nicht gefunden!" msgid "original address string provided by the user" msgstr "Vom Benutzer angegebene Originaladresse" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} existiert nicht: {uuid}!" @@ -1050,99 +1063,101 @@ msgstr "Der Grenzwert muss zwischen 1 und 10 liegen." msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funktioniert wie ein Zauber" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Attribute" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Gruppierte Attribute" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Gruppen von Attributen" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Kategorien" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Marken" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Kategorien" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Markup Percentage" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 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." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +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." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Tags für diese Kategorie" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Produkte in dieser Kategorie" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Anbieter" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Breitengrad (Y-Koordinate)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Längengrad (X-Koordinate)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Wie" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Stellt das Feedback eines Benutzers dar." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Benachrichtigungen" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "Download-Url für dieses Bestellprodukt, falls zutreffend" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "Eine Liste der bestellten Produkte in dieser Reihenfolge" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Rechnungsadresse" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1150,51 +1165,51 @@ msgstr "" "Lieferadresse für diese Bestellung, leer lassen, wenn sie mit der " "Rechnungsadresse übereinstimmt oder nicht zutrifft" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Gesamtpreis für diese Bestellung" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Gesamtmenge der bestellten Produkte" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Sind alle Produkte in der Bestellung digital" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Vorgänge für diesen Auftrag" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Bestellungen" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "Bild URL" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Bilder des Produkts" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Kategorie" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Rückmeldungen" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Marke" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Attribut-Gruppen" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1202,7 +1217,7 @@ msgstr "Attribut-Gruppen" msgid "price" msgstr "Preis" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1210,31 +1225,35 @@ msgstr "Preis" msgid "quantity" msgstr "Menge" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Anzahl der Rückmeldungen" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Produkte nur für persönliche Bestellungen verfügbar" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Produkte" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Zum Verkauf stehende Produkte" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Werbeaktionen" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Anbieter" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1242,648 +1261,660 @@ msgstr "Anbieter" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Auf dem Wunschzettel stehende Produkte" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Wunschzettel" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Markierte Produkte" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Produkt-Tags" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Markierte Kategorien" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Kategorien'-Tags" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Name des Projekts" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "Unternehmen E-Mail" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Name des Unternehmens" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Adresse des Unternehmens" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Telefonnummer des Unternehmens" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "E-Mail-Host-Benutzer" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Höchstbetrag für die Zahlung" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Mindestbetrag für die Zahlung" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Analytische Daten" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Advertisement data" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Konfiguration" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Sprachcode" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Name der Sprache" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Sprachflagge, falls vorhanden :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Eine Liste der unterstützten Sprachen abrufen" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Suchergebnisse für Produkte" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Suchergebnisse für Produkte" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Elternteil dieser Gruppe" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Übergeordnete Attributgruppe" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Name der Attributgruppe" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Attribut-Gruppe" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Speichert Anmeldeinformationen und Endpunkte, die für die API-Kommunikation " "des Anbieters erforderlich sind" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Informationen zur Authentifizierung" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definieren Sie den Aufschlag für Produkte, die von diesem Lieferanten " "bezogen werden" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Prozentualer Aufschlag des Lieferanten" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Name dieses Anbieters" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Name des Anbieters" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Interner Tag-Identifikator für das Produkt-Tag" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Tag name" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "Benutzerfreundlicher Name für den Produktanhänger" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Tag-Anzeigename" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Produkt-Tag" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "Kategorie-Tag" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "Kategorie-Tags" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Laden Sie ein Bild hoch, das diese Kategorie repräsentiert" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Kategorie Bild" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "" "Definieren Sie einen prozentualen Aufschlag für Produkte in dieser Kategorie" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "" "Übergeordneter dieser Kategorie, um eine hierarchische Struktur zu bilden" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Übergeordnete Kategorie" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Name der Kategorie" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Geben Sie einen Namen für diese Kategorie an" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Fügen Sie eine detaillierte Beschreibung für diese Kategorie hinzu" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Beschreibung der Kategorie" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "Tags, die helfen, diese Kategorie zu beschreiben oder zu gruppieren" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Priorität" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Name dieser Marke" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Markenname" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Laden Sie ein Logo hoch, das diese Marke repräsentiert" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Marke kleines Bild" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Laden Sie ein großes Logo hoch, das diese Marke repräsentiert" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Großes Image der Marke" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Fügen Sie eine detaillierte Beschreibung der Marke hinzu" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Beschreibung der Marke" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "" "Optionale Kategorien, mit denen diese Marke in Verbindung gebracht wird" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Kategorien" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "Der Verkäufer, der dieses Produkt liefert, hat folgende Bestände" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Zugehöriger Anbieter" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Endpreis für den Kunden nach Aufschlägen" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Verkaufspreis" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "Das mit diesem Bestandseintrag verbundene Produkt" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Zugehöriges Produkt" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "Der an den Verkäufer gezahlte Preis für dieses Produkt" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Einkaufspreis des Verkäufers" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Verfügbare Menge des Produkts auf Lager" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Vorrätige Menge" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "Vom Hersteller zugewiesene SKU zur Identifizierung des Produkts" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "SKU des Verkäufers" -#: core/models.py:551 +#: core/models.py:565 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" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Digitale Datei" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Bestandseinträge" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Kategorie, zu der dieses Produkt gehört" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Optional können Sie dieses Produkt mit einer Marke verknüpfen" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Tags, die helfen, dieses Produkt zu beschreiben oder zu gruppieren" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Gibt an, ob dieses Produkt digital geliefert wird" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "Ist das Produkt digital" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" -msgstr "Geben Sie einen eindeutigen Namen zur Identifizierung des Produkts an." +msgstr "" +"Geben Sie einen eindeutigen Namen zur Identifizierung des Produkts an." -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Name des Produkts" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Fügen Sie eine detaillierte Beschreibung des Produkts hinzu" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Beschreibung des Produkts" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Teilenummer für dieses Produkt" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Teilnummer" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Lagerhaltende Einheit für dieses Produkt" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Kategorie dieses Attributs" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Gruppe dieses Attributs" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "Zeichenfolge" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Integer" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Schwimmer" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Boolesche" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Array" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Objekt" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Typ des Attributwerts" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Werttyp" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Name dieses Attributs" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Name des Attributs" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribut" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Attribut dieses Wertes" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "" "Das spezifische Produkt, das mit dem Wert dieses Attributs verbunden ist" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "Der spezifische Wert für dieses Attribut" -#: core/models.py:871 +#: core/models.py:898 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." -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Bild-Alt-Text" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Laden Sie die Bilddatei für dieses Produkt hoch" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Produktbild" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Legt die Reihenfolge fest, in der die Bilder angezeigt werden" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Priorität anzeigen" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "Das Produkt, das dieses Bild darstellt" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Produktbilder" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Prozentualer Rabatt für die ausgewählten Produkte" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Prozentsatz der Ermäßigung" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Geben Sie einen eindeutigen Namen für diese Aktion an" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Name der Aktion" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Wählen Sie aus, welche Produkte in dieser Aktion enthalten sind" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Enthaltene Produkte" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Förderung" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Produkte, die der Benutzer als gewünscht markiert hat" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "Benutzer, dem diese Wunschliste gehört" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Besitzer der Wishlist" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Wunschzettel" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Dokumentarfilm" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Dokumentarfilme" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Ungelöst" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Adresszeile für den Kunden" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Adresszeile" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Straße" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "Bezirk" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "Stadt" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Region" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Postleitzahl" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "Land" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Längengrad, Breitengrad)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Vollständige JSON-Antwort vom Geocoder für diese Adresse" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Gespeicherte JSON-Antwort vom Geokodierungsdienst" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Adresse" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Adressen" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "" "Einzigartiger Code, den ein Nutzer zum Einlösen eines Rabatts verwendet" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Kennung des Promo-Codes" -#: core/models.py:1217 +#: core/models.py:1244 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" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Fester Rabattbetrag" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "Prozentualer Rabatt, wenn der Festbetrag nicht verwendet wird" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Prozentualer Rabatt" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Zeitstempel, wann der Promocode abläuft" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "Ende der Gültigkeitsdauer" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Zeitstempel, ab dem dieser Promocode gültig ist" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Beginn der Gültigkeitsdauer" -#: core/models.py:1242 +#: core/models.py:1269 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Zeitstempel, wann der Promocode verwendet wurde, leer, wenn noch nicht " "verwendet" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Zeitstempel der Verwendung" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "Diesem Promocode zugewiesener Benutzer, falls zutreffend" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Zugewiesener Benutzer" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Promo-Code" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Promo-Codes" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1891,152 +1922,152 @@ msgstr "" "Es sollte nur eine Art von Rabatt definiert werden (Betrag oder " "Prozentsatz), aber nicht beides oder keines von beiden." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "Promocode wurde bereits verwendet" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ungültiger Rabatttyp für den Promocode {self.uuid}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "Die für diese Bestellung verwendete Rechnungsadresse" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Optionaler Promo-Code für diese Bestellung" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Angewandter Promo-Code" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "Die für diese Bestellung verwendete Lieferadresse" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Lieferadresse" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Aktueller Status des Auftrags in seinem Lebenszyklus" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Status der Bestellung" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "JSON-Darstellung der Auftragsattribute für diesen Auftrag" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "Der Benutzer, der die Bestellung aufgegeben hat" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "Benutzer" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "Der Zeitstempel, zu dem der Auftrag abgeschlossen wurde" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Zeit kaufen" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "Ein von Menschen lesbarer Identifikator für den Auftrag" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "menschenlesbare ID" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Bestellung" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "Ein Benutzer darf immer nur einen schwebenden Auftrag haben!" -#: core/models.py:1444 +#: core/models.py:1473 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." -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "Sie können keine inaktiven Produkte zur Bestellung hinzufügen" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "Sie können nicht mehr Produkte hinzufügen, als auf Lager sind" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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." -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} existiert nicht mit Abfrage <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Promocode existiert nicht" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "" "Sie können nur physische Produkte mit angegebener Lieferadresse kaufen!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "Adresse ist nicht vorhanden" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Ungültiger Force-Wert" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "Sie können keine leere Bestellung kaufen!" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "" "Sie können keine Produkte aus einer Bestellung entfernen, die nicht in " "Bearbeitung ist." -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "Ein Benutzer ohne Guthaben kann nicht mit Guthaben kaufen!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Unzureichende Mittel für die Ausführung des Auftrags" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2044,127 +2075,128 @@ msgstr "" "Sie können nicht ohne Registrierung kaufen, bitte geben Sie die folgenden " "Informationen an: Kundenname, Kunden-E-Mail, Kunden-Telefonnummer" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Ungültige Zahlungsmethode: {payment_method} von {available_payment_methods}!" -#: core/models.py:1768 +#: core/models.py:1802 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" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Einkaufspreis zum Zeitpunkt der Bestellung" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "Interne Kommentare für Administratoren zu diesem bestellten Produkt" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Interne Kommentare" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "Benutzerbenachrichtigungen" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "JSON-Darstellung der Attribute dieses Artikels" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Bestellte Produktattribute" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Verweis auf den übergeordneten Auftrag, der dieses Produkt enthält" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Übergeordneter Auftrag" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "Das spezifische Produkt, das mit dieser Auftragszeile verbunden ist" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Menge dieses spezifischen Produkts in der Bestellung" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Produktmenge" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Aktueller Status dieses Produkts im Auftrag" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Status der Produktlinie" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "Das Bestellprodukt muss eine zugehörige Bestellung haben!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Falsche Aktion für Feedback angegeben: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 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." -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Herunterladen" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Herunterladen" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Sie können kein digitales Asset für eine nicht abgeschlossene Bestellung " "herunterladen" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "Kommentare der Nutzer über ihre Erfahrungen mit dem Produkt" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Kommentare zum Feedback" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Produkt zur Bestellung" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "Vom Benutzer zugewiesene Bewertung für das Produkt" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Produktbewertung" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Rückmeldung" @@ -2175,7 +2207,7 @@ msgstr "" "Sie müssen einen Kommentar, eine Bewertung und eine Produktnummer angeben, " "um eine Bewertung abzugeben." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Fehler bei der Erstellung des Promocodes: {e!s}" @@ -2207,8 +2239,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 " @@ -2302,8 +2333,7 @@ msgstr "Schlüssel" #: core/templates/shipped_order_created_email.html:101 #: 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. " @@ -2340,19 +2370,20 @@ msgstr "Sowohl Daten als auch Timeout sind erforderlich" #: core/utils/caching.py:43 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" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | Kontakt eingeleitet" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Auftragsbestätigung" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Bestellung ausgeliefert" @@ -2376,15 +2407,15 @@ msgstr "" msgid "invalid phone number format" msgstr "Ungültiges Rufnummernformat" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "Sie können das digitale Asset nur einmal herunterladen" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "Favicon nicht gefunden" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geocodierungsfehler: {e}" diff --git a/core/locale/en_GB/LC_MESSAGES/django.mo b/core/locale/en_GB/LC_MESSAGES/django.mo index ad23a4ca..34eb9e34 100644 Binary files a/core/locale/en_GB/LC_MESSAGES/django.mo and b/core/locale/en_GB/LC_MESSAGES/django.mo differ diff --git a/core/locale/en_GB/LC_MESSAGES/django.po b/core/locale/en_GB/LC_MESSAGES/django.po index fde33fa9..daa861b1 100644 --- a/core/locale/en_GB/LC_MESSAGES/django.po +++ b/core/locale/en_GB/LC_MESSAGES/django.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -31,9 +31,11 @@ msgstr "Is Active" #: core/abstract.py:20 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" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -63,70 +65,70 @@ msgstr "General" msgid "relations" msgstr "Relations" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Metadata" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Timestamps" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activate selected %(verbose_name_plural)s" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Selected items have been activated!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactivate selected %(verbose_name_plural)s" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Selected items have been deactivated!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Attribute Value" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Attribute Values" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Image" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Images" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Stock" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Stocks" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Order Product" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Order Products" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Children" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Config" @@ -222,187 +224,203 @@ msgstr "" "Purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "List all attribute groups (simple view)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Retrieve a single attribute group (detailed view)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Create an attribute group" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Delete an attribute group" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Rewrite some fields of an existing attribute group saving non-editables" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "List all attribute values (simple view)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Retrieve a single attribute value (detailed view)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Create an attribute value" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Delete an attribute value" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Rewrite some fields of an existing attribute value saving non-editables" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Create a category" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Delete a category" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "SEO Meta snapshot" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Returns a snapshot of the category's SEO meta data" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "Category UUID or slug" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "For non-staff users, only their own orders are returned." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filter orders with buy_time >= this ISO 8601 datetime" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filter orders with buy_time <= this ISO 8601 datetime" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filter by exact order UUID" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Filter by exact human-readable order ID" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "Filter by user's email (case-insensitive exact match)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filter by user's UUID" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "Filter by order status (case-insensitive substring match)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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')." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Purchase price at order time" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -412,19 +430,19 @@ msgstr "" "completed using the user's balance; If `force_payment` is used, a " "transaction is initiated." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizes the order purchase for a non-registered user." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -432,11 +450,11 @@ msgstr "" "Adds a product to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "Add a list of products to order, quantities will not count" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -444,11 +462,11 @@ msgstr "" "Adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -456,11 +474,11 @@ msgstr "" "Removes a product from an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "Remove a product from order, quantities will not count" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -468,387 +486,383 @@ msgstr "" "Removes a list of products from an order using the provided `product_uuid` " "and `attributes`." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "For non-staff users, only their own wishlists are returned." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Adds a product to an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Remove a product from the wishlist" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Removes a product from an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Add many products to the wishlist" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "Adds many products to an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(exact) Product UUID" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(icontains) Product name" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(list) Category names, case-insensitive" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(exact) Category UUID" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(list) Tag names, case-insensitive" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum stock price" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Maximum stock price" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(exact) Only active products" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Brand name" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum stock quantity" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. physical" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Update some fields of an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Delete a product" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "lists all permitted feedbacks for a product" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Returns a snapshot of the product's SEO meta data" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "List all addresses" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Retrieve a single address" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Create a new address" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Delete an address" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Update an entire address" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Partially update an address" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Autocomplete address input" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "Raw data query string, please append with data from geo-IP endpoint" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limits the results amount, 1 < limit < 10, default: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "list all feedbacks (simple view)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "retrieve a single feedback (detailed view)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "create a feedback" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "delete a feedback" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "rewrite an existing feedback saving non-editables" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "rewrite some fields of an existing feedback saving non-editables" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "list all order–product relations (simple view)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "retrieve a single order–product relation (detailed view)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "create a new order–product relation" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "replace an existing order–product relation" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "partially update an existing order–product relation" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "delete an order–product relation" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "add or remove feedback on an order–product relation" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "No search term provided." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Name" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Categories" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Categories Slugs" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Tags" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Min Price" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Max Price" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Is Active" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Brand" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Attributes" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Quantity" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Slug" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "Is Digital" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Include sub-categories" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Include personal ordered products" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "There must be a category_uuid to use include_subcategories flag" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Search (ID, product name or part number)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Bought after (inclusive)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Bought before (inclusive)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "User email" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "User UUID" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Status" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "Human Readable ID" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Parent" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Whole category(has at least 1 product or not)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Level" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "Product UUID" @@ -872,7 +886,7 @@ msgstr "Cached data" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON data from the requested URL" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" @@ -903,7 +917,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" @@ -956,11 +970,11 @@ msgstr "Buy an order" #: core/graphene/mutations.py:500 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" #: core/graphene/mutations.py:532 msgid "add or delete a feedback for orderproduct" @@ -979,9 +993,9 @@ msgstr "Orderproduct {order_product_uuid} not found!" msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}!" @@ -994,96 +1008,97 @@ msgstr "Limit must be between 1 and 10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - works like a charm" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Attributes" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Grouped attributes" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Groups of attributes" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Categories" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Brands" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Categories" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Markup Percentage" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 msgid "which attributes and values can be used for filtering this category." msgstr "Which attributes and values can be used for filtering this category." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimum and maximum prices for products in this category, if available." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Tags for this category" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Products in this category" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Latitude (Y coordinate)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Longitude (X coordinate)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Comment" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Represents feedback from a user." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "Download url for this order product if applicable" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "A list of order products in this order" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Billing address" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1091,51 +1106,51 @@ msgstr "" "Shipping address for this order, leave blank if same as billing address or " "if not applicable" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Total price of this order" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Total quantity of products in order" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Are all of the products in the order digital" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Transactions for this order" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Orders" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Product's images" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Category" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Attribute groups" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1143,7 +1158,7 @@ msgstr "Attribute groups" msgid "price" msgstr "Price" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1151,31 +1166,35 @@ msgstr "Price" msgid "quantity" msgstr "Quantity" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Number of feedbacks" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Products only available for personal orders" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Products" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Products on sale" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1183,634 +1202,643 @@ msgstr "Vendor" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Wishlisted products" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Wishlists" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Tagged products" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Product tags" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Tagged categories" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Categories' tags" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Project name" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "Company Email" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Company Name" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Company Address" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Company Phone Number" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "Email host user" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Maximum amount for payment" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Minimum amount for payment" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Analytics data" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Advertisement data" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Language code" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Language name" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Language flag, if exists :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Get a list of supported languages" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Products search results" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Products search results" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Parent of this group" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Parent attribute group" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Attribute group's name" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Attribute group" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stores credentials and endpoints required for vendor's API communication" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Authentication info" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "Define the markup for products retrieved from this vendor" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Vendor markup percentage" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Name of this vendor" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Vendor name" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Tag name" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Tag display name" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Product tag" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "category tag" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "category tags" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Upload an image representing this category" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Category image" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "Define a markup percentage for products in this category" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Parent of this category to form a hierarchical structure" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Parent category" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Category name" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Provide a name for this category" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Add a detailed description for this category" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Category description" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "tags that help describe or group this category" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Priority" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Name of this brand" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Brand name" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Upload a logo representing this brand" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Brand small image" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Upload a big logo representing this brand" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Brand big image" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Add a detailed description of the brand" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Brand description" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Optional categories that this brand is associated with" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Categories" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Associated vendor" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Selling price" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Associated product" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Quantity in stock" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "Vendor's SKU" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Digital file" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Stock entries" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Category this product belongs to" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Optionally associate this product with a brand" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Tags that help describe or group this product" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Indicates whether this product is digitally delivered" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "Is product digital" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Provide a clear identifying name for the product" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Product name" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Product description" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Part number for this product" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Part number" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Stock Keeping Unit for this product" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Category of this attribute" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Group of this attribute" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "String" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Integer" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Float" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Boolean" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Array" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Object" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Type of the attribute's value" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Value type" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Name of this attribute" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Attribute's name" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribute" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Attribute of this value" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "The specific value for this attribute" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Image alt text" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Product image" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Display priority" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "The product that this image represents" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Product images" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Discount percentage" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Promotion name" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Included products" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Promotion" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Wishlist" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Documentary" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Unresolved" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Address line for the customer" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Address line" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Street" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "District" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "City" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Region" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Postal code" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "Country" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Address" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Adresses" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "Unique code used by a user to redeem a discount" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Percentage discount" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "End validity time" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Start validity time" -#: core/models.py:1242 +#: core/models.py:1269 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Timestamp when the promocode was used, blank if not used yet" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Usage timestamp" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Assigned user" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Promo code" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1818,144 +1846,144 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "Promocode has been used already" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "The billing address used for this order" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Optional promo code applied to this order" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Applied promo code" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "The shipping address used for this order" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Shipping address" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Current status of the order in its lifecycle" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Order status" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "JSON representation of order attributes for this order" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "The user who placed the order" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "User" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "The timestamp when the order was finalized" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Buy time" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "A human-readable identifier for the order" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "human-readable ID" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Order" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "A user must have only one pending order at a time!" -#: core/models.py:1444 +#: core/models.py:1473 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" -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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" -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "You can only buy physical products with shipping address specified!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "Address does not exist" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Invalid force value" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "You cannot buy an order without a user!" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "A user without a balance cannot buy with balance!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1963,120 +1991,121 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Invalid payment method: {payment_method} from {available_payment_methods}!" -#: core/models.py:1768 +#: core/models.py:1802 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" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Internal comments" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "User notifications" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Parent order" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Product quantity" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Product line status" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "Orderproduct must have an associated order!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Wrong action specified for feedback: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 msgid "you cannot feedback an order which is not received" msgstr "you cannot feedback an order which is not received" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Download" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Downloads" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "You can not download a digital asset for a non-finished order" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "User-provided comments about their experience with the product" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Feedback comments" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Related order product" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "User-assigned rating for the product" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Product rating" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Feedback" @@ -2086,7 +2115,7 @@ msgid "" msgstr "" "you must provide a comment, rating, and order product uuid to add feedback." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Error during promocode creation: {e!s}" @@ -2118,12 +2147,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:" #: core/templates/digital_order_created_email.html:112 #: core/templates/digital_order_delivered_email.html:110 @@ -2212,12 +2240,11 @@ msgstr "Key" #: core/templates/shipped_order_created_email.html:101 #: 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:" #: core/templates/shipped_order_created_email.html:123 #: core/templates/shipped_order_delivered_email.html:123 @@ -2252,17 +2279,17 @@ msgstr "Both data and timeout are required" msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Invalid timeout value, it must be between 0 and 216000 seconds" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | contact us initiated" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Order Confirmation" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Order Delivered" @@ -2285,15 +2312,15 @@ msgstr "" msgid "invalid phone number format" msgstr "Invalid phone number format" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "You can only download the digital asset once" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "favicon not found" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geocoding error: {e}" diff --git a/core/locale/en_US/LC_MESSAGES/django.mo b/core/locale/en_US/LC_MESSAGES/django.mo index 76bb51d8..3b69df10 100644 Binary files a/core/locale/en_US/LC_MESSAGES/django.mo and b/core/locale/en_US/LC_MESSAGES/django.mo differ diff --git a/core/locale/en_US/LC_MESSAGES/django.po b/core/locale/en_US/LC_MESSAGES/django.po index 9e0a2164..b6811b83 100644 --- a/core/locale/en_US/LC_MESSAGES/django.po +++ b/core/locale/en_US/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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" #: core/abstract.py:20 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" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -59,70 +61,70 @@ msgstr "General" msgid "relations" msgstr "Relations" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Metadata" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Timestamps" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activate selected %(verbose_name_plural)s" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Selected items have been activated!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactivate selected %(verbose_name_plural)s" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Selected items have been deactivated!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Attribute Value" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Attribute Values" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Image" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Images" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Stock" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Stocks" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Order Product" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Order Products" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Children" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Config" @@ -218,187 +220,203 @@ msgstr "" "Purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "List all attribute groups (simple view)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Retrieve a single attribute group (detailed view)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Create an attribute group" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Delete an attribute group" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Rewrite some fields of an existing attribute group saving non-editables" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "List all attribute values (simple view)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Retrieve a single attribute value (detailed view)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Create an attribute value" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Delete an attribute value" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Rewrite some fields of an existing attribute value saving non-editables" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Create a category" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Delete a category" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "SEO Meta snapshot" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Returns a snapshot of the category's SEO meta data" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "Category UUID or slug" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "For non-staff users, only their own orders are returned." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filter orders with buy_time >= this ISO 8601 datetime" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filter orders with buy_time <= this ISO 8601 datetime" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filter by exact order UUID" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Filter by exact human-readable order ID" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "Filter by user's email (case-insensitive exact match)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filter by user's UUID" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "Filter by order status (case-insensitive substring match)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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')." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Purchase price at order time" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -408,19 +426,19 @@ msgstr "" "completed using the user's balance; If `force_payment` is used, a " "transaction is initiated." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizes the order purchase for a non-registered user." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -428,11 +446,11 @@ msgstr "" "Adds a product to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "Add a list of products to order, quantities will not count" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -440,11 +458,11 @@ msgstr "" "Adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -452,11 +470,11 @@ msgstr "" "Removes a product from an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "Remove a product from order, quantities will not count" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -464,386 +482,383 @@ msgstr "" "Removes a list of products from an order using the provided `product_uuid` " "and `attributes`." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "For non-staff users, only their own wishlists are returned." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Adds a product to an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Remove a product from the wishlist" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Removes a product from an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Add many products to the wishlist" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "Adds many products to an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(exact) Product UUID" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(icontains) Product name" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(list) Category names, case-insensitive" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(exact) Category UUID" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(list) Tag names, case-insensitive" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum stock price" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Maximum stock price" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(exact) Only active products" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Brand name" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum stock quantity" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. physical" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Update some fields of an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Delete a product" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "lists all permitted feedbacks for a product" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Returns a snapshot of the product's SEO meta data" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "List all addresses" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Retrieve a single address" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Create a new address" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Delete an address" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Update an entire address" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Partially update an address" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Autocomplete address input" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "Raw data query string, please append with data from geo-IP endpoint" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limits the results amount, 1 < limit < 10, default: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "list all feedbacks (simple view)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "retrieve a single feedback (detailed view)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "create a feedback" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "delete a feedback" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "rewrite an existing feedback saving non-editables" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "rewrite some fields of an existing feedback saving non-editables" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "list all order–product relations (simple view)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "retrieve a single order–product relation (detailed view)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "create a new order–product relation" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "replace an existing order–product relation" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "partially update an existing order–product relation" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "delete an order–product relation" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "add or remove feedback on an order–product relation" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "No search term provided." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Name" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Categories" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Categories Slugs" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Tags" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Min Price" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Max Price" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Is Active" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Brand" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Attributes" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Quantity" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Slug" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "Is Digital" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Include sub-categories" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Include personal ordered products" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "There must be a category_uuid to use include_subcategories flag" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Search (ID, product name or part number)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Bought after (inclusive)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Bought before (inclusive)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "User email" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "User UUID" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Status" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "Human Readable ID" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Parent" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Whole category(has at least 1 product or not)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Level" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "Product UUID" @@ -867,7 +882,7 @@ msgstr "Cached data" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON data from the requested URL" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" @@ -898,7 +913,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" @@ -951,11 +966,11 @@ msgstr "Buy an order" #: core/graphene/mutations.py:500 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" #: core/graphene/mutations.py:532 msgid "add or delete a feedback for orderproduct" @@ -974,9 +989,9 @@ msgstr "Orderproduct {order_product_uuid} not found!" msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}!" @@ -989,96 +1004,97 @@ msgstr "Limit must be between 1 and 10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - works like a charm" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Attributes" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Grouped attributes" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Groups of attributes" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Categories" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Brands" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Categories" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Markup Percentage" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 msgid "which attributes and values can be used for filtering this category." msgstr "Which attributes and values can be used for filtering this category." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimum and maximum prices for products in this category, if available." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Tags for this category" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Products in this category" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Latitude (Y coordinate)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Longitude (X coordinate)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "How to" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Represents feedback from a user." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "Download url for this order product if applicable" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "A list of order products in this order" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Billing address" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1086,51 +1102,51 @@ msgstr "" "Shipping address for this order, leave blank if same as billing address or " "if not applicable" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Total price of this order" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Total quantity of products in order" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Are all of the products in the order digital" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Transactions for this order" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Orders" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Product's images" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Category" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Attribute groups" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1138,7 +1154,7 @@ msgstr "Attribute groups" msgid "price" msgstr "Price" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1146,31 +1162,35 @@ msgstr "Price" msgid "quantity" msgstr "Quantity" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Number of feedbacks" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Products only available for personal orders" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Products" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Products on sale" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1178,634 +1198,643 @@ msgstr "Vendor" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Wishlisted products" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Wishlists" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Tagged products" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Product tags" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Tagged categories" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Categories' tags" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Project name" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "Company Email" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Company Name" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Company Address" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Company Phone Number" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "Email host user" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Maximum amount for payment" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Minimum amount for payment" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Analytics data" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Advertisement data" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Language code" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Language name" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Language flag, if exists :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Get a list of supported languages" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Products search results" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Products search results" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Parent of this group" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Parent attribute group" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Attribute group's name" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Attribute group" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stores credentials and endpoints required for vendor's API communication" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Authentication info" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "Define the markup for products retrieved from this vendor" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Vendor markup percentage" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Name of this vendor" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Vendor name" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Tag name" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Tag display name" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Product tag" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "category tag" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "category tags" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Upload an image representing this category" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Category image" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "Define a markup percentage for products in this category" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Parent of this category to form a hierarchical structure" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Parent category" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Category name" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Provide a name for this category" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Add a detailed description for this category" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Category description" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "tags that help describe or group this category" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Priority" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Name of this brand" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Brand name" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Upload a logo representing this brand" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Brand small image" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Upload a big logo representing this brand" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Brand big image" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Add a detailed description of the brand" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Brand description" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Optional categories that this brand is associated with" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Categories" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Associated vendor" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Selling price" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Associated product" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Quantity in stock" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "Vendor's SKU" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Digital file" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Stock entries" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Category this product belongs to" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Optionally associate this product with a brand" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Tags that help describe or group this product" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Indicates whether this product is digitally delivered" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "Is product digital" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Provide a clear identifying name for the product" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Product name" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Product description" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Part number for this product" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Part number" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Stock Keeping Unit for this product" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Category of this attribute" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Group of this attribute" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "String" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Integer" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Float" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Boolean" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Array" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Object" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Type of the attribute's value" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Value type" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Name of this attribute" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Attribute's name" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribute" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Attribute of this value" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "The specific value for this attribute" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Image alt text" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Product image" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Display priority" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "The product that this image represents" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Product images" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Discount percentage" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Promotion name" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Included products" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Promotion" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Wishlist" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Documentary" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Unresolved" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Address line for the customer" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Address line" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Street" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "District" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "City" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Region" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Postal code" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "Country" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Address" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Adresses" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "Unique code used by a user to redeem a discount" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Percentage discount" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "End validity time" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Start validity time" -#: core/models.py:1242 +#: core/models.py:1269 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Timestamp when the promocode was used, blank if not used yet" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Usage timestamp" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Assigned user" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Promo code" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1813,144 +1842,144 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "Promocode has been used already" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "The billing address used for this order" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Optional promo code applied to this order" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Applied promo code" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "The shipping address used for this order" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Shipping address" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Current status of the order in its lifecycle" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Order status" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "JSON representation of order attributes for this order" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "The user who placed the order" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "User" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "The timestamp when the order was finalized" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Buy time" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "A human-readable identifier for the order" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "human-readable ID" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Order" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "A user must have only one pending order at a time!" -#: core/models.py:1444 +#: core/models.py:1473 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" -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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" -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "You can only buy physical products with shipping address specified!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "Address does not exist" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Invalid force value" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "You cannot buy an order without a user!" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "A user without a balance cannot buy with balance!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1958,120 +1987,121 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Invalid payment method: {payment_method} from {available_payment_methods}!" -#: core/models.py:1768 +#: core/models.py:1802 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" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Internal comments" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "User notifications" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Parent order" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Product quantity" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Product line status" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "Orderproduct must have an associated order!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Wrong action specified for feedback: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 msgid "you cannot feedback an order which is not received" msgstr "you cannot feedback an order which is not received" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Download" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Downloads" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "You can not download a digital asset for a non-finished order" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "User-provided comments about their experience with the product" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Feedback comments" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Related order product" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "User-assigned rating for the product" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Product rating" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Feedback" @@ -2081,7 +2111,7 @@ msgid "" msgstr "" "you must provide a comment, rating, and order product uuid to add feedback." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Error during promocode creation: {e!s}" @@ -2113,12 +2143,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:" #: core/templates/digital_order_created_email.html:112 #: core/templates/digital_order_delivered_email.html:110 @@ -2207,12 +2236,11 @@ msgstr "Key" #: core/templates/shipped_order_created_email.html:101 #: 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:" #: core/templates/shipped_order_created_email.html:123 #: core/templates/shipped_order_delivered_email.html:123 @@ -2247,17 +2275,17 @@ msgstr "Both data and timeout are required" msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Invalid timeout value, it must be between 0 and 216000 seconds" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | contact us initiated" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Order Confirmation" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Order Delivered" @@ -2280,15 +2308,15 @@ msgstr "" msgid "invalid phone number format" msgstr "Invalid phone number format" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "You can only download the digital asset once" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "favicon not found" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geocoding error: {e}" diff --git a/core/locale/es_ES/LC_MESSAGES/django.mo b/core/locale/es_ES/LC_MESSAGES/django.mo index 6347fe2c..8b0e85f8 100644 Binary files a/core/locale/es_ES/LC_MESSAGES/django.mo and b/core/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/core/locale/es_ES/LC_MESSAGES/django.po b/core/locale/es_ES/LC_MESSAGES/django.po index ea18d7c6..7f5c6d7d 100644 --- a/core/locale/es_ES/LC_MESSAGES/django.po +++ b/core/locale/es_ES/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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" #: core/abstract.py:20 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" @@ -62,70 +63,70 @@ msgstr "General" msgid "relations" msgstr "Relaciones" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Metadatos" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Marcas de tiempo" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activar %(verbose_name_plural)s seleccionado" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Los artículos seleccionados se han activado." -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Desactivar %(verbose_name_plural)s seleccionado" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Los artículos seleccionados se han desactivado." -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Atributo Valor" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Valores de los atributos" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Imagen" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Imágenes" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Stock" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Acciones" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Pedir un producto" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Pedir productos" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Niños" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Configurar" @@ -187,8 +188,7 @@ msgid "" "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é." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -220,204 +220,221 @@ 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`." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "Lista de todos los grupos de atributos (vista simple)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperar un único grupo de atributos (vista detallada)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Crear un grupo de atributos" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Eliminar un grupo de atributos" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescribir un grupo de atributos existente guardando los no editables" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +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" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "Listar todos los atributos (vista simple)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperar un único atributo (vista detallada)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Crear un atributo" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Borrar un atributo" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "Reescribir un atributo existente guardando los no editables" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 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" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "Listar todos los valores de atributos (vista simple)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperar un único valor de atributo (vista detallada)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Crear un valor de atributo" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Borrar un valor de atributo" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescribir un valor de atributo existente guardando los no editables" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +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" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "Lista de todas las categorías (vista simple)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Recuperar una sola categoría (vista detallada)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Crear una categoría" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Eliminar una categoría" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "Reescribir una categoría existente guardando los no editables" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "SEO Meta snapshot" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Devuelve una instantánea de los metadatos SEO de la categoría" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "UUID o slug de la categoría" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "Lista de todas las categorías (vista simple)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "" "Para los usuarios que no forman parte del personal, sólo se devuelven sus " "propios pedidos." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrar los pedidos con buy_time >= esta fecha ISO 8601" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrar pedidos con hora de compra <= esta fecha ISO 8601" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filtrar por UUID de pedido exacto" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Filtrar por ID de pedido exacto legible por el ser humano" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 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)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filtrar por UUID de usuario" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtrar por estado del pedido (coincidencia de subcadenas insensible a " "mayúsculas y minúsculas)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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 " "(por ejemplo, '-tiempo_compra')." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Recuperar una sola categoría (vista detallada)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Crear un atributo" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "No funciona para los usuarios que no son personal." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Borrar un atributo" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "Reescribir una categoría existente guardando los no editables" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Precio de compra en el momento del pedido" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -427,19 +444,19 @@ msgstr "" "finaliza utilizando el saldo del usuario; Si se utiliza `force_payment`, se " "inicia una transacción." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "comprar un pedido sin crear una cuenta" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "finaliza la compra del pedido para un usuario no registrado." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Añadir un producto al pedido" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -447,11 +464,11 @@ msgstr "" "Añade un producto a un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "Añadir una lista de productos a la orden, las cantidades no contarán" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -459,11 +476,11 @@ msgstr "" "Añade una lista de productos a un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Eliminar un producto del pedido" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -471,11 +488,11 @@ msgstr "" "Elimina un producto de un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "Eliminar un producto del pedido, las cantidades no contarán" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -483,405 +500,402 @@ msgstr "" "Elimina una lista de productos de un pedido utilizando el `product_uuid` y " "los `attributes` proporcionados." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "Listar todos los atributos (vista simple)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Para los usuarios que no forman parte del personal, sólo se devuelven sus " "propias listas de deseos." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperar un único atributo (vista detallada)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Crear un atributo" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "No funciona para los usuarios que no son personal." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Borrar un atributo" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "Reescribir un atributo existente guardando los no editables" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 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" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Añadir un producto al pedido" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Añade un producto a una lista de deseos utilizando el `product_uuid` " "proporcionado" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Eliminar un producto de la lista de deseos" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Elimina un producto de una lista de deseos utilizando el `product_uuid` " "proporcionado." -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Añadir muchos productos a la lista de deseos" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Añade varios productos a una lista de deseos utilizando los `product_uuids` " "proporcionados." -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Eliminar un producto del pedido" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Elimina varios productos de una lista de deseos utilizando los " "`product_uuids` proporcionados." -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`." -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "Listar todos los productos (vista simple)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "UUID (exacto) del producto" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(icontains) Nombre del producto" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "" "(lista) Nombres de categoría, sin distinción entre mayúsculas y minúsculas" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(exacto) Categoría UUID" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "" "(lista) Nombres de etiquetas, sin distinción entre mayúsculas y minúsculas" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Precio mínimo de las acciones" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Precio máximo de las acciones" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(exacto) Sólo productos activos" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Marca" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Cantidad mínima de existencias" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(exacto) Digital frente a físico" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Recuperar un solo producto (vista detallada)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "UUID o babosa del producto" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Crear un producto" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Reescribir un producto existente conservando los campos no editables" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Actualizar algunos campos de un producto existente, conservando los campos " "no editables" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Eliminar un producto" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "enumera todas las opiniones permitidas sobre un producto" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Devuelve una instantánea de los metadatos SEO del producto" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "Enumerar todas las direcciones" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Recuperar una única dirección" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Crear una nueva dirección" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Borrar una dirección" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Actualizar una dirección completa" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Actualizar parcialmente una dirección" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Autocompletar direcciones" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Cadena de consulta de datos sin procesar, adjunte los datos del punto final " "geo-IP" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita la cantidad de resultados, 1 < límite < 10, por defecto: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "lista de todas las reacciones (vista simple)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "recuperar una sola respuesta (vista detallada)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "crear una retroalimentación" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "eliminar un comentario" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "reescribir una respuesta existente guardando los no editables" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "listar todas las relaciones pedido-producto (vista simple)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "recuperar una única relación pedido-producto (vista detallada)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "crear una nueva relación pedido-producto" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "sustituir una relación pedido-producto existente" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "actualizar parcialmente una relación pedido-producto existente" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "suprimir una relación pedido-producto" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "añadir o eliminar comentarios en una relación pedido-producto" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "No se proporciona ningún término de búsqueda." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Nombre" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Categorías" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Categorías Babosas" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Etiquetas" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Precio mínimo" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Precio máximo" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Está activo" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Marca" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Atributos" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Cantidad" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Babosa" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "Es Digital" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Incluir subcategorías" -#: core/filters.py:147 -msgid "there must be a category_uuid to use include_subcategories flag" -msgstr "Debe haber un category_uuid para usar la bandera include_subcategories" +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Incluir productos personales solicitados" -#: core/filters.py:280 +#: core/filters.py:160 +msgid "there must be a category_uuid to use include_subcategories flag" +msgstr "" +"Debe haber un category_uuid para usar la bandera include_subcategories" + +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Búsqueda (ID, nombre del producto o número de pieza)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Comprado después (inclusive)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Comprado antes (inclusive)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "Correo electrónico del usuario" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "UUID de usuario" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Estado" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "Identificación legible" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Padres" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Toda la categoría (tenga o no al menos 1 producto)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Nivel" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "UUID del producto" @@ -905,7 +919,7 @@ msgstr "Datos en caché" msgid "camelized JSON data from the requested URL" msgstr "Datos JSON camelizados de la URL solicitada" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Sólo se permiten URL que empiecen por http(s)://." @@ -936,9 +950,10 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Indique order_uuid o order_hr_id, ¡se excluyen mutuamente!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 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}" #: core/graphene/mutations.py:237 msgid "perform an action on a list of products in the order" @@ -989,11 +1004,11 @@ msgstr "Comprar un pedido" #: core/graphene/mutations.py:500 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" #: core/graphene/mutations.py:532 msgid "add or delete a feedback for orderproduct" @@ -1012,9 +1027,9 @@ msgstr "No se ha encontrado el producto {order_product_uuid}." msgid "original address string provided by the user" msgstr "Cadena de dirección original proporcionada por el usuario" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} no existe: ¡{uuid}!" @@ -1027,99 +1042,101 @@ msgstr "El límite debe estar entre 1 y 10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funciona a las mil maravillas" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Atributos" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Atributos agrupados" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Categorías" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Marcas" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Categorías" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Porcentaje de recargo" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 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." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +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." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Etiquetas para esta categoría" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Productos de esta categoría" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Vendedores" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Latitud (coordenada Y)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Longitud (coordenada X)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Cómo" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Representa la opinión de un usuario." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Notificaciones" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "Descargar url para este producto de pedido si procede" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "Una lista de los productos del pedido" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Dirección de facturación" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1127,51 +1144,51 @@ 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" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Precio total de este pedido" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Cantidad total de productos del pedido" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "¿Están todos los productos en el pedido digital" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Transacciones para este pedido" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Pedidos" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "URL de la imagen" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Imágenes del producto" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Categoría" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Comentarios" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Marca" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1179,7 +1196,7 @@ msgstr "Grupos de atributos" msgid "price" msgstr "Precio" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1187,31 +1204,35 @@ msgstr "Precio" msgid "quantity" msgstr "Cantidad" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Número de reacciones" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Productos sólo disponibles para pedidos personales" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Productos" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Códigos promocionales" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Productos a la venta" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Promociones" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Vendedor" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1219,640 +1240,649 @@ msgstr "Vendedor" msgid "product" msgstr "Producto" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Productos deseados" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Listas de deseos" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Productos con etiqueta" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Etiquetas del producto" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Categorías" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Etiquetas de las categorías" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Nombre del proyecto" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "Correo electrónico de la empresa" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Nombre de la empresa" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Dirección de la empresa" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Teléfono de la empresa" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "Correo electrónico del usuario anfitrión" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Importe máximo de pago" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Importe mínimo de pago" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Datos analíticos" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Datos publicitarios" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Configuración" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Código de idioma" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Nombre de la lengua" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Bandera de idioma, si existe :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Obtener una lista de los idiomas admitidos" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Resultados de la búsqueda de productos" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Resultados de la búsqueda de productos" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Padre de este grupo" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Grupo de atributos padre" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Nombre del grupo de atributos" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Grupo de atributos" -#: core/models.py:150 +#: core/models.py:151 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" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Información de autenticación" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definir el margen de beneficio para los productos recuperados de este " "proveedor" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Porcentaje de margen del vendedor" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Nombre de este vendedor" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Nombre del vendedor" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Identificador interno de la etiqueta del producto" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Nombre de la etiqueta" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "Nombre fácil de usar para la etiqueta del producto" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Nombre de la etiqueta" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Etiqueta del producto" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "etiqueta de categoría" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "etiquetas de categoría" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Cargar una imagen que represente esta categoría" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Categoría imagen" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "Definir un porcentaje de recargo para los productos de esta categoría" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Padre de esta categoría para formar una estructura jerárquica" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Categoría de padres" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Nombre de la categoría" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Indique un nombre para esta categoría" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Añadir una descripción detallada para esta categoría" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Descripción de la categoría" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "etiquetas que ayudan a describir o agrupar esta categoría" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Prioridad" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Nombre de esta marca" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Marca" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Cargar un logotipo que represente a esta marca" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Marca pequeña imagen" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Sube un logotipo grande que represente a esta marca" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Gran imagen de marca" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Añadir una descripción detallada de la marca" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Descripción de la marca" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Categorías opcionales a las que se asocia esta marca" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Categorías" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "El vendedor que suministra este producto dispone de" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Proveedor asociado" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Precio final al cliente después de márgenes" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Precio de venta" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "El producto asociado a esta entrada en stock" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Producto asociado" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "El precio pagado al vendedor por este producto" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Precio de compra al vendedor" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Cantidad disponible del producto en stock" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Cantidad en stock" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU asignada por el proveedor para identificar el producto" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "SKU del vendedor" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "Archivo digital asociado a esta acción, si procede" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Archivo digital" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Entradas en existencias" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Categoría a la que pertenece este producto" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Si lo desea, puede asociar este producto a una marca" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Etiquetas que ayudan a describir o agrupar este producto" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Indica si este producto se entrega digitalmente" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "¿Es digital el producto?" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Proporcionar un nombre que identifique claramente el producto" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Nombre del producto" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Añada una descripción detallada del producto" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Descripción del producto" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Número de pieza de este producto" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Número de pieza" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Unidad de Mantenimiento de Existencias para este producto" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Categoría de este atributo" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Grupo de este atributo" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "Cadena" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Entero" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Flotador" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Booleano" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Matriz" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Objeto" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Tipo del valor del atributo" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Tipo de valor" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Nombre de este atributo" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Nombre del atributo" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Atributo" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Atributo de este valor" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "El producto específico asociado al valor de este atributo" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "El valor específico de este atributo" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "" "Proporcione un texto alternativo para la imagen en aras de la accesibilidad" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Texto alternativo de la imagen" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Cargar el archivo de imagen para este producto" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Imagen del producto" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Determina el orden de visualización de las imágenes" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Prioridad de visualización" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "El producto que representa esta imagen" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Imágenes de productos" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Porcentaje de descuento para los productos seleccionados" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Porcentaje de descuento" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Proporcione un nombre único para esta promoción" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Nombre de la promoción" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Descripción de la promoción" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Seleccione los productos incluidos en esta promoción" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Productos incluidos" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Promoción" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Productos que el usuario ha marcado como deseados" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "Usuario propietario de esta lista de deseos" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Propietario de Wishlist" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Lista de deseos" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Documental" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Sin resolver" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Dirección del cliente" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Dirección" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Calle" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "Distrito" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "Ciudad" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Región" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Promo code" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "País" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocalización Punto(Longitud, Latitud)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Respuesta JSON completa del geocodificador para esta dirección" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Respuesta JSON almacenada del servicio de geocodificación" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Dirección" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Direcciones" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "Código único utilizado por un usuario para canjear un descuento" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "Se aplica un descuento fijo si no se utiliza el porcentaje" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Importe fijo del descuento" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "Porcentaje de descuento aplicado si no se utiliza el importe fijo" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Porcentaje de descuento" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Fecha de caducidad del promocode" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "Hora de fin de validez" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Fecha a partir de la cual es válido este promocode" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Hora de inicio de validez" -#: core/models.py:1242 +#: core/models.py:1269 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" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Marca de tiempo de uso" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "Usuario asignado a este promocode si procede" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Usuario asignado" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Promo code" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1860,146 +1890,146 @@ msgstr "" "Sólo debe definirse un tipo de descuento (importe o porcentaje), pero no " "ambos ni ninguno." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "El código promocional ya ha sido utilizado" -#: core/models.py:1295 +#: core/models.py:1322 #, 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}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "La dirección de facturación utilizada para este pedido" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Código promocional opcional aplicado a este pedido" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Código promocional aplicado" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "La dirección de envío utilizada para este pedido" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Dirección de envío" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Estado actual del pedido en su ciclo de vida" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Estado del pedido" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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." -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "Representación JSON de los atributos de la orden para esta orden" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "El usuario que realizó el pedido" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "Usuario" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "Fecha de finalización de la orden" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Comprar tiempo" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "Un identificador legible por el ser humano para la orden" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "ID legible por humanos" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Pida" -#: core/models.py:1410 +#: core/models.py:1439 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." -#: core/models.py:1444 +#: core/models.py:1473 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" -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "No se pueden añadir productos inactivos al pedido" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "No puede añadir más productos de los disponibles en stock" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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" -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} ¡no existe con la consulta <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Promocode no existe" -#: core/models.py:1547 +#: core/models.py:1576 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." -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "La dirección no existe" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Valor de fuerza no válido" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "No se puede comprar un pedido vacío." -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "No se puede comprar un pedido sin un usuario." -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "¡Un usuario sin saldo no puede comprar con saldo!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Fondos insuficientes para completar el pedido" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2007,123 +2037,124 @@ 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" -#: core/models.py:1666 +#: core/models.py:1700 #, 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}!" -#: core/models.py:1768 +#: core/models.py:1802 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" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Precio de compra en el momento del pedido" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarios internos para los administradores sobre este producto solicitado" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Comentarios internos" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "Notificaciones a los usuarios" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "Representación JSON de los atributos de este elemento" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Atributos ordenados del producto" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Referencia al pedido principal que contiene este producto" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Orden de los padres" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "El producto específico asociado a esta línea de pedido" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Cantidad de este producto específico en el pedido" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Cantidad de productos" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Estado actual de este producto en el pedido" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Estado de la línea de productos" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "El pedido-producto debe tener un pedido asociado." -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Acción incorrecta especificada para la retroalimentación: ¡{action}!" -#: core/models.py:1888 +#: core/models.py:1922 msgid "you cannot feedback an order which is not received" msgstr "no se puede comentar un pedido no recibido" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Descargar" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Descargas" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "No puede descargar un activo digital para un pedido no finalizado" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "Comentarios de los usuarios sobre su experiencia con el producto" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Comentarios" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Producto relacionado con el pedido" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "Valoración del producto asignada por el usuario" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Valoración del producto" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Comentarios" @@ -2134,7 +2165,7 @@ msgstr "" "debe proporcionar un comentario, una valoración y el uuid del producto " "solicitado para añadir comentarios." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Error durante la creación del promocode: {e!s}" @@ -2166,8 +2197,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 " @@ -2260,8 +2290,7 @@ msgstr "Clave" #: core/templates/shipped_order_created_email.html:101 #: 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 " @@ -2301,17 +2330,17 @@ 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." -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | contacto iniciado" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Confirmación de pedido" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Pedido entregado" @@ -2335,15 +2364,15 @@ msgstr "" msgid "invalid phone number format" msgstr "Formato de número de teléfono no válido" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "Sólo puede descargar el activo digital una vez" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "favicon no encontrado" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Error de geocodificación: {e}" diff --git a/core/locale/fr_FR/LC_MESSAGES/django.mo b/core/locale/fr_FR/LC_MESSAGES/django.mo index bc856c1c..8cc61db0 100644 Binary files a/core/locale/fr_FR/LC_MESSAGES/django.mo and b/core/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/core/locale/fr_FR/LC_MESSAGES/django.po b/core/locale/fr_FR/LC_MESSAGES/django.po index 1ca76be8..3534c028 100644 --- a/core/locale/fr_FR/LC_MESSAGES/django.po +++ b/core/locale/fr_FR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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 actif" #: core/abstract.py:20 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." @@ -62,70 +63,70 @@ msgstr "Général" msgid "relations" msgstr "Relations" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Métadonnées" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Horodatage" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activer la %(verbose_name_plural)s sélectionnée" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Les articles sélectionnés ont été activés !" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Désactiver la %(verbose_name_plural)s sélectionnée" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Les articles sélectionnés ont été désactivés !" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Valeur de l'attribut" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Valeurs des attributs" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Image" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Images" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Stock" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Stocks" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Commander un produit" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Commander des produits" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Les enfants" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Config" @@ -186,10 +187,8 @@ 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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -224,228 +223,244 @@ msgstr "" "Acheter une commande en tant qu'entreprise, en utilisant les `produits` " "fournis avec `product_uuid` et `attributs`." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "Liste de tous les groupes d'attributs (vue simple)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Récupérer un seul groupe d'attributs (vue détaillée)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Créer un groupe d'attributs" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Supprimer un groupe d'attributs" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Réécrire un groupe d'attributs existant en sauvegardant les éléments non " "modifiables" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +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" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "Liste de tous les attributs (vue simple)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Récupérer un seul attribut (vue détaillée)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Créer un attribut" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Supprimer un attribut" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Réécrire un attribut existant en sauvegardant les éléments non modifiables" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 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" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "Liste de toutes les valeurs d'attributs (vue simple)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Récupérer une seule valeur d'attribut (vue détaillée)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Créer une valeur d'attribut" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Supprimer une valeur d'attribut" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Réécrire une valeur d'attribut existante en sauvegardant les éléments non " "modifiables" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +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" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "Liste de toutes les catégories (vue simple)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Récupérer une seule catégorie (vue détaillée)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Créer une catégorie" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Supprimer une catégorie" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "Réécrire une catégorie existante en sauvegardant les non-éditables" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "Méta snapshot SEO" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Renvoie un instantané des métadonnées SEO de la catégorie." + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "Catégorie UUID ou slug" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "Liste de toutes les catégories (vue simple)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "" "Pour les utilisateurs non fonctionnaires, seules leurs propres commandes " "sont renvoyées." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrer les commandes dont l'heure d'achat est >= cette date ISO 8601" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrer les commandes avec buy_time <= this ISO 8601 datetime" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filtre sur l'UUID exact de l'ordre" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Filtre sur l'identifiant exact de la commande, lisible par l'homme" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtre sur l'adresse électronique de l'utilisateur (correspondance exacte " "insensible à la casse)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filtrer par UUID de l'utilisateur" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtre sur l'état de la commande (correspondance insensible aux majuscules " "et aux minuscules)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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')." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Récupérer une seule catégorie (vue détaillée)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Créer un attribut" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Ne fonctionne pas pour les utilisateurs non fonctionnaires." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Supprimer un attribut" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "Réécrire une catégorie existante en sauvegardant les non-éditables" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Prix d'achat au moment de la commande" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "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." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "acheter une commande sans créer de compte" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "finalise l'achat d'une commande pour un utilisateur non enregistré." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Ajouter un produit à la commande" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -453,13 +468,13 @@ msgstr "" "Ajoute un produit à une commande en utilisant le `product_uuid` et les " "`attributs` fournis." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "" "Ajouter une liste de produits à la commande, les quantités ne seront pas " "prises en compte" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -467,11 +482,11 @@ msgstr "" "Ajoute une liste de produits à une commande en utilisant le `product_uuid` " "et les `attributs` fournis." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Supprimer un produit de la commande" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -479,424 +494,419 @@ msgstr "" "Supprime un produit d'une commande en utilisant le `product_uuid` et les " "`attributs` fournis." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "" "Retirer un produit de la commande, les quantités ne seront pas prises en " "compte" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 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." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "Liste de tous les attributs (vue simple)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Pour les utilisateurs non fonctionnaires, seules leurs propres listes de " "souhaits sont renvoyées." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Récupérer un seul attribut (vue détaillée)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Créer un attribut" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Ne fonctionne pas pour les utilisateurs non fonctionnaires." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Supprimer un attribut" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Réécrire un attribut existant en sauvegardant les éléments non modifiables" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 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" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Ajouter un produit à la commande" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Ajoute un produit à une liste de souhaits en utilisant le `product_uuid` " "fourni" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Supprimer un produit de la liste de souhaits" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Supprime un produit d'une liste de souhaits en utilisant l'identifiant " "`product_uuid` fourni." -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Ajouter plusieurs produits à la liste de souhaits" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Ajoute plusieurs produits à une liste de souhaits en utilisant les " "`product_uuids` fournis" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Supprimer un produit de la commande" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Supprime plusieurs produits d'une liste de souhaits en utilisant les " "`product_uuids` fournis" -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "Liste de tous les produits (vue simple)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "UUID (exact) du produit" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(icontains) Nom du produit" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(liste) Noms de catégories, insensibles à la casse" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "UUID (exact) de la catégorie" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(liste) Noms d'étiquettes, insensibles à la casse" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Prix minimum de l'action" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Prix maximum de l'action" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(exact) Uniquement les produits actifs" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Nom de marque" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantité minimale en stock" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(exact) Numérique ou physique" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Récupérer un seul produit (vue détaillée)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "UUID ou Slug du produit" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Créer un produit" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Réécrire un produit existant en préservant les champs non modifiables" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Mettre à jour certains champs d'un produit existant, en préservant les " "champs non modifiables" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Supprimer un produit" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "liste tous les commentaires autorisés pour un produit" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Renvoie un instantané des métadonnées SEO du produit" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "Liste de toutes les adresses" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Récupérer une seule adresse" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Créer une nouvelle adresse" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Supprimer une adresse" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Mise à jour d'une adresse entière" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Mise à jour partielle d'une adresse" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Saisie automatique des adresses" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Chaîne de requête de données brutes, à compléter avec les données du point " "d'extrémité géo-IP" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limite la quantité de résultats, 1 < limite < 10, par défaut : 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "liste de tous les commentaires (vue simple)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "récupérer un seul retour d'information (vue détaillée)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "créer un retour d'information" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "supprimer un feedback" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "" "réécrire un feedback existant en sauvegardant les éléments non modifiables" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "lister toutes les relations commande-produit (vue simple)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "récupérer une seule relation commande-produit (vue détaillée)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "créer une nouvelle relation commande-produit" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "remplacer une relation commande-produit existante" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "mettre à jour partiellement une relation commande-produit existante" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "supprimer une relation commande-produit" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "" "ajouter ou supprimer un retour d'information sur une relation commande-" "produit" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "Aucun terme de recherche n'est fourni." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Nom" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Catégories" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Catégories Limaces" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Tags" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Prix minimum" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Prix maximum" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Est actif" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Marque" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Attributs" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Quantité" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Limace" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "Is Digital" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Inclure des sous-catégories" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Inclure les produits commandés par les particuliers" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Il doit y avoir un category_uuid pour utiliser le drapeau " "include_subcategories" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Recherche (ID, nom du produit ou numéro de pièce)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Acheté après (inclus)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Acheté avant (inclus)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "Courriel de l'utilisateur" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "UUID de l'utilisateur" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Statut" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "ID lisible par l'homme" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Parent" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Catégorie entière (avec au moins 1 produit ou non)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Niveau" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "UUID du produit" @@ -920,7 +930,7 @@ msgstr "Données mises en cache" msgid "camelized JSON data from the requested URL" msgstr "Données JSON camélisées provenant de l'URL demandée" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Seuls les URL commençant par http(s):// sont autorisés." @@ -953,7 +963,7 @@ msgstr "" "mutuellement !" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 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}" @@ -1008,8 +1018,8 @@ msgstr "Acheter une commande" #: core/graphene/mutations.py:500 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." @@ -1033,9 +1043,9 @@ msgstr "Le produit {order_product_uuid} n'a pas été trouvé !" msgid "original address string provided by the user" msgstr "Chaîne d'adresse originale fournie par l'utilisateur" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} n'existe pas : {uuid} !" @@ -1048,151 +1058,152 @@ msgstr "La limite doit être comprise entre 1 et 10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fonctionne comme un charme" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Attributs" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Attributs groupés" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Groupes d'attributs" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Catégories" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Marques" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Catégories" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Markup Percentage" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 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." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +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." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Tags pour cette catégorie" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Produits dans cette catégorie" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Vendeurs" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Latitude (coordonnée Y)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Longitude (coordonnée X)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Comment" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Représente le retour d'information d'un utilisateur." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 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" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "Une liste des produits commandés dans cette commande" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Adresse de facturation" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 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" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Prix total de la commande" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Quantité totale de produits dans la commande" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Tous les produits de la commande sont-ils numériques ?" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Transactions pour cette commande" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Commandes" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Images du produit" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Catégorie" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Retour d'information" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Marque" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Groupes d'attributs" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1200,7 +1211,7 @@ msgstr "Groupes d'attributs" msgid "price" msgstr "Prix" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1208,31 +1219,35 @@ msgstr "Prix" msgid "quantity" msgstr "Quantité" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Nombre de retours d'information" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Produits disponibles uniquement pour les commandes personnelles" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Produits" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Produits en vente" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Vendeur" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1240,641 +1255,653 @@ msgstr "Vendeur" msgid "product" msgstr "Produit" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Produits en liste de souhaits" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Liste de souhaits" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Produits marqués" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Étiquettes du produit" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Catégories marquées" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Tags des catégories" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Nom du projet" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "Courriel de l'entreprise" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Nom de l'entreprise" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Adresse de l'entreprise" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Numéro de téléphone de l'entreprise" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "Utilisateur de l'hôte de messagerie" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Montant maximum du paiement" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Montant minimum pour le paiement" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Données analytiques" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Advertisement data" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Code langue" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Nom de la langue" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Drapeau linguistique, s'il existe :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Obtenir la liste des langues prises en charge" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Résultats de la recherche de produits" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Résultats de la recherche de produits" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Parent de ce groupe" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Groupe d'attributs parent" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Nom du groupe d'attributs" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Groupe d'attributs" -#: core/models.py:150 +#: core/models.py:151 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." -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Informations sur l'authentification" -#: core/models.py:156 +#: core/models.py:157 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" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Pourcentage de marge du vendeur" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Nom de ce vendeur" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Nom du vendeur" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Identifiant interne de l'étiquette du produit" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Nom du jour" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "Nom convivial pour l'étiquette du produit" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Nom d'affichage de l'étiquette" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Étiquette du produit" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "étiquette de catégorie" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "balises de catégorie" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Télécharger une image représentant cette catégorie" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Image de catégorie" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "" "Définir un pourcentage de majoration pour les produits de cette catégorie" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Parent de cette catégorie pour former une structure hiérarchique" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Catégorie de parents" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Nom de la catégorie" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Donnez un nom à cette catégorie" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Ajouter une description détaillée pour cette catégorie" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Description de la catégorie" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "les étiquettes qui aident à décrire ou à regrouper cette catégorie" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Priorité" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Nom de cette marque" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Nom de marque" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Télécharger un logo représentant cette marque" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Petite image de marque" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Télécharger un grand logo représentant cette marque" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Une grande image de marque" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Ajouter une description détaillée de la marque" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Description de la marque" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Catégories facultatives auxquelles cette marque est associée" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Catégories" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "Le vendeur qui fournit ce stock de produits" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Vendeur associé" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Prix final pour le client après majoration" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Prix de vente" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "Le produit associé à cette entrée de stock" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Produit associé" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "Le prix payé au vendeur pour ce produit" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Prix d'achat du vendeur" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Quantité disponible du produit en stock" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Quantité en stock" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU attribué par le fournisseur pour identifier le produit" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "UGS du vendeur" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "Fichier numérique associé à ce stock, le cas échéant" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Fichier numérique" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Entrées de stock" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Catégorie à laquelle appartient ce produit" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Possibilité d'associer ce produit à une marque" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Étiquettes permettant de décrire ou de regrouper ce produit" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Indique si ce produit est livré numériquement" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "Le produit est-il numérique ?" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Fournir un nom d'identification clair pour le produit" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Nom du produit" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Ajouter une description détaillée du produit" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Description du produit" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Numéro de pièce pour ce produit" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Numéro de pièce" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Unité de gestion des stocks pour ce produit" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Catégorie de cet attribut" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Groupe de cet attribut" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "Chaîne" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Entier" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Flotteur" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Booléen" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Tableau" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Objet" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Type de la valeur de l'attribut" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Type de valeur" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Nom de cet attribut" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Nom de l'attribut" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribut" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Attribut de cette valeur" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "Le produit spécifique associé à la valeur de cet attribut" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "La valeur spécifique de cet attribut" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "Fournir un texte alternatif pour l'image afin d'en faciliter l'accès" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Texte alt de l'image" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Télécharger le fichier image pour ce produit" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Image du produit" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Détermine l'ordre d'affichage des images" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Priorité à l'affichage" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "Le produit que cette image représente" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Images du produit" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Pourcentage de réduction pour les produits sélectionnés" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Pourcentage de réduction" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Donnez un nom unique à cette promotion" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Nom de la promotion" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Sélectionnez les produits inclus dans cette promotion" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Produits inclus" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Promotion" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Produits que l'utilisateur a marqués comme souhaités" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "Utilisateur qui possède cette liste de souhaits" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Propriétaire de la liste de souhaits" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Liste de souhaits" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Documentaire" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Documentaires" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Non résolu" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Ligne d'adresse du client" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Ligne d'adresse" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Rue" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "District" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "Ville" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Région" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Code postal" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "Pays" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Point de géolocalisation (longitude, latitude)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Réponse JSON complète du géocodeur pour cette adresse" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Réponse JSON stockée du service de géocodage" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Adresse" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Adresses" -#: core/models.py:1209 +#: core/models.py:1236 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" +msgstr "" +"Code unique utilisé par un utilisateur pour bénéficier d'une réduction" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Identifiant du code promotionnel" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" -msgstr "Montant fixe de la remise appliqué si le pourcentage n'est pas utilisé" +msgstr "" +"Montant fixe de la remise appliqué si le pourcentage n'est pas utilisé" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Montant de l'escompte fixe" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" -msgstr "Pourcentage de réduction appliqué si le montant fixe n'est pas utilisé" +msgstr "" +"Pourcentage de réduction appliqué si le montant fixe n'est pas utilisé" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Pourcentage de réduction" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Date d'expiration du code promotionnel" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "Heure de fin de validité" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Date à partir de laquelle ce code promotionnel est valable" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Heure de début de validité" -#: core/models.py:1242 +#: core/models.py:1269 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é." -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Horodatage de l'utilisation" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "Utilisateur assigné à ce code promo, le cas échéant" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Utilisateur assigné" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Code promo" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Codes promotionnels" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1882,153 +1909,154 @@ msgstr "" "Un seul type de remise doit être défini (montant ou pourcentage), mais pas " "les deux ni aucun des deux." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "Le code promotionnel a déjà été utilisé" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Type de réduction non valide pour le code promo {self.uuid} !" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "L'adresse de facturation utilisée pour cette commande" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Code promo optionnel appliqué à cette commande" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Code promo appliqué" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "L'adresse de livraison utilisée pour cette commande" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Adresse de livraison" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Statut actuel de la commande dans son cycle de vie" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Statut de la commande" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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." -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "Représentation JSON des attributs de cette commande" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "L'utilisateur qui a passé la commande" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "Utilisateur" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "L'heure à laquelle la commande a été finalisée." -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Temps d'achat" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "Un identifiant lisible par l'homme pour la commande" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "ID lisible par l'homme" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Commande" -#: core/models.py:1410 +#: core/models.py:1439 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 !" -#: core/models.py:1444 +#: core/models.py:1473 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." -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "Vous ne pouvez pas ajouter des produits inactifs à la commande" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "" "Vous ne pouvez pas ajouter plus de produits que ceux disponibles en stock" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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." -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} n'existe pas avec la requête <{query}> !" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Le code promotionnel n'existe pas" -#: core/models.py:1547 +#: core/models.py:1576 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 !" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "L'adresse n'existe pas" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Valeur de force non valide" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "Vous ne pouvez pas acheter une commande vide !" -#: core/models.py:1615 +#: core/models.py:1644 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." -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "Un utilisateur sans solde ne peut pas acheter avec un solde !" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Insuffisance de fonds pour compléter la commande" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2037,7 +2065,7 @@ msgstr "" "informations suivantes : nom du client, courriel du client, numéro de " "téléphone du client" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -2045,118 +2073,120 @@ msgstr "" "Méthode de paiement non valide : {payment_method} de " "{available_payment_methods} !" -#: core/models.py:1768 +#: core/models.py:1802 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" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Prix d'achat au moment de la commande" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" -msgstr "Commentaires internes pour les administrateurs sur ce produit commandé" +msgstr "" +"Commentaires internes pour les administrateurs sur ce produit commandé" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Commentaires internes" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "Notifications aux utilisateurs" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "Représentation JSON des attributs de cet élément" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Attributs du produit ordonnés" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Référence à l'ordre parent qui contient ce produit" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Ordonnance parentale" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "Le produit spécifique associé à cette ligne de commande" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Quantité de ce produit spécifique dans la commande" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Quantité de produits" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Statut actuel de ce produit dans la commande" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Statut de la ligne de produits" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "Le produit doit être associé à une commande !" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Mauvaise action spécifiée pour le retour d'information : {action} !" -#: core/models.py:1888 +#: core/models.py:1922 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." -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Télécharger" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Téléchargements" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Vous ne pouvez pas télécharger un bien numérique pour une commande non " "terminée." -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "Commentaires des utilisateurs sur leur expérience du produit" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Commentaires" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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." -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Produit de commande apparenté" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "Note attribuée par l'utilisateur au produit" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Evaluation du produit" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Retour d'information" @@ -2167,7 +2197,7 @@ msgstr "" "vous devez fournir un commentaire, une note et l'uuid du produit commandé " "pour ajouter un commentaire." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Erreur lors de la création du promocode : {e!s}" @@ -2199,8 +2229,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 " @@ -2294,8 +2323,7 @@ msgstr "Clé" #: core/templates/shipped_order_created_email.html:101 #: 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 " @@ -2334,20 +2362,20 @@ msgstr "Les données et le délai d'attente sont tous deux nécessaires" #: core/utils/caching.py:43 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." -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | nous contacter initié" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Confirmation de commande" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Commande livrée" @@ -2371,15 +2399,15 @@ msgstr "" msgid "invalid phone number format" msgstr "Format de numéro de téléphone non valide" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "Vous ne pouvez télécharger le bien numérique qu'une seule fois" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "favicon introuvable" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Erreur de géocodage : {e}" diff --git a/core/locale/hi_IN/LC_MESSAGES/django.mo b/core/locale/hi_IN/LC_MESSAGES/django.mo index 47c1f925..980937eb 100644 Binary files a/core/locale/hi_IN/LC_MESSAGES/django.mo and b/core/locale/hi_IN/LC_MESSAGES/django.mo differ diff --git a/core/locale/hi_IN/LC_MESSAGES/django.po b/core/locale/hi_IN/LC_MESSAGES/django.po index f4aec1bb..63dab507 100644 --- a/core/locale/hi_IN/LC_MESSAGES/django.po +++ b/core/locale/hi_IN/LC_MESSAGES/django.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -61,70 +61,70 @@ msgstr "" msgid "relations" msgstr "" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "" -#: core/admin.py:96 -#, python-format -msgid "activate selected %(verbose_name_plural)s" -msgstr "" - -#: core/admin.py:101 -msgid "selected items have been activated." -msgstr "" - #: core/admin.py:107 #, python-format -msgid "deactivate selected %(verbose_name_plural)s" +msgid "activate selected %(verbose_name_plural)s" msgstr "" #: core/admin.py:112 +msgid "selected items have been activated." +msgstr "" + +#: core/admin.py:118 +#, python-format +msgid "deactivate selected %(verbose_name_plural)s" +msgstr "" + +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "" @@ -216,300 +216,314 @@ msgid "" "`product_uuid` and `attributes`." msgstr "" -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:63 +#: core/docs/drf/viewsets.py:64 msgid "rewrite some fields of an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:117 +#: core/docs/drf/viewsets.py:118 msgid "rewrite some fields of an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "" -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 msgid "" "Case-insensitive substring search across human_readable_id, order_products." "product.name, and order_products.product.partnumber" msgstr "" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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')." msgstr "" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -526,287 +540,295 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for " "descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "" -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 core/models.py:486 +#: core/models.py:677 msgid "Slug" msgstr "" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "" @@ -830,7 +852,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -861,7 +883,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" @@ -935,9 +957,9 @@ msgstr "" msgid "original address string provided by the user" msgstr "" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" @@ -950,145 +972,145 @@ msgstr "" msgid "elasticsearch - works like a charm" msgstr "" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 msgid "which attributes and values can be used for filtering this category." msgstr "" -#: core/graphene/object_types.py:135 +#: core/graphene/object_types.py:203 msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "" -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1096,7 +1118,7 @@ msgstr "" msgid "price" msgstr "" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1104,31 +1126,35 @@ msgstr "" msgid "quantity" msgstr "" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1136,890 +1162,898 @@ msgstr "" msgid "product" msgstr "" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 core/models.py:1837 msgid "associated product" msgstr "" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "" -#: core/models.py:753 -msgid "category of this attribute" +#: core/models.py:680 +msgid "stock keeping unit for this product" msgstr "" -#: core/models.py:761 -msgid "group of this attribute" -msgstr "" - -#: core/models.py:767 -msgid "string" -msgstr "" - -#: core/models.py:768 -msgid "integer" -msgstr "" - -#: core/models.py:769 -msgid "float" -msgstr "" - -#: core/models.py:770 -msgid "boolean" -msgstr "" - -#: core/models.py:771 -msgid "array" -msgstr "" - -#: core/models.py:772 -msgid "object" -msgstr "" - -#: core/models.py:774 -msgid "type of the attribute's value" -msgstr "" - -#: core/models.py:775 -msgid "value type" +#: core/models.py:681 +msgid "SKU" msgstr "" #: core/models.py:780 +msgid "category of this attribute" +msgstr "" + +#: core/models.py:788 +msgid "group of this attribute" +msgstr "" + +#: core/models.py:794 +msgid "string" +msgstr "" + +#: core/models.py:795 +msgid "integer" +msgstr "" + +#: core/models.py:796 +msgid "float" +msgstr "" + +#: core/models.py:797 +msgid "boolean" +msgstr "" + +#: core/models.py:798 +msgid "array" +msgstr "" + +#: core/models.py:799 +msgid "object" +msgstr "" + +#: core/models.py:801 +msgid "type of the attribute's value" +msgstr "" + +#: core/models.py:802 +msgid "value type" +msgstr "" + +#: core/models.py:807 msgid "name of this attribute" msgstr "" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "" -#: core/models.py:1242 +#: core/models.py:1269 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 msgid "json structure of notifications to display to users" msgstr "" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "" -#: core/models.py:1444 +#: core/models.py:1473 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: core/models.py:1768 +#: core/models.py:1802 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "" -#: core/models.py:1888 +#: core/models.py:1922 msgid "you cannot feedback an order which is not received" msgstr "" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "" -#: core/models.py:1970 +#: core/models.py:2004 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "" @@ -2028,7 +2062,7 @@ msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "" @@ -2180,17 +2214,17 @@ msgstr "" msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "" @@ -2212,15 +2246,15 @@ msgstr "" msgid "invalid phone number format" msgstr "" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "" diff --git a/core/locale/it_IT/LC_MESSAGES/django.mo b/core/locale/it_IT/LC_MESSAGES/django.mo index 67caf431..a2c74d81 100644 Binary files a/core/locale/it_IT/LC_MESSAGES/django.mo and b/core/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/core/locale/it_IT/LC_MESSAGES/django.po b/core/locale/it_IT/LC_MESSAGES/django.po index 8283b927..853dbfa4 100644 --- a/core/locale/it_IT/LC_MESSAGES/django.po +++ b/core/locale/it_IT/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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 "È attivo" #: core/abstract.py:20 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." #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -62,70 +63,70 @@ msgstr "Generale" msgid "relations" msgstr "Relazioni" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Metadati" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Timestamp" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Attivare il %(verbose_name_plural)s selezionato" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Gli articoli selezionati sono stati attivati!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Disattivare il %(verbose_name_plural)s selezionato" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Gli articoli selezionati sono stati disattivati!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Valore dell'attributo" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Valori degli attributi" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Immagine" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Immagini" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Stock" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Le scorte" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Ordina il prodotto" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Ordinare i prodotti" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "I bambini" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Configurazione" @@ -187,8 +188,7 @@ msgid "" "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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -223,230 +223,246 @@ msgstr "" "Acquistare un ordine come azienda, utilizzando i `prodotti` forniti con " "`product_uuid` e `attributi`." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "Elenco di tutti i gruppi di attributi (vista semplice)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperare un singolo gruppo di attributi (vista dettagliata)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Creare un gruppo di attributi" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Cancellare un gruppo di attributi" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Riscrivere un gruppo di attributi esistente salvando i non modificabili" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +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" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "Elenco di tutti gli attributi (vista semplice)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperare un singolo attributo (vista dettagliata)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Creare un attributo" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Cancellare un attributo" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Riscrivere un attributo esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Riscrivere alcuni campi di un attributo esistente salvando i campi non " "modificabili" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "Elenco di tutti i valori degli attributi (vista semplice)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperare il valore di un singolo attributo (vista dettagliata)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Creare un valore di attributo" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Cancellare il valore di un attributo" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Riscrivere il valore di un attributo esistente salvando gli elementi non " "modificabili" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +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" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "Elenco di tutte le categorie (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Recuperare una singola categoria (vista dettagliata)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Creare una categoria" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Eliminare una categoria" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 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" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "Meta-immagine SEO" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Restituisce un'istantanea dei meta-dati SEO della categoria." + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "UUID o slug della categoria" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "Elenco di tutte le categorie (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "" "Per gli utenti che non fanno parte del personale, vengono restituiti solo i " "loro ordini." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtra gli ordini con buy_time >= questa data ISO 8601" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtra gli ordini con buy_time <= questa data ISO 8601" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filtrare per UUID dell'ordine esatto" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Filtrare in base all'ID esatto dell'ordine leggibile dall'uomo" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtro per e-mail dell'utente (corrispondenza esatta senza distinzione tra " "maiuscole e minuscole)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filtrare per UUID dell'utente" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtrare per stato dell'ordine (corrispondenza di sottostringhe senza " "distinzione tra maiuscole e minuscole)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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 " "decrescita (ad esempio, '-buy_time')." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Recuperare una singola categoria (vista dettagliata)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Creare un attributo" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Non funziona per gli utenti che non fanno parte del personale." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Cancellare un attributo" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 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" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Prezzo di acquisto al momento dell'ordine" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "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." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "acquistare un ordine senza creare un account" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizza l'acquisto dell'ordine per un utente non registrato." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Aggiungere un prodotto all'ordine" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -454,13 +470,13 @@ msgstr "" "Aggiunge un prodotto a un ordine utilizzando il `product_uuid` e gli " "`attributi` forniti." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "" "Aggiungete un elenco di prodotti da ordinare, le quantità non vengono " "conteggiate" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -468,11 +484,11 @@ msgstr "" "Aggiunge un elenco di prodotti a un ordine, utilizzando il `product_uuid` e " "gli `attributi` forniti." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Rimuovere un prodotto dall'ordine" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -480,12 +496,12 @@ msgstr "" "Rimuove un prodotto da un ordine utilizzando il `product_uuid` e gli " "`attributi` forniti." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "" "Rimuovete un prodotto dall'ordine, le quantità non verranno conteggiate" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -493,405 +509,402 @@ msgstr "" "Rimuove un elenco di prodotti da un ordine utilizzando il `product_uuid` e " "gli `attributi` forniti." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "Elenco di tutti gli attributi (vista semplice)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 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." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperare un singolo attributo (vista dettagliata)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Creare un attributo" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Non funziona per gli utenti che non fanno parte del personale." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Cancellare un attributo" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Riscrivere un attributo esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Riscrivere alcuni campi di un attributo esistente salvando i campi non " "modificabili" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Aggiungere un prodotto all'ordine" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Aggiunge un prodotto a una lista dei desideri utilizzando il `product_uuid` " "fornito." -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Rimuovere un prodotto dalla lista dei desideri" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Rimuove un prodotto da una wishlist utilizzando il `product_uuid` fornito." -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Aggiungere molti prodotti alla lista dei desideri" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Aggiunge molti prodotti a una lista dei desideri utilizzando i " "`product_uuids` forniti." -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Rimuove molti prodotti da una lista di desideri utilizzando i " "`product_uuids` forniti." -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "Elenco di tutti i prodotti (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(esatto) UUID del prodotto" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(icontains) Nome del prodotto" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "" "(elenco) Nomi di categoria, senza distinzione tra maiuscole e minuscole" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(esatto) UUID della categoria" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(elenco) Nomi di tag, senza distinzione tra maiuscole e minuscole" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Prezzo minimo delle azioni" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Prezzo massimo del titolo" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(esatto) Solo prodotti attivi" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Nome del marchio" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantità minima di scorte" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(esatto) Digitale e fisico" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Recuperare un singolo prodotto (vista dettagliata)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "UUID o Slug del prodotto" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Creare un prodotto" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 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" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Aggiornare alcuni campi di un prodotto esistente, preservando i campi non " "modificabili" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Eliminare un prodotto" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "elenca tutti i feedback consentiti per un prodotto" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Restituisce un'istantanea dei meta-dati SEO del prodotto." + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "Elenco di tutti gli indirizzi" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Recuperare un singolo indirizzo" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Creare un nuovo indirizzo" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Cancellare un indirizzo" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Aggiornare un intero indirizzo" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Aggiornare parzialmente un indirizzo" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Inserimento automatico dell'indirizzo" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Stringa di query dei dati grezzi, da aggiungere ai dati dell'endpoint geo-IP" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita la quantità di risultati, 1 < limite < 10, default: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "elencare tutti i feedback (vista semplice)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "recuperare un singolo feedback (vista dettagliata)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "creare un feedback" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "eliminare un feedback" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 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" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "elencare tutte le relazioni ordine-prodotto (vista semplice)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "recuperare una singola relazione ordine-prodotto (vista dettagliata)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "creare una nuova relazione ordine-prodotto" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "sostituire una relazione ordine-prodotto esistente" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "aggiornare parzialmente una relazione ordine-prodotto esistente" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "eliminare una relazione ordine-prodotto" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "aggiungere o rimuovere un feedback su una relazione ordine-prodotto" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "Non è stato fornito alcun termine di ricerca." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Nome" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Categorie" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Categorie Lumache" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Tag" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Prezzo minimo" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Max Price" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "È attivo" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Marchio" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Attributi" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Quantità" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Lumaca" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "È digitale" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Includere le sottocategorie" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Includere prodotti ordinati personalmente" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Deve esserci una categoria_uuid per utilizzare il flag include_subcategories" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Ricerca (ID, nome del prodotto o numero di parte)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Acquistato dopo (incluso)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Acquistato prima (compreso)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "Email dell'utente" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "UUID utente" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Stato" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "ID leggibile dall'uomo" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Genitore" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Intera categoria (con o senza almeno 1 prodotto)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Livello" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "UUID del prodotto" @@ -915,7 +928,7 @@ msgstr "Dati in cache" msgid "camelized JSON data from the requested URL" msgstr "Dati JSON camelizzati dall'URL richiesto" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Sono consentiti solo gli URL che iniziano con http(s)://" @@ -947,9 +960,10 @@ msgstr "" "Si prega di fornire order_uuid o order_hr_id, che si escludono a vicenda!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 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}" #: core/graphene/mutations.py:237 msgid "perform an action on a list of products in the order" @@ -1000,11 +1014,11 @@ msgstr "Acquistare un ordine" #: core/graphene/mutations.py:500 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" #: core/graphene/mutations.py:532 msgid "add or delete a feedback for orderproduct" @@ -1023,9 +1037,9 @@ msgstr "Prodotto dell'ordine {order_product_uuid} non trovato!" msgid "original address string provided by the user" msgstr "Stringa di indirizzo originale fornita dall'utente" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} non esiste: {uuid}!" @@ -1038,98 +1052,99 @@ msgstr "Il limite deve essere compreso tra 1 e 10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch: funziona a meraviglia" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Attributi" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Attributi raggruppati" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Gruppi di attributi" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Categorie" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Marche" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Categorie" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Percentuale di markup" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 msgid "which attributes and values can be used for filtering this category." msgstr "" "Quali attributi e valori possono essere utilizzati per filtrare questa " "categoria." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +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." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Tag per questa categoria" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Prodotti in questa categoria" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Venditori" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Latitudine (coordinata Y)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Longitudine (coordinata X)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Come" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Rappresenta il feedback di un utente." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Notifiche" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "URL di download per il prodotto dell'ordine, se applicabile" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "Un elenco di prodotti ordinati in questo ordine" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Indirizzo di fatturazione" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1137,51 +1152,51 @@ msgstr "" "Indirizzo di spedizione per questo ordine, lasciare in bianco se è uguale " "all'indirizzo di fatturazione o se non è applicabile" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Prezzo totale dell'ordine" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Quantità totale di prodotti in ordine" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Tutti i prodotti sono presenti nell'ordine digitale" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Transazioni per questo ordine" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Ordini" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "URL immagine" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Immagini del prodotto" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Categoria" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Feedback" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Marchio" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Gruppi di attributi" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1189,7 +1204,7 @@ msgstr "Gruppi di attributi" msgid "price" msgstr "Prezzo" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1197,31 +1212,35 @@ msgstr "Prezzo" msgid "quantity" msgstr "Quantità" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Numero di feedback" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Prodotti disponibili solo per ordini personali" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Prodotti" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Codici promozionali" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Prodotti in vendita" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Promozioni" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Venditore" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1229,789 +1248,799 @@ msgstr "Venditore" msgid "product" msgstr "Prodotto" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Prodotti desiderati" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Liste dei desideri" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Prodotti contrassegnati" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Tag del prodotto" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Contrassegnato dalle categorie" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Tag delle categorie" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Nome del progetto" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "Email aziendale" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Nome della società" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Indirizzo dell'azienda" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Numero di telefono dell'azienda" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "Utente host dell'e-mail" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Importo massimo per il pagamento" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Importo minimo per il pagamento" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Dati analitici" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Dati pubblicitari" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Configurazione" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Codice lingua" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Nome della lingua" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Bandiera della lingua, se esiste :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Ottenere un elenco delle lingue supportate" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Risultati della ricerca dei prodotti" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Risultati della ricerca dei prodotti" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Genitore di questo gruppo" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Gruppo di attributi padre" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Nome del gruppo di attributi" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Gruppo di attributi" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Memorizza le credenziali e gli endpoint necessari per la comunicazione API " "del fornitore." -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Informazioni sull'autenticazione" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "Definire il markup per i prodotti recuperati da questo fornitore" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Percentuale di ricarico del fornitore" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Nome del fornitore" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Nome del fornitore" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Identificatore interno dell'etichetta del prodotto" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Nome del tag" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "Nome intuitivo per l'etichetta del prodotto" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Nome del tag" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Etichetta del prodotto" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "tag categoria" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "tag di categoria" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Caricare un'immagine che rappresenti questa categoria" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Categoria immagine" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "" "Definire una percentuale di ricarico per i prodotti di questa categoria" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Genitore di questa categoria per formare una struttura gerarchica" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Categoria di genitori" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Nome della categoria" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Indicare un nome per questa categoria" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Aggiungere una descrizione dettagliata per questa categoria" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Descrizione della categoria" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "tag che aiutano a descrivere o raggruppare questa categoria" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Priorità" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Nome del marchio" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Nome del marchio" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Caricare un logo che rappresenti questo marchio" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Immagine piccola del marchio" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Caricare un grande logo che rappresenti questo marchio" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Grande immagine del marchio" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Aggiungere una descrizione dettagliata del marchio" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Descrizione del marchio" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Categorie opzionali a cui questo marchio è associato" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Categorie" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "Il venditore che fornisce questo stock di prodotti" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Venditore associato" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Prezzo finale al cliente dopo i ricarichi" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Prezzo di vendita" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "Il prodotto associato a questa voce di magazzino" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Prodotto associato" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "Il prezzo pagato al venditore per questo prodotto" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Prezzo di acquisto del fornitore" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Quantità disponibile del prodotto in magazzino" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Quantità in magazzino" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU assegnato dal fornitore per identificare il prodotto" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "SKU del venditore" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "File digitale associato a questo stock, se applicabile" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "File digitale" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Voci di magazzino" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Categoria a cui appartiene questo prodotto" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Associare facoltativamente questo prodotto a un marchio" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Tag che aiutano a descrivere o raggruppare questo prodotto" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Indica se il prodotto è consegnato in formato digitale" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "Il prodotto è digitale" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Fornire un nome identificativo chiaro per il prodotto" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Nome del prodotto" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Aggiungere una descrizione dettagliata del prodotto" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Descrizione del prodotto" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Numero di parte per questo prodotto" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Numero di parte" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Unità di mantenimento delle scorte per questo prodotto" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Categoria di questo attributo" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Gruppo di questo attributo" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "Stringa" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Intero" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Galleggiante" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Booleano" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Array" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Oggetto" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Tipo di valore dell'attributo" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Tipo di valore" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Nome dell'attributo" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Nome dell'attributo" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attributo" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Attributo di questo valore" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "Il prodotto specifico associato al valore di questo attributo" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "Il valore specifico per questo attributo" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "" "Fornire un testo alternativo per l'immagine ai fini dell'accessibilità." -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Testo alt dell'immagine" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Caricare il file immagine per questo prodotto" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Immagine del prodotto" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Determina l'ordine di visualizzazione delle immagini" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Priorità del display" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "Il prodotto che questa immagine rappresenta" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Immagini del prodotto" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Percentuale di sconto per i prodotti selezionati" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Percentuale di sconto" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Fornite un nome unico per questa promozione" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Nome della promozione" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Descrizione della promozione" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Selezionare i prodotti inclusi in questa promozione" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Prodotti inclusi" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Promozione" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Prodotti che l'utente ha contrassegnato come desiderati" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "Utente che possiede questa wishlist" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Proprietario della lista dei desideri" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Lista dei desideri" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Documentario" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Documentari" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Non risolto" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Indirizzo del cliente" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Linea di indirizzo" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Via" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "Distretto" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "Città" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Regione" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Codice postale" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "Paese" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Punto di geolocalizzazione(Longitudine, Latitudine)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Risposta JSON completa di geocoder per questo indirizzo" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Risposta JSON memorizzata dal servizio di geocodifica" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Indirizzo" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Indirizzi" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "Codice univoco utilizzato da un utente per riscattare uno sconto" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Identificatore del codice promozionale" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" -msgstr "Importo fisso dello sconto applicato se non si utilizza la percentuale" +msgstr "" +"Importo fisso dello sconto applicato se non si utilizza la percentuale" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Importo fisso dello sconto" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "Sconto percentuale applicato se l'importo fisso non viene utilizzato" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Sconto percentuale" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Data di scadenza del codice promozionale" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "Tempo di validità finale" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Data a partire dalla quale il codice promozionale è valido" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Ora di inizio validità" -#: core/models.py:1242 +#: core/models.py:1269 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" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Timestamp d'uso" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "Utente assegnato a questo codice promozionale, se applicabile" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Utente assegnato" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Codice promozionale" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Codici promozionali" -#: core/models.py:1264 +#: core/models.py:1291 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." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "Il codice promozionale è già stato utilizzato" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo di sconto non valido per il codice promozionale {self.uuid}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "L'indirizzo di fatturazione utilizzato per questo ordine" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Codice promozionale opzionale applicato a questo ordine" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Codice promozionale applicato" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "L'indirizzo di spedizione utilizzato per questo ordine" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Indirizzo di spedizione" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Stato attuale dell'ordine nel suo ciclo di vita" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Stato dell'ordine" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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." -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "Rappresentazione JSON degli attributi dell'ordine per questo ordine" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "L'utente che ha effettuato l'ordine" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "Utente" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "Il timestamp del momento in cui l'ordine è stato finalizzato" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Acquista tempo" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "Un identificatore leggibile dall'uomo per l'ordine" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "ID leggibile dall'uomo" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Ordine" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "Un utente può avere un solo ordine pendente alla volta!" -#: core/models.py:1444 +#: core/models.py:1473 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." -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "Non è possibile aggiungere all'ordine prodotti inattivi" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "" "Non è possibile aggiungere più prodotti di quelli disponibili in magazzino" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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." -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} non esiste con la query <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Il codice promozionale non esiste" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "" "È possibile acquistare solo prodotti fisici con indirizzo di spedizione " "specificato!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "L'indirizzo non esiste" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Valore di forza non valido" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "Non è possibile acquistare un ordine vuoto!" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "Non è possibile acquistare un ordine senza un utente!" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "Un utente senza saldo non può acquistare con il saldo!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Fondi insufficienti per completare l'ordine" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2020,7 +2049,7 @@ msgstr "" "seguenti informazioni: nome del cliente, e-mail del cliente, numero di " "telefono del cliente" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -2028,114 +2057,115 @@ msgstr "" "Metodo di pagamento non valido: {payment_method} da " "{available_payment_methods}!" -#: core/models.py:1768 +#: core/models.py:1802 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." -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Prezzo di acquisto al momento dell'ordine" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "Commenti interni per gli amministratori su questo prodotto ordinato" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Commenti interni" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "Notifiche degli utenti" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "Rappresentazione JSON degli attributi di questo elemento" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Attributi del prodotto ordinati" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Riferimento all'ordine padre che contiene questo prodotto" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Ordine dei genitori" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "Il prodotto specifico associato a questa riga d'ordine" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Quantità di questo prodotto specifico nell'ordine" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Quantità di prodotto" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Stato attuale di questo prodotto nell'ordine" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Stato della linea di prodotti" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "L'ordine-prodotto deve avere un ordine associato!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Azione errata specificata per il feedback: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 msgid "you cannot feedback an order which is not received" msgstr "non è possibile dare un riscontro a un ordine non ricevuto" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Scaricare" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Scaricamento" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "Non è possibile scaricare un bene digitale per un ordine non finito." -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "Commenti degli utenti sulla loro esperienza con il prodotto" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Commenti di feedback" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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." -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Prodotto correlato all'ordine" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "Valutazione del prodotto assegnata dall'utente" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Valutazione del prodotto" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Feedback" @@ -2143,10 +2173,10 @@ msgstr "Feedback" 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." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Errore durante la creazione del codice promozionale: {e!s}" @@ -2178,8 +2208,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 " @@ -2208,8 +2237,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." #: core/templates/digital_order_created_email.html:133 #, python-format @@ -2258,8 +2287,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." #: core/templates/digital_order_delivered_email.html:165 #, python-format @@ -2273,8 +2302,7 @@ msgstr "Chiave" #: core/templates/shipped_order_created_email.html:101 #: 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 " @@ -2314,17 +2342,17 @@ 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." -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | contattaci iniziato" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Conferma d'ordine" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Ordine consegnato" @@ -2341,22 +2369,22 @@ msgstr "Il parametro NOMINATIM_URL deve essere configurato!" #, 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" #: core/validators.py:22 msgid "invalid phone number format" msgstr "Formato del numero di telefono non valido" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "È possibile scaricare l'asset digitale una sola volta" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "favicon non trovata" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Errore di geocodifica: {e}" diff --git a/core/locale/ja_JP/LC_MESSAGES/django.mo b/core/locale/ja_JP/LC_MESSAGES/django.mo index 2244ee80..91d2e213 100644 Binary files a/core/locale/ja_JP/LC_MESSAGES/django.mo and b/core/locale/ja_JP/LC_MESSAGES/django.mo differ diff --git a/core/locale/ja_JP/LC_MESSAGES/django.po b/core/locale/ja_JP/LC_MESSAGES/django.po index cfec51a6..235b6df7 100644 --- a/core/locale/ja_JP/LC_MESSAGES/django.po +++ b/core/locale/ja_JP/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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" #: core/abstract.py:12 msgid "unique id is used to surely identify any database object" -msgstr "" -"ユニークIDは、データベースオブジェクトを確実に識別するために使用されます。" +msgstr "ユニークIDは、データベースオブジェクトを確実に識別するために使用されます。" #: core/abstract.py:19 msgid "is active" @@ -28,10 +27,9 @@ msgstr "アクティブ" #: core/abstract.py:20 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に設定された場合、このオブジェクトは必要なパーミッションのないユーザーには見えない。" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -61,70 +59,70 @@ msgstr "一般" msgid "relations" msgstr "関係" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "メタデータ" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "タイムスタンプ" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "選択した%(verbose_name_plural)sをアクティブにする" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "選択した項目がアクティブになりました!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "選択された%(verbose_name_plural)sを非アクティブにする" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "選択されたアイテムは無効化されました!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "属性値" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "属性値" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "画像" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "画像" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "在庫" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "株式" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "商品のご注文" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "商品のご注文" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "子供たち" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "コンフィグ" @@ -186,8 +184,7 @@ msgid "" "apply key, data and timeout with authentication to write data to cache." msgstr "" "許可されたデータをキャッシュから読み出すには、キーのみを適用する。\n" -"キャッシュにデータを書き込むには、認証付きのキー、データ、タイムアウトを適用" -"する。" +"キャッシュにデータを書き込むには、認証付きのキー、データ、タイムアウトを適用する。" #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -217,651 +214,635 @@ msgstr "ビジネスとして注文を購入する" 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` を使用して、ビジネスとして注文を購入する。" -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "すべての属性グループをリストアップ(シンプルビュー)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "単一の属性グループを取得する(詳細表示)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "属性グループの作成" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "属性グループの削除" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "既存の属性グループを書き換えて、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" -msgstr "" -"既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存す" -"る。" +#: core/docs/drf/viewsets.py:64 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" +msgstr "既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "すべての属性をリストアップ(シンプルな表示)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "単一の属性を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "属性を作成する" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "属性を削除する" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "既存の属性を書き換える。" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" -msgstr "" -"既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" +msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "すべての属性値をリストアップ(シンプルビュー)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "単一の属性値を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "属性値の作成" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "属性値の削除" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "既存の属性値を書き換える。" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" -msgstr "" -"既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" +#: core/docs/drf/viewsets.py:118 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" +msgstr "既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "全カテゴリーを一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "単一のカテゴリーを取得する(詳細表示)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "カテゴリーを作成する" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "カテゴリーの削除" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "既存のカテゴリーを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "編集不可を保存している既存のカテゴリのいくつかのフィールドを書き換える" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "SEOメタ・スナップショット" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "カテゴリのSEOメタデータのスナップショットを返します。" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "カテゴリーUUIDまたはスラッグ" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "全カテゴリーを一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "スタッフ以外のユーザーについては、自分の注文のみが返却される。" -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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の大文字小文字を区別しない部分文字列検索" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "buy_time >= このISO 8601の日時を持つ注文をフィルタリングする。" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "buy_time <= このISO 8601の日付時間の注文をフィルタリングする。" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "正確な順序UUIDによるフィルタリング" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "人間が読み取れる正確な注文IDによるフィルタリング" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" -msgstr "" -"ユーザーのEメールによるフィルタリング(大文字・小文字を区別しない完全一致)" +msgstr "ユーザーのEメールによるフィルタリング(大文字・小文字を区別しない完全一致)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "ユーザーのUUIDによるフィルタリング" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" -msgstr "" -"注文ステータスによるフィルタリング(大文字と小文字を区別しない部分文字列マッ" -"チ)" +msgstr "注文ステータスによるフィルタリング(大文字と小文字を区別しない部分文字列マッチ)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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')。" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "単一のカテゴリーを取得する(詳細表示)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "属性を作成する" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "スタッフ以外のユーザーには使えない。" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "属性を削除する" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "既存のカテゴリーを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "編集不可を保存している既存のカテゴリのいくつかのフィールドを書き換える" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "注文時の購入価格" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用し" -"て購入が完了します。 `force_payment` が使用された場合、トランザクションが開始" -"されます。" +"注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用して購入が完了します。 `force_payment` " +"が使用された場合、トランザクションが開始されます。" -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "アカウントを作成せずに注文を購入する" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "は、未登録ユーザーの注文購入を確定します。" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "注文に商品を追加する" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" +msgstr "指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "数量はカウントされません。" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"指定された `product_uuid` と `attributes` を使用して、注文に商品のリストを追" -"加する。" +msgstr "指定された `product_uuid` と `attributes` を使用して、注文に商品のリストを追加する。" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "注文から商品を削除する" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"指定された `product_uuid` と `attributes` を使用して、注文から商品を削除す" -"る。" +msgstr "指定された `product_uuid` と `attributes` を使用して、注文から商品を削除する。" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "注文から商品を削除すると、数量はカウントされません。" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" -msgstr "" -"指定された `product_uuid` と `attributes` を用いて、注文から商品のリストを削" -"除する。" +msgstr "指定された `product_uuid` と `attributes` を用いて、注文から商品のリストを削除する。" -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "すべての属性をリストアップ(シンプルな表示)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "スタッフ以外のユーザーには、自分のウィッシュリストのみが返されます。" -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "単一の属性を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "属性を作成する" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "スタッフ以外のユーザーには使えない。" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "属性を削除する" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "既存の属性を書き換える。" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" -msgstr "" -"既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" +msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "注文に商品を追加する" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "指定された `product_uuid` を使ってウィッシュリストに商品を追加する。" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "ウィッシュリストから商品を削除する" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" -msgstr "" -"指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" +msgstr "指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "ウィッシュリストに多くの商品を追加する" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" -msgstr "" -"指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" +msgstr "指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "注文から商品を削除する" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" -msgstr "" -"指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" +msgstr "指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`。" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "全商品を一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(正確には)製品UUID" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(アイコン) 製品名" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(リスト)カテゴリー名、大文字と小文字は区別しない" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(正確には)カテゴリーUUID" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(リスト) タグ名、大文字と小文字は区別されない" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(最低株価" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(最大株価" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(正確には)アクティブ製品のみ" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(商品名" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(最低在庫量" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(正確には)デジタルとフィジカル" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "単一の製品を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "製品UUIDまたはスラグ" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "製品を作る" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "編集不可能なフィールドを保持したまま、既存の製品を書き換える。" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" -msgstr "" -"編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新す" -"る。" +msgstr "編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新する。" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "製品を削除する" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "製品に対して許可されたすべてのフィードバックを一覧表示します。" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "商品のSEOメタデータのスナップショットを返します。" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "全住所のリスト" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "単一アドレスの取得" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "新しいアドレスを作成する" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "アドレスの削除" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "アドレス全体の更新" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "アドレスの一部更新" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "オートコンプリート住所入力" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 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" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "結果を制限する, 1 < limit < 10, デフォルト: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "すべてのフィードバックを表示する(シンプルな表示)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "単一のフィードバックを取得する(詳細表示)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "フィードバックを作成する" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "フィードバックを削除する" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "既存のフィードバックを書き換える。" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" -msgstr "" -"既存のフィードバックのいくつかのフィールドを書き換えて、編集不可能なものを保" -"存する。" +msgstr "既存のフィードバックのいくつかのフィールドを書き換えて、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "すべての注文と商品の関係をリストアップする(シンプルビュー)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "単一の注文と商品の関係を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "新しい注文と商品の関係を作る" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "既存の注文と商品の関係を置き換える" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "既存の注文と商品の関係を部分的に更新する" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "注文と商品の関係を削除する" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "注文と商品の関係に関するフィードバックを追加または削除する。" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "検索語はありません。" -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "ユーユーアイディー" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "名称" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "カテゴリー" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "カテゴリー ナメクジ" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "タグ" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "最低価格" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "最高価格" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "アクティブ" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "ブランド" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "属性" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "数量" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "スラッグ" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "デジタル" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "サブカテゴリーを含む" -#: core/filters.py:147 -msgid "there must be a category_uuid to use include_subcategories flag" -msgstr "" -"include_subcategoriesフラグを使うには、category_uuidがなければならない。" +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "個人注文商品を含む" -#: core/filters.py:280 +#: core/filters.py:160 +msgid "there must be a category_uuid to use include_subcategories flag" +msgstr "include_subcategoriesフラグを使うには、category_uuidがなければならない。" + +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "検索(ID、製品名または部品番号)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "購入時期" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "以前に購入したもの(含む)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "ユーザーEメール" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "ユーザーUUID" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "ステータス" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "人間が読めるID" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "親" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "カテゴリー全体(少なくとも1つの製品があるかどうか)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "レベル" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "製品UUID" @@ -885,7 +866,7 @@ msgstr "キャッシュ・データ" msgid "camelized JSON data from the requested URL" msgstr "リクエストされたURLからキャメル化されたJSONデータ" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "http(s)://で始まるURLのみが許可されます。" @@ -916,7 +897,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "order_uuidまたはorder_hr_idを入力してください!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy()メソッドから間違った型が来た:{type(instance)!s}。" @@ -969,10 +950,9 @@ msgstr "注文する" #: core/graphene/mutations.py:500 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のような形式の文字列として送信してください。" #: core/graphene/mutations.py:532 msgid "add or delete a feedback for orderproduct" @@ -991,9 +971,9 @@ msgstr "Orderproduct {order_product_uuid} が見つかりません!" msgid "original address string provided by the user" msgstr "ユーザーが提供したオリジナルのアドレス文字列" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name}は存在しません:{uuid}が存在しません!" @@ -1006,145 +986,146 @@ msgstr "上限は1から10の間でなければならない" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - 魅力のように動作" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "属性" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "グループ化された属性" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "属性のグループ" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "カテゴリー" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "ブランド" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "カテゴリー" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "マークアップ率" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 msgid "which attributes and values can be used for filtering this category." msgstr "このカテゴリのフィルタリングに使用できる属性と値。" -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "このカテゴリーの商品の最低価格と最高価格がある場合。" -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "このカテゴリのタグ" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "このカテゴリの製品" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "ベンダー" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "緯度(Y座標)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "経度(X座標)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "どのように" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "1から10までの評価値(設定されていない場合は0)。" -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "ユーザーからのフィードバックを表す。" -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "お知らせ" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "該当する場合は、この注文商品のダウンロードURLを入力してください。" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "注文商品のリスト" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "請求先住所" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "請求先住所と同じ場合、または該当しない場合は空白にしてください。" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "この注文の合計金額" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "注文商品の総数量" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "ご注文の商品はすべてデジタルですか?" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "この注文の取引" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "受注状況" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "画像URL" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "製品画像" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "カテゴリー" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "フィードバック" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "ブランド" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "属性グループ" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1152,7 +1133,7 @@ msgstr "属性グループ" msgid "price" msgstr "価格" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1160,31 +1141,35 @@ msgstr "価格" msgid "quantity" msgstr "数量" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "フィードバック数" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "個人注文のみの商品" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "製品紹介" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "プロモコード" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "販売商品" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "プロモーション" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "ベンダー" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1192,908 +1177,909 @@ msgstr "ベンダー" msgid "product" msgstr "製品" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "ウィッシュリスト掲載商品" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "ウィッシュリスト" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "タグ別アーカイブ" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "商品タグ" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "タグ別アーカイブ" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "カテゴリー' タグ" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "プロジェクト名" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "会社Eメール" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "会社名" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "会社住所" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "会社電話番号" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from' は、ホストユーザの値の代わりに使用されることがあります。" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "メールホストユーザー" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "支払限度額" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "最低支払額" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "分析データ" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "広告データ" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "構成" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "言語コード" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "言語名" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "言語フラグがある場合 :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "サポートされている言語のリストを取得する" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "製品検索結果" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "製品検索結果" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "このグループの親" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "親属性グループ" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "属性グループ名" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "属性グループ" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "ベンダーのAPI通信に必要な認証情報とエンドポイントを保存する。" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "認証情報" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "このベンダーから取得した商品のマークアップを定義する。" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "ベンダーのマークアップ率" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "このベンダーの名前" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "ベンダー名" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "商品タグの内部タグ識別子" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "タグ名" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "商品タグのユーザーフレンドリーな名前" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "タグ表示名" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "商品タグ" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "カテゴリタグ" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "カテゴリータグ" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "このカテゴリーを表す画像をアップロードする" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "カテゴリーイメージ" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "このカテゴリの商品のマークアップ率を定義する" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "階層構造を形成するこのカテゴリの親" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "親カテゴリー" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "カテゴリー名" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "このカテゴリの名前を入力してください。" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "このカテゴリの詳細説明を追加する" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "カテゴリー説明" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "このカテゴリーを説明またはグループ化するのに役立つタグ" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "優先順位" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "ブランド名" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "ブランド名" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "このブランドを代表するロゴをアップロードする" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "小さなブランドイメージ" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "このブランドを象徴する大きなロゴをアップロードする" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "大きなブランドイメージ" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "ブランドの詳細な説明を加える" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "ブランド説明" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "このブランドが関連するオプション・カテゴリー" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "カテゴリー" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "この製品の在庫を供給しているベンダー" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "関連ベンダー" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "マークアップ後の顧客への最終価格" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "販売価格" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "このストックエントリーに関連する製品" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "関連製品" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "この製品に対してベンダーに支払われた価格" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "ベンダーの購入価格" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "在庫数" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "在庫数" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "製品を識別するためにベンダーが割り当てたSKU" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "ベンダーのSKU" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "この銘柄に関連するデジタルファイル(該当する場合" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "デジタルファイル" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "ストックエントリー" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "この製品が属するカテゴリ" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "オプションでこの製品をブランドと関連付ける" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "この商品の説明やグループ分けに役立つタグ" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "この製品がデジタル配信されるかどうかを示す" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "製品はデジタルか" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "製品の明確な識別名を提供する" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "商品名" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "商品の詳細説明を追加する" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "商品説明" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "この製品の品番" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "品番" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "この製品の在庫管理単位" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "この属性のカテゴリー" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "この属性のグループ" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "ストリング" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "整数" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "フロート" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "ブーリアン" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "配列" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "対象" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "属性値のタイプ" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "値の種類" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "この属性の名前" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "属性名" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "属性" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "この値の属性" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "この属性の値に関連する特定の製品" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "この属性の具体的な値" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "アクセシビリティのために、画像に代替テキストを提供する。" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "画像のaltテキスト" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "この商品の画像ファイルをアップロードする" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "商品画像" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "画像の表示順を決める" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "表示優先度" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "この画像が表す製品" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "商品画像" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "選択した商品の割引率" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "割引率" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "このプロモーションのユニークな名前を入力してください。" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "プロモーション名" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "プロモーション内容" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "キャンペーン対象商品をお選びください。" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "含まれる製品" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "プロモーション" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "ユーザーが欲しいとマークした商品" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "このウィッシュリストを所有しているユーザー" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "ウィッシュリストのオーナー" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "ウィッシュリスト" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "ドキュメンタリー" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "ドキュメンタリー" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "未解決" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "お客様の住所" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "住所" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "ストリート" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "地区" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "都市" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "地域" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "郵便番号" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "国名" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "ジオロケーションポイント(経度、緯度)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "この住所に対するジオコーダーからの完全なJSON応答" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "ジオコーディング・サービスからの保存されたJSONレスポンス" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "住所" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "住所" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "ユーザーが割引を利用する際に使用する固有のコード" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "プロモコード識別子" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "パーセントを使用しない場合に適用される固定割引額" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "固定割引額" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "定額を使用しない場合に適用される割引率" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "割引率" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "プロモコードの有効期限が切れるタイムスタンプ" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "終了有効時間" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "このプロモコードが有効なタイムスタンプ" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "開始有効時間" -#: core/models.py:1242 +#: core/models.py:1269 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "プロモコードが使用されたタイムスタンプ、未使用の場合は空白" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "使用タイムスタンプ" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "該当する場合、このプロモコードに割り当てられたユーザー" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "担当ユーザー" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "プロモコード" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "プロモコード" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." -msgstr "" -"割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちら" -"も定義してはならない。" +msgstr "割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちらも定義してはならない。" -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "プロモコードはすでに使用されています" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "プロモコード {self.uuid} の割引タイプが無効です!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "この注文に使用される請求先住所" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "この注文に適用されるプロモコード" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "プロモーションコード適用" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "この注文に使用された配送先住所" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "配送先住所" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "ライフサイクルにおける現在の注文状況" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "注文状況" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 msgid "json structure of notifications to display to users" -msgstr "" -"ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" +msgstr "ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "この注文の注文属性のJSON表現" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "注文を行ったユーザー" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "ユーザー" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "注文が確定したタイムスタンプ" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "時間を買う" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "オーダーの人間が読み取り可能な識別子。" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "人間が読めるID" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "オーダー" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "ユーザーは一度に1つの未決注文しか持つことができません!" -#: core/models.py:1444 +#: core/models.py:1473 msgid "you cannot add products to an order that is not a pending one" msgstr "保留中の注文以外の注文に商品を追加することはできません。" -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "アクティブでない商品を注文に追加することはできません。" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "在庫以上の商品を追加することはできません。" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 msgid "you cannot remove products from an order that is not a pending one" msgstr "保留中の注文以外の注文から商品を削除することはできません。" -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name}はクエリ<{query}と一緒に存在しません!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "プロモコードが存在しない" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "配送先住所が指定された現物商品のみ購入可能!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "アドレスが存在しない" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "現在ご購入いただけません。数分後にもう一度お試しください。" -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "無効なフォース値" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "空注文はできません!" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "ユーザーがいない注文は購入できない!" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "残高のないユーザーは、残高で購入することはできない!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "注文を完了するための資金不足" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -msgstr "" -"ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お" -"客様のお名前、お客様のEメール、お客様の電話番号" +msgstr "ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お客様のお名前、お客様のEメール、お客様の電話番号" -#: core/models.py:1666 +#: core/models.py:1700 #, 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}が無効です!" -#: core/models.py:1768 +#: core/models.py:1802 msgid "the price paid by the customer for this product at purchase time" msgstr "この商品の購入時に顧客が支払った価格" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "注文時の購入価格" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "この注文商品に関する管理者への内部コメント" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "社内コメント" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "ユーザー通知" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "このアイテムの属性のJSON表現" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "製品属性の順序" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "この商品を含む親注文への参照" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "親注文" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "この注文ラインに関連する特定の製品" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "注文に含まれる特定の商品の数量" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "製品数量" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "この商品の現在のご注文状況" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "製品ラインの状況" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "Orderproductには関連する注文がなければならない!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "フィードバックに指定されたアクションが間違っています:{action}です!" -#: core/models.py:1888 +#: core/models.py:1922 msgid "you cannot feedback an order which is not received" msgstr "受信していない注文をフィードバックすることはできません。" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "ダウンロード" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "ダウンロード" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "未完成の注文のデジタル資産をダウンロードすることはできません。" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "ユーザーから寄せられた製品使用体験に関するコメント" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "フィードバック・コメント" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "このフィードバックが対象としている注文の特定の製品を参照する。" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "関連注文商品" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "ユーザーによる製品の評価" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "製品評価" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "フィードバック" #: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." -msgstr "" -"フィードバックを追加するには、コメント、評価、および注文商品の uuid を入力す" -"る必要があります。" +msgstr "フィードバックを追加するには、コメント、評価、および注文商品の uuid を入力する必要があります。" -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "プロモコード作成中にエラーが発生しました:{e!s}です。" @@ -2125,12 +2111,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!ご注文を承りましたことをお知らせいたします。以下、ご注文の詳細です:" #: core/templates/digital_order_created_email.html:112 #: core/templates/digital_order_delivered_email.html:110 @@ -2153,9 +2136,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までお気軽にお問い合わせください。" #: core/templates/digital_order_created_email.html:133 #, python-format @@ -2181,8 +2162,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が正常に処理されました!以下はご注文の詳細です:" #: core/templates/digital_order_delivered_email.html:128 msgid "" @@ -2202,9 +2182,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までお気軽にお問い合わせください。" #: core/templates/digital_order_delivered_email.html:165 #, python-format @@ -2218,12 +2196,9 @@ msgstr "キー" #: core/templates/shipped_order_created_email.html:101 #: 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 "ご注文ありがとうございます!ご購入を確認させていただきました。以下、ご注文の詳細です:" #: core/templates/shipped_order_created_email.html:123 #: core/templates/shipped_order_delivered_email.html:123 @@ -2258,17 +2233,17 @@ msgstr "データとタイムアウトの両方が必要" msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "無効なタイムアウト値です。" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME}|コンタクト開始| お問い合わせはこちらから" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME}|注文確認| ご注文の確認" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME}|ご注文は配送されますか?" @@ -2284,23 +2259,21 @@ msgstr "NOMINATIM_URLパラメータを設定する必要があります!" #: core/validators.py:16 #, 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} ピクセルを超えないようにしてください!" #: core/validators.py:22 msgid "invalid phone number format" msgstr "無効な電話番号形式" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "デジタルアセットのダウンロードは1回限りです。" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "ファビコンが見つかりません" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "ジオコーディングエラー:{e}" diff --git a/core/locale/kk_KZ/LC_MESSAGES/django.mo b/core/locale/kk_KZ/LC_MESSAGES/django.mo index 47c1f925..980937eb 100644 Binary files a/core/locale/kk_KZ/LC_MESSAGES/django.mo and b/core/locale/kk_KZ/LC_MESSAGES/django.mo differ diff --git a/core/locale/kk_KZ/LC_MESSAGES/django.po b/core/locale/kk_KZ/LC_MESSAGES/django.po index f4aec1bb..63dab507 100644 --- a/core/locale/kk_KZ/LC_MESSAGES/django.po +++ b/core/locale/kk_KZ/LC_MESSAGES/django.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -61,70 +61,70 @@ msgstr "" msgid "relations" msgstr "" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "" -#: core/admin.py:96 -#, python-format -msgid "activate selected %(verbose_name_plural)s" -msgstr "" - -#: core/admin.py:101 -msgid "selected items have been activated." -msgstr "" - #: core/admin.py:107 #, python-format -msgid "deactivate selected %(verbose_name_plural)s" +msgid "activate selected %(verbose_name_plural)s" msgstr "" #: core/admin.py:112 +msgid "selected items have been activated." +msgstr "" + +#: core/admin.py:118 +#, python-format +msgid "deactivate selected %(verbose_name_plural)s" +msgstr "" + +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "" @@ -216,300 +216,314 @@ msgid "" "`product_uuid` and `attributes`." msgstr "" -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:63 +#: core/docs/drf/viewsets.py:64 msgid "rewrite some fields of an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:117 +#: core/docs/drf/viewsets.py:118 msgid "rewrite some fields of an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "" -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 msgid "" "Case-insensitive substring search across human_readable_id, order_products." "product.name, and order_products.product.partnumber" msgstr "" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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')." msgstr "" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -526,287 +540,295 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for " "descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "" -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 core/models.py:486 +#: core/models.py:677 msgid "Slug" msgstr "" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "" @@ -830,7 +852,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -861,7 +883,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" @@ -935,9 +957,9 @@ msgstr "" msgid "original address string provided by the user" msgstr "" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" @@ -950,145 +972,145 @@ msgstr "" msgid "elasticsearch - works like a charm" msgstr "" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 msgid "which attributes and values can be used for filtering this category." msgstr "" -#: core/graphene/object_types.py:135 +#: core/graphene/object_types.py:203 msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "" -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1096,7 +1118,7 @@ msgstr "" msgid "price" msgstr "" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1104,31 +1126,35 @@ msgstr "" msgid "quantity" msgstr "" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1136,890 +1162,898 @@ msgstr "" msgid "product" msgstr "" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 core/models.py:1837 msgid "associated product" msgstr "" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "" -#: core/models.py:753 -msgid "category of this attribute" +#: core/models.py:680 +msgid "stock keeping unit for this product" msgstr "" -#: core/models.py:761 -msgid "group of this attribute" -msgstr "" - -#: core/models.py:767 -msgid "string" -msgstr "" - -#: core/models.py:768 -msgid "integer" -msgstr "" - -#: core/models.py:769 -msgid "float" -msgstr "" - -#: core/models.py:770 -msgid "boolean" -msgstr "" - -#: core/models.py:771 -msgid "array" -msgstr "" - -#: core/models.py:772 -msgid "object" -msgstr "" - -#: core/models.py:774 -msgid "type of the attribute's value" -msgstr "" - -#: core/models.py:775 -msgid "value type" +#: core/models.py:681 +msgid "SKU" msgstr "" #: core/models.py:780 +msgid "category of this attribute" +msgstr "" + +#: core/models.py:788 +msgid "group of this attribute" +msgstr "" + +#: core/models.py:794 +msgid "string" +msgstr "" + +#: core/models.py:795 +msgid "integer" +msgstr "" + +#: core/models.py:796 +msgid "float" +msgstr "" + +#: core/models.py:797 +msgid "boolean" +msgstr "" + +#: core/models.py:798 +msgid "array" +msgstr "" + +#: core/models.py:799 +msgid "object" +msgstr "" + +#: core/models.py:801 +msgid "type of the attribute's value" +msgstr "" + +#: core/models.py:802 +msgid "value type" +msgstr "" + +#: core/models.py:807 msgid "name of this attribute" msgstr "" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "" -#: core/models.py:1242 +#: core/models.py:1269 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 msgid "json structure of notifications to display to users" msgstr "" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "" -#: core/models.py:1444 +#: core/models.py:1473 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: core/models.py:1768 +#: core/models.py:1802 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "" -#: core/models.py:1888 +#: core/models.py:1922 msgid "you cannot feedback an order which is not received" msgstr "" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "" -#: core/models.py:1970 +#: core/models.py:2004 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "" @@ -2028,7 +2062,7 @@ msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "" @@ -2180,17 +2214,17 @@ msgstr "" msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "" @@ -2212,15 +2246,15 @@ msgstr "" msgid "invalid phone number format" msgstr "" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "" diff --git a/core/locale/nl_NL/LC_MESSAGES/django.mo b/core/locale/nl_NL/LC_MESSAGES/django.mo index f411d933..afbe9a89 100644 Binary files a/core/locale/nl_NL/LC_MESSAGES/django.mo and b/core/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/core/locale/nl_NL/LC_MESSAGES/django.po b/core/locale/nl_NL/LC_MESSAGES/django.po index ce5cc34e..47f09c15 100644 --- a/core/locale/nl_NL/LC_MESSAGES/django.po +++ b/core/locale/nl_NL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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" #: core/abstract.py:20 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" @@ -60,70 +61,70 @@ msgstr "Algemeen" msgid "relations" msgstr "Relaties" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Metagegevens" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Tijdstempels" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activeer geselecteerde %(verbose_name_plural)s" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Geselecteerde items zijn geactiveerd!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactiveer geselecteerd %(verbose_name_plural)s" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Geselecteerde items zijn gedeactiveerd!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Attribuut Waarde" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Attribuutwaarden" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Afbeelding" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Afbeeldingen" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Voorraad" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Aandelen" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Product bestellen" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Producten bestellen" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Kinderen" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Config" @@ -185,8 +186,7 @@ msgid "" "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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -221,202 +221,221 @@ msgstr "" "Koop een bestelling in als een bedrijf, met behulp van de meegeleverde " "`producten` met `product_uuid` en `attributen`." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "Alle attribuutgroepen weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Een enkele groep kenmerken ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Een attribuutgroep maken" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Een attribuutgroep verwijderen" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Een bestaande attribuutgroep herschrijven en niet-wijzigbare attributen " "opslaan" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +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" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "Alle attributen weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Een enkel kenmerk ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Een attribuut maken" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Een attribuut verwijderen" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Een bestaand attribuut herschrijven en niet-wijzigbare attributen opslaan" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaand attribuut door niet-wijzigbare " "velden op te slaan" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "Alle attribuutwaarden weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Een waarde voor een enkel kenmerk ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Een attribuutwaarde maken" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Een attribuutwaarde verwijderen" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Een bestaande attribuutwaarde herschrijven waarbij niet-wijzigbare " "attributen worden opgeslagen" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +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" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "Alle categorieën weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Een enkele categorie ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Een categorie maken" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Een categorie verwijderen" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "Een bestaande categorie herschrijven en niet-wijzigbare items opslaan" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "SEO Meta momentopname" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "" +"Geeft als resultaat een momentopname van de SEO-metagegevens van de " +"categorie" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "Categorie UUID of slug" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "Alle categorieën weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 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." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filter orders met buy_time >= deze ISO 8601 datetime" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filter orders met buy_time <= deze ISO 8601 datetime" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filter op exacte volgorde UUID" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Filter op exacte, door mensen leesbare bestel-ID" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filter op e-mail van gebruiker (hoofdlettergevoelige exacte overeenkomst)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filter op UUID van gebruiker" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "Filter op bestelstatus (hoofdlettergevoelige substringmatch)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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')." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Een enkele categorie ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Een attribuut maken" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Werkt niet voor gebruikers die geen personeel zijn." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Een attribuut verwijderen" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "Een bestaande categorie herschrijven en niet-wijzigbare items opslaan" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Aankoopprijs bij bestelling" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -426,20 +445,21 @@ msgstr "" "wordt de aankoop afgerond met het saldo van de gebruiker; als " "`force_payment` wordt gebruikt, wordt een transactie gestart." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "een bestelling kopen zonder een account aan te maken" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 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." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Een product aan de bestelling toevoegen" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -447,13 +467,13 @@ msgstr "" "Voegt een product toe aan een bestelling met de opgegeven `product_uuid` en " "`attributen`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "" "Voeg een lijst met producten toe om te bestellen, hoeveelheden tellen niet " "mee" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -461,11 +481,11 @@ msgstr "" "Voegt een lijst met producten toe aan een bestelling met behulp van de " "opgegeven `product_uuid` en `attributen`." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Een product uit de bestelling verwijderen" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -473,11 +493,11 @@ msgstr "" "Verwijdert een product uit een bestelling met behulp van de opgegeven " "`product_uuid` en `attributen`." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "Verwijder een product uit de bestelling, hoeveelheden tellen niet mee" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -485,409 +505,406 @@ msgstr "" "Verwijdert een lijst met producten uit een bestelling met behulp van de " "opgegeven `product_uuid` en `attributen`." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "Alle attributen weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Voor niet-personeelsleden worden alleen hun eigen verlanglijstjes " "geretourneerd." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Een enkel kenmerk ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Een attribuut maken" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Werkt niet voor gebruikers die geen personeel zijn." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Een attribuut verwijderen" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Een bestaand attribuut herschrijven en niet-wijzigbare attributen opslaan" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaand attribuut door niet-wijzigbare " "velden op te slaan" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Een product aan de bestelling toevoegen" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Voegt een product toe aan een verlanglijstje met behulp van de opgegeven " "`product_uuid`." -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Een product uit het verlanglijstje verwijderen" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Verwijdert een product van een verlanglijstje met behulp van de opgegeven " "`product_uuid`." -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Veel producten toevoegen aan het verlanglijstje" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Voegt veel producten toe aan een verlanglijstje met behulp van de opgegeven " "`product_uuids`." -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Een product uit de bestelling verwijderen" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Verwijdert een groot aantal producten uit een verlanglijstje met behulp van " "de opgegeven `product_uuids`." -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`." -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "Alle producten weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(exacte) UUID van product" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(pictogrammen) Productnaam" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(lijst) Categorienamen, hoofdlettergevoelig" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(exacte) UUID van categorie" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(lijst) Labelnamen, hoofdlettergevoelig" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Minimale aandelenprijs" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Maximale aandelenprijs" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(exact) Alleen actieve producten" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Merknaam" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimumvoorraad" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(exact) Digitaal vs. fysiek" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Een enkel product ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "Product UUID of Slug" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Een product maken" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Een bestaand product herschrijven met behoud van niet-wijzigbare velden" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Enkele velden van een bestaand product bijwerken, met behoud van niet-" "wijzigbare velden" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Een product verwijderen" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "somt alle toegestane feedbacks voor een product op" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "" +"Geeft als resultaat een momentopname van de SEO-metagegevens van het product" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "Vermeld alle adressen" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Een enkel adres ophalen" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Een nieuw adres maken" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Een adres verwijderen" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Een heel adres bijwerken" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Een adres gedeeltelijk bijwerken" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Automatische adresinvoer" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Ruwe gegevensquerystring, gelieve aan te vullen met gegevens van geo-IP " "eindpunt" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "beperkt de hoeveelheid resultaten, 1 < limiet < 10, standaard: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "alle feedbacks weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "een enkele feedback ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "een feedback creëren" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "een feedback verwijderen" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "" "een bestaande feedback herschrijven waarbij niet-wijzigbare gegevens worden " "opgeslagen" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "alle order-productrelaties weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 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)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "een nieuwe bestelling-product relatie maken" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "een bestaande order-productrelatie vervangen" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "een bestaande order-productrelatie gedeeltelijk bijwerken" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "een order-productrelatie verwijderen" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "feedback toevoegen of verwijderen op een order-productrelatie" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "Geen zoekterm opgegeven." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Naam" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Categorieën" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Categorieën Naaktslakken" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Tags" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Min Prijs" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Maximale prijs" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Is actief" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Merk" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Attributen" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Hoeveelheid" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Slak" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "Is digitaal" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Subcategorieën opnemen" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Inclusief persoonlijk bestelde producten" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Er moet een categorie_uuid zijn om include_subcategories vlag te gebruiken" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Zoeken (ID, productnaam of onderdeelnummer)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Gekocht na (inclusief)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Eerder gekocht (inclusief)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "E-mail gebruiker" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "Gebruiker UUID" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Status" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "Menselijk leesbare ID" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Ouder" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Hele categorie (heeft minstens 1 product of niet)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Niveau" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "Product UUID" @@ -911,7 +928,7 @@ msgstr "Gecachte gegevens" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-gegevens van de opgevraagde URL" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Alleen URL's die beginnen met http(s):// zijn toegestaan" @@ -942,7 +959,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Geef order_uuid of order_hr_id - wederzijds exclusief!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Verkeerd type kwam uit order.buy() methode: {type(instance)!s}" @@ -995,8 +1012,8 @@ msgstr "Een bestelling kopen" #: core/graphene/mutations.py:500 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" @@ -1017,9 +1034,9 @@ msgstr "Orderproduct {order_product_uuid} niet gevonden!" msgid "original address string provided by the user" msgstr "Originele adresstring geleverd door de gebruiker" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} bestaat niet: {uuid}!" @@ -1032,99 +1049,100 @@ msgstr "Limiet moet tussen 1 en 10 liggen" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - werkt als een charme" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Attributen" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Gegroepeerde kenmerken" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Groepen van kenmerken" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Categorieën" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Merken" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Categorieën" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Opwaarderingspercentage" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 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." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimale en maximale prijzen voor producten in deze categorie, indien " "beschikbaar." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Tags voor deze categorie" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Producten in deze categorie" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Verkopers" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Breedtegraad (Y-coördinaat)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Lengtegraad (X-coördinaat)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Hoe" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Vertegenwoordigt feedback van een gebruiker." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Meldingen" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "Download url voor dit bestelproduct indien van toepassing" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "Een lijst met bestelde producten in deze bestelling" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Factuuradres" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1132,51 +1150,51 @@ msgstr "" "Verzendadres voor deze bestelling, leeg laten als dit hetzelfde is als het " "factuuradres of als dit niet van toepassing is" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Totale prijs van deze bestelling" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Totale hoeveelheid producten in bestelling" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Zijn alle producten in de bestelling digitaal" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Transacties voor deze bestelling" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Bestellingen" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "Afbeelding URL" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Afbeeldingen van het product" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Categorie" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Reacties" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Merk" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Attribuutgroepen" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1184,7 +1202,7 @@ msgstr "Attribuutgroepen" msgid "price" msgstr "Prijs" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1192,31 +1210,35 @@ msgstr "Prijs" msgid "quantity" msgstr "Hoeveelheid" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Aantal terugkoppelingen" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Producten alleen beschikbaar voor persoonlijke bestellingen" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Producten" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Producten te koop" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Promoties" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Verkoper" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1224,793 +1246,803 @@ msgstr "Verkoper" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Gewenste producten" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Verlanglijst" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Getagde producten" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Product tags" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Getagde categorieën" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Categorieën' tags" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Naam project" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "Bedrijf E-mail" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Bedrijfsnaam" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Adres" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Telefoonnummer bedrijf" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "Gebruiker e-mail hosten" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Maximumbedrag voor betaling" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Minimumbedrag voor betaling" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Analytics-gegevens" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Advertentiegegevens" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Configuratie" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Taalcode" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Naam van de taal" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Taalvlag, indien aanwezig :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Een lijst met ondersteunde talen opvragen" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Producten zoekresultaten" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Zoekresultaten" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Ouder van deze groep" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Ouderattribuutgroep" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Naam attribuutgroep" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Attribuutgroep" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Slaat referenties en eindpunten op die vereist zijn voor API-communicatie " "van de verkoper" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Authenticatie-info" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definieer de opmaak voor producten die zijn opgehaald bij deze leverancier" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Verkoper winstpercentage" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Naam van deze verkoper" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Naam verkoper" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Interne tagidentifier voor de producttag" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Tag naam" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "Gebruiksvriendelijke naam voor de producttag" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Tag weergavenaam" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Productlabel" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "categorie tag" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "categorie tags" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Upload een afbeelding die deze categorie vertegenwoordigt" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Categorie afbeelding" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "Definieer een toeslagpercentage voor producten in deze categorie" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Ouder van deze categorie om een hiërarchische structuur te vormen" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Oudercategorie" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Naam categorie" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Geef deze categorie een naam" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Voeg een gedetailleerde beschrijving toe voor deze categorie" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Categorie beschrijving" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "tags die deze categorie helpen beschrijven of groeperen" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Prioriteit" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Naam van dit merk" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Merknaam" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Upload een logo dat dit merk vertegenwoordigt" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Klein merkimago" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Upload een groot logo dat dit merk vertegenwoordigt" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Groot merkimago" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Een gedetailleerde beschrijving van het merk toevoegen" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Merknaam" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Optionele categorieën waarmee dit merk wordt geassocieerd" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Categorieën" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "De verkoper die dit product levert" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Geassocieerde verkoper" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Eindprijs voor de klant na winstmarges" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Verkoopprijs" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "Het product dat bij deze voorraadvermelding hoort" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Bijbehorend product" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "De prijs die voor dit product aan de verkoper is betaald" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Aankoopprijs verkoper" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Beschikbare hoeveelheid van het product in voorraad" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Hoeveelheid op voorraad" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "Door de verkoper toegewezen SKU om het product te identificeren" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "Verkoper SKU" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "Digitaal bestand gekoppeld aan deze voorraad indien van toepassing" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Digitaal bestand" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Voorraadboekingen" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Categorie waartoe dit product behoort" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Dit product optioneel koppelen aan een merk" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Tags die dit product helpen beschrijven of groeperen" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Geeft aan of dit product digitaal wordt geleverd" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "Is product digitaal" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Zorg voor een duidelijke identificerende naam voor het product" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Naam product" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Voeg een gedetailleerde beschrijving van het product toe" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Productbeschrijving" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Onderdeelnummer voor dit product" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Onderdeelnummer" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Voorraadhoudende eenheid voor dit product" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Categorie van dit kenmerk" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Groep van dit kenmerk" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "String" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Integer" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Vlotter" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Booleaans" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Array" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Object" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Type waarde van het kenmerk" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Waardetype" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Naam van dit kenmerk" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Naam attribuut" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Attribuut" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Attribuut van deze waarde" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "Het specifieke product geassocieerd met de waarde van dit kenmerk" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "De specifieke waarde voor dit kenmerk" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "Geef alternatieve tekst voor de afbeelding voor toegankelijkheid" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Alt-tekst afbeelding" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Upload het afbeeldingsbestand voor dit product" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Product afbeelding" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Bepaalt de volgorde waarin afbeeldingen worden weergegeven" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Prioriteit weergeven" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "Het product dat deze afbeelding vertegenwoordigt" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Product afbeeldingen" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Kortingspercentage voor de geselecteerde producten" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Kortingspercentage" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Geef deze promotie een unieke naam" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Naam promotie" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Promotie beschrijving" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Selecteer welke producten onder deze promotie vallen" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Meegeleverde producten" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Promotie" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Producten die de gebruiker als gewenst heeft gemarkeerd" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "Gebruiker die eigenaar is van deze verlanglijst" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Eigenaar verlanglijstje" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Verlanglijst" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Documentaire" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Documentaires" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Onopgelost" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Adresregel voor de klant" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Adresregel" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Straat" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "District" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "Stad" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Regio" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Postcode" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "Land" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocatie Punt (lengtegraad, breedtegraad)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Volledig JSON-antwoord van geocoder voor dit adres" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Opgeslagen JSON-antwoord van de geocoderingsservice" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Adres" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Adressen" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "Unieke code die een gebruiker gebruikt om een korting te verzilveren" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Promo code identificatie" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "" "Vast kortingsbedrag dat wordt toegepast als percentage niet wordt gebruikt" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Vast kortingsbedrag" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Kortingspercentage dat wordt toegepast als het vaste bedrag niet wordt " "gebruikt" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Kortingspercentage" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Tijdstempel wanneer de promocode verloopt" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "Geldigheidsduur einde" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Tijdstempel vanaf wanneer deze promocode geldig is" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Begin geldigheidsduur" -#: core/models.py:1242 +#: core/models.py:1269 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" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Gebruik tijdstempel" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "Gebruiker toegewezen aan deze promocode indien van toepassing" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Toegewezen gebruiker" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Kortingscode" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Actiecodes" -#: core/models.py:1264 +#: core/models.py:1291 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." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "Promocode is al gebruikt" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ongeldig kortingstype voor promocode {self.uuid}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "Het factuuradres dat voor deze bestelling is gebruikt" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Optionele promotiecode toegepast op deze bestelling" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Kortingscode toegepast" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "Het verzendadres dat voor deze bestelling is gebruikt" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Verzendadres" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Huidige status van de order in zijn levenscyclus" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Bestelstatus" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "JSON-weergave van bestelattributen voor deze bestelling" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "De gebruiker die de bestelling heeft geplaatst" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "Gebruiker" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "De tijdstempel waarop de bestelling is afgerond" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Tijd kopen" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "Een menselijk leesbare identificatiecode voor de bestelling" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "menselijk leesbare ID" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Bestel" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "Een gebruiker mag maar één lopende order tegelijk hebben!" -#: core/models.py:1444 +#: core/models.py:1473 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." -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "U kunt geen inactieve producten toevoegen aan uw bestelling" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "Je kunt niet meer producten toevoegen dan er op voorraad zijn" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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." -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} bestaat niet met query <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Promocode bestaat niet" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "Je kunt alleen fysieke producten kopen met opgegeven verzendadres!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "Adres bestaat niet" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Ongeldige krachtwaarde" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "Je kunt geen lege bestelling kopen!" -#: core/models.py:1615 +#: core/models.py:1644 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." -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "Een gebruiker zonder saldo kan niet kopen met saldo!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Onvoldoende fondsen om de bestelling te voltooien" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2018,124 +2050,126 @@ msgstr "" "u niet kunt kopen zonder registratie, geef dan de volgende informatie: " "klantnaam, e-mail klant, telefoonnummer klant" -#: core/models.py:1666 +#: core/models.py:1700 #, 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}!" -#: core/models.py:1768 +#: core/models.py:1802 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" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Aankoopprijs bij bestelling" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "Interne opmerkingen voor beheerders over dit bestelde product" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Interne opmerkingen" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "Meldingen van gebruikers" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "JSON weergave van de attributen van dit item" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Geordende producteigenschappen" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Verwijzing naar de bovenliggende bestelling die dit product bevat" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Ouderlijk bevel" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "Het specifieke product dat bij deze bestelregel hoort" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Hoeveelheid van dit specifieke product in de bestelling" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Hoeveelheid product" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Huidige status van dit product in de bestelling" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Status productlijn" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "Orderproduct moet een bijbehorende order hebben!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Verkeerde actie opgegeven voor feedback: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 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." -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Downloaden" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Downloads" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "" "U kunt geen digitale activa downloaden voor een niet-afgeronde bestelling" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "Opmerkingen van gebruikers over hun ervaring met het product" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Reacties" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Gerelateerd product bestellen" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "Door de gebruiker toegekende waardering voor het product" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Productbeoordeling" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Feedback" @@ -2146,7 +2180,7 @@ msgstr "" "Om feedback toe te voegen, moet je een opmerking, beoordeling en " "productidentificatie opgeven." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Fout tijdens aanmaken promocode: {e!s}" @@ -2178,8 +2212,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 " @@ -2273,8 +2306,7 @@ msgstr "Sleutel" #: core/templates/shipped_order_created_email.html:101 #: 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. " @@ -2311,19 +2343,20 @@ msgstr "Zowel gegevens als time-out zijn vereist" #: core/utils/caching.py:43 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" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | neem contact met ons op" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Orderbevestiging" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Bestelling afgeleverd" @@ -2347,15 +2380,15 @@ msgstr "" msgid "invalid phone number format" msgstr "Ongeldig formaat telefoonnummer" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "U kunt het digitale goed maar één keer downloaden" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "favicon niet gevonden" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Fout bij geocodering: {e}" diff --git a/core/locale/pl_PL/LC_MESSAGES/django.mo b/core/locale/pl_PL/LC_MESSAGES/django.mo index 393bde22..899b4a57 100644 Binary files a/core/locale/pl_PL/LC_MESSAGES/django.mo and b/core/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/core/locale/pl_PL/LC_MESSAGES/django.po b/core/locale/pl_PL/LC_MESSAGES/django.po index ddfaf4d2..941f62f3 100644 --- a/core/locale/pl_PL/LC_MESSAGES/django.po +++ b/core/locale/pl_PL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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" #: core/abstract.py:20 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ń." @@ -62,70 +63,70 @@ msgstr "Ogólne" msgid "relations" msgstr "Relacje" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Metadane" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Znaczniki czasu" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktywuj wybrane %(verbose_name_plural)s" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Wybrane elementy zostały aktywowane!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Dezaktywacja wybranego %(verbose_name_plural)s" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Wybrane elementy zostały dezaktywowane!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Wartość atrybutu" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Wartości atrybutów" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Obraz" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Obrazy" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Stan magazynowy" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Akcje" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Zamów produkt" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Zamawianie produktów" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Dzieci" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Konfiguracja" @@ -187,8 +188,7 @@ msgid "" "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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -222,208 +222,224 @@ msgstr "" "Kup zamówienie jako firma, używając dostarczonych `products` z " "`product_uuid` i `attributes`." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "Lista wszystkich grup atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Pobieranie pojedynczej grupy atrybutów (widok szczegółowy)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Tworzenie grupy atrybutów" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Usuwanie grupy atrybutów" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Przepisanie istniejącej grupy atrybutów z zachowaniem atrybutów " "nieedytowalnych" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +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" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "Lista wszystkich atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Pobieranie pojedynczego atrybutu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Utwórz atrybut" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Usuwanie atrybutu" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Przepisanie istniejącego atrybutu z zachowaniem atrybutów nieedytowalnych" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Przepisanie niektórych pól istniejącego atrybutu z zachowaniem atrybutów " "nieedytowalnych" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "Lista wszystkich wartości atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Pobieranie wartości pojedynczego atrybutu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Tworzenie wartości atrybutu" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Usuwanie wartości atrybutu" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Przepisanie istniejącej wartości atrybutu z zachowaniem atrybutów " "nieedytowalnych" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +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" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "Lista wszystkich kategorii (widok prosty)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Pobieranie pojedynczej kategorii (widok szczegółowy)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Utwórz kategorię" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Usuwanie kategorii" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "Przepisz istniejącą kategorię, zapisując nieedytowalne elementy" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "SEO Meta snapshot" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Zwraca migawkę metadanych SEO kategorii." + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "Identyfikator UUID kategorii lub slug" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "Lista wszystkich kategorii (widok prosty)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "" "W przypadku użytkowników niebędących pracownikami zwracane są tylko ich " "własne zamówienia." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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." -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtruj zamówienia z buy_time >= ta data ISO 8601" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtruj zamówienia z buy_time <= ten ISO 8601 datetime" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filtruj według dokładnego identyfikatora UUID zamówienia" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "" "Filtrowanie według dokładnego, czytelnego dla człowieka identyfikatora " "zamówienia" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtrowanie według adresu e-mail użytkownika (dokładne dopasowanie z " "uwzględnieniem wielkości liter)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filtrowanie według identyfikatora UUID użytkownika" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 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)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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 " "(np. \"-buy_time\")." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Pobieranie pojedynczej kategorii (widok szczegółowy)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Utwórz atrybut" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Nie działa dla użytkowników spoza personelu." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Usuwanie atrybutu" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "Przepisz istniejącą kategorię, zapisując nieedytowalne elementy" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Cena zakupu w momencie zamówienia" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -433,19 +449,19 @@ msgstr "" "finalizowany przy użyciu salda użytkownika; Jeśli użyto `force_payment`, " "transakcja jest inicjowana." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "zakup zamówienia bez tworzenia konta" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizuje zakup zamówienia dla niezarejestrowanego użytkownika." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Dodawanie produktu do zamówienia" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -453,11 +469,11 @@ msgstr "" "Dodaje produkt do zamówienia przy użyciu podanych `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "Dodaj listę produktów do zamówienia, ilości nie będą liczone." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -465,11 +481,11 @@ msgstr "" "Dodaje listę produktów do zamówienia przy użyciu podanych `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Usunięcie produktu z zamówienia" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -477,11 +493,11 @@ msgstr "" "Usuwa produkt z zamówienia przy użyciu podanego `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "Usuń produkt z zamówienia, ilości nie będą liczone" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -489,402 +505,398 @@ msgstr "" "Usuwa listę produktów z zamówienia przy użyciu podanych `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "Lista wszystkich atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "W przypadku użytkowników niebędących pracownikami zwracane są tylko ich " "własne listy życzeń." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Pobieranie pojedynczego atrybutu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Utwórz atrybut" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Nie działa dla użytkowników spoza personelu." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Usuwanie atrybutu" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Przepisanie istniejącego atrybutu z zachowaniem atrybutów nieedytowalnych" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Przepisanie niektórych pól istniejącego atrybutu z zachowaniem atrybutów " "nieedytowalnych" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Dodawanie produktu do zamówienia" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Dodaje produkt do listy życzeń używając podanego `product_uuid`" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Usunięcie produktu z listy życzeń" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Usuwa produkt z listy życzeń przy użyciu podanego identyfikatora " "`product_uuid`." -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Dodaj wiele produktów do listy życzeń" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Dodaje wiele produktów do listy życzeń przy użyciu podanych `product_uuids`" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Usunięcie produktu z zamówienia" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Usuwa wiele produktów z listy życzeń przy użyciu podanych `product_uuids`" -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "Lista wszystkich produktów (widok prosty)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(dokładny) UUID produktu" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(ikony) Nazwa produktu" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(lista) Nazwy kategorii, wielkość liter nie ma znaczenia" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(dokładny) UUID kategorii" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(lista) Nazwy tagów, wielkość liter nie ma znaczenia" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Minimalna cena akcji" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Maksymalna cena akcji" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(dokładnie) Tylko aktywne produkty" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Nazwa marki" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimalna ilość zapasów" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(dokładnie) Cyfrowe vs. fizyczne" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Pobieranie pojedynczego produktu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "UUID produktu lub Slug" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Tworzenie produktu" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Przepisz istniejący produkt, zachowując nieedytowalne pola" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Aktualizacja niektórych pól istniejącego produktu z zachowaniem pól " "nieedytowalnych" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Usuń produkt" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "wyświetla wszystkie dozwolone informacje zwrotne dotyczące produktu" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Zwraca migawkę metadanych SEO produktu." + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "Lista wszystkich adresów" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Pobieranie pojedynczego adresu" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Utwórz nowy adres" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Usuwanie adresu" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Aktualizacja całego adresu" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Częściowa aktualizacja adresu" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Wprowadzanie adresu w trybie autouzupełniania" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Ciąg zapytania danych nieprzetworzonych, należy dołączyć dane z punktu " "końcowego geo-IP" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "ogranicza ilość wyników, 1 < limit < 10, domyślnie: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "lista wszystkich opinii (widok prosty)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "pobieranie pojedynczej informacji zwrotnej (widok szczegółowy)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "utworzyć informację zwrotną" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "usuwanie opinii" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "" "przepisanie istniejącej informacji zwrotnej z zachowaniem elementów " "nieedytowalnych" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "lista wszystkich relacji zamówienie-produkt (widok prosty)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "pobranie pojedynczej relacji zamówienie-produkt (widok szczegółowy)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "utworzyć nową relację zamówienie-produkt" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "zastąpić istniejącą relację zamówienie-produkt" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "częściowa aktualizacja istniejącej relacji zamówienie-produkt" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "usunąć relację zamówienie-produkt" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "dodawanie lub usuwanie opinii na temat relacji zamówienie-produkt" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "Nie podano wyszukiwanego hasła." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Nazwa" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Kategorie" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Kategorie Ślimaki" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Tagi" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Cena minimalna" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Maksymalna cena" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Jest aktywny" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Marka" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Atrybuty" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Ilość" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Ślimak" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "Czy cyfrowy" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Uwzględnienie podkategorii" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Obejmuje produkty zamawiane osobiście" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "Aby użyć flagi include_subcategories, musi istnieć category_uuid" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Wyszukiwanie (ID, nazwa produktu lub numer części)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Kupione po (włącznie)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Kupione wcześniej (włącznie)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "E-mail użytkownika" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "UUID użytkownika" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Status" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "Identyfikator czytelny dla człowieka" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Rodzic" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Cała kategoria (ma co najmniej 1 produkt lub nie)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Poziom" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "UUID produktu" @@ -908,7 +920,7 @@ msgstr "Dane w pamięci podręcznej" msgid "camelized JSON data from the requested URL" msgstr "Kamelizowane dane JSON z żądanego adresu URL" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Dozwolone są tylko adresy URL zaczynające się od http(s)://" @@ -939,7 +951,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Podaj albo order_uuid albo order_hr_id - wzajemnie się wykluczają!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Nieprawidłowy typ pochodzi z metody order.buy(): {type(instance)!s}" @@ -992,8 +1004,8 @@ msgstr "Kup zamówienie" #: core/graphene/mutations.py:500 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" @@ -1015,9 +1027,9 @@ msgstr "Orderproduct {order_product_uuid} nie został znaleziony!" msgid "original address string provided by the user" msgstr "Oryginalny ciąg adresu podany przez użytkownika" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nie istnieje: {uuid}!" @@ -1030,97 +1042,98 @@ msgstr "Limit musi wynosić od 1 do 10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - działa jak urok" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Atrybuty" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Atrybuty pogrupowane" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Grupy atrybutów" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Kategorie" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Marki" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Kategorie" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Procentowy narzut" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 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." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +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." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Tagi dla tej kategorii" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Produkty w tej kategorii" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Sprzedawcy" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Szerokość geograficzna (współrzędna Y)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Długość geograficzna (współrzędna X)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Jak" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Reprezentuje informacje zwrotne od użytkownika." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Powiadomienia" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "Adres URL pobierania dla tego produktu zamówienia, jeśli dotyczy" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "Lista zamówionych produktów w tym zamówieniu" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Adres rozliczeniowy" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1128,51 +1141,51 @@ msgstr "" "Adres wysyłki dla tego zamówienia, pozostaw pusty, jeśli jest taki sam jak " "adres rozliczeniowy lub jeśli nie dotyczy" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Całkowita cena tego zamówienia" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Całkowita ilość produktów w zamówieniu" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Czy wszystkie produkty w zamówieniu są cyfrowe?" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Transakcje dla tego zamówienia" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Zamówienia" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "Adres URL obrazu" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Zdjęcia produktu" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Kategoria" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Informacje zwrotne" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Marka" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Grupy atrybutów" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1180,7 +1193,7 @@ msgstr "Grupy atrybutów" msgid "price" msgstr "Cena" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1188,31 +1201,35 @@ msgstr "Cena" msgid "quantity" msgstr "Ilość" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Liczba informacji zwrotnych" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Produkty dostępne tylko dla zamówień osobistych" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Produkty" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Produkty w sprzedaży" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Promocje" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Sprzedawca" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1220,638 +1237,647 @@ msgstr "Sprzedawca" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Produkty z listy życzeń" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Listy życzeń" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Produkty Tagged" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Tagi produktu" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Kategorie oznaczone tagami" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Tagi kategorii" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Nazwa projektu" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "Firmowy adres e-mail" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Nazwa firmy" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Adres firmy" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Numer telefonu firmy" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "Użytkownik hosta poczty e-mail" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Maksymalna kwota płatności" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Minimalna kwota płatności" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Dane analityczne" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Dane reklamowe" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Konfiguracja" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Kod języka" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Nazwa języka" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Flaga języka, jeśli istnieje :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Pobierz listę obsługiwanych języków" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Wyniki wyszukiwania produktów" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Wyniki wyszukiwania produktów" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Rodzic tej grupy" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Grupa atrybutów nadrzędnych" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Nazwa grupy atrybutów" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Grupa atrybutów" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Przechowuje dane uwierzytelniające i punkty końcowe wymagane do komunikacji " "API dostawcy." -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Informacje o uwierzytelnianiu" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "Definiowanie znaczników dla produktów pobranych od tego dostawcy" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Procentowa marża sprzedawcy" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Nazwa tego sprzedawcy" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Nazwa sprzedawcy" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Wewnętrzny identyfikator tagu produktu" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Nazwa tagu" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "Przyjazna dla użytkownika nazwa etykiety produktu" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Wyświetlana nazwa znacznika" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Etykieta produktu" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "tag kategorii" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "tagi kategorii" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Prześlij obraz reprezentujący tę kategorię" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Obraz kategorii" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "Zdefiniuj procentowy narzut dla produktów w tej kategorii." -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Rodzic tej kategorii w celu utworzenia struktury hierarchicznej" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Kategoria nadrzędna" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Nazwa kategorii" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Podaj nazwę dla tej kategorii" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Dodaj szczegółowy opis dla tej kategorii" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Opis kategorii" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "tagi, które pomagają opisać lub pogrupować tę kategorię" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Priorytet" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Nazwa tej marki" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Nazwa marki" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Prześlij logo reprezentujące tę markę" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Mały wizerunek marki" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Prześlij duże logo reprezentujące tę markę" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Duży wizerunek marki" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Dodaj szczegółowy opis marki" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Opis marki" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Opcjonalne kategorie, z którymi powiązana jest ta marka" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Kategorie" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "Sprzedawca dostarczający ten produkt" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Powiązany sprzedawca" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Ostateczna cena dla klienta po uwzględnieniu marży" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Cena sprzedaży" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "Produkt powiązany z tym wpisem magazynowym" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Produkt powiązany" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "Cena zapłacona sprzedawcy za ten produkt" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Cena zakupu przez sprzedawcę" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Dostępna ilość produktu w magazynie" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Ilość w magazynie" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "Jednostki SKU przypisane przez dostawcę w celu identyfikacji produktu" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "SKU sprzedawcy" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "Plik cyfrowy powiązany z tymi zapasami, jeśli dotyczy" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Plik cyfrowy" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Zapisy magazynowe" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Kategoria, do której należy ten produkt" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Opcjonalnie można powiązać ten produkt z marką" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Tagi, które pomagają opisać lub pogrupować ten produkt" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Wskazuje, czy produkt jest dostarczany cyfrowo." -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "Czy produkt jest cyfrowy?" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Wyraźna nazwa identyfikująca produkt" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Nazwa produktu" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Dodaj szczegółowy opis produktu" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Opis produktu" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Numer części dla tego produktu" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Numer części" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Jednostka magazynowa dla tego produktu" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Kategoria tego atrybutu" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Grupa tego atrybutu" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "String" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Integer" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Pływak" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Wartość logiczna" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Tablica" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Obiekt" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Typ wartości atrybutu" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Typ wartości" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Nazwa tego atrybutu" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Nazwa atrybutu" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Atrybut" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Atrybut tej wartości" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "Konkretny produkt powiązany z wartością tego atrybutu" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "Konkretna wartość dla tego atrybutu" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" -msgstr "Zapewnienie alternatywnego tekstu dla obrazu w celu ułatwienia dostępu" +msgstr "" +"Zapewnienie alternatywnego tekstu dla obrazu w celu ułatwienia dostępu" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Tekst alternatywny obrazu" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Prześlij plik obrazu dla tego produktu" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Obraz produktu" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Określa kolejność wyświetlania obrazów" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Priorytet wyświetlania" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "Produkt, który przedstawia ten obraz" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Zdjęcia produktów" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Rabat procentowy na wybrane produkty" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Procent rabatu" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Podaj unikalną nazwę tej promocji" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Nazwa promocji" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Opis promocji" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Wybierz produkty objęte promocją" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Dołączone produkty" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Promocja" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Produkty, które użytkownik oznaczył jako poszukiwane" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "Użytkownik posiadający tę listę życzeń" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Właściciel listy życzeń" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Lista życzeń" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Film dokumentalny" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Filmy dokumentalne" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Nierozwiązany" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Linia adresu dla klienta" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Linia adresowa" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "ul." -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "Okręg" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "Miasto" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Region" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Kod pocztowy" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "Kraj" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Pełna odpowiedź JSON z geokodera dla tego adresu" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Przechowywana odpowiedź JSON z usługi geokodowania" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Adres" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Adresy" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "Unikalny kod używany przez użytkownika do realizacji rabatu." -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Identyfikator kodu promocyjnego" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "Stała kwota rabatu stosowana, jeśli procent nie jest używany" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Stała kwota rabatu" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "Rabat procentowy stosowany w przypadku niewykorzystania stałej kwoty" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Rabat procentowy" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Znacznik czasu wygaśnięcia kodu promocyjnego" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "Końcowy czas ważności" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Znacznik czasu, od którego ten kod promocyjny jest ważny" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Czas rozpoczęcia ważności" -#: core/models.py:1242 +#: core/models.py:1269 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." -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Znacznik czasu użycia" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "Użytkownik przypisany do tego kodu promocyjnego, jeśli dotyczy" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Przypisany użytkownik" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Kod promocyjny" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Kody promocyjne" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1859,150 +1885,151 @@ msgstr "" "Należy zdefiniować tylko jeden rodzaj rabatu (kwotowy lub procentowy), ale " "nie oba lub żaden z nich." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "Kod promocyjny został już wykorzystany" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Nieprawidłowy typ rabatu dla kodu promocyjnego {self.uuid}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "Adres rozliczeniowy użyty dla tego zamówienia" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Opcjonalny kod promocyjny zastosowany do tego zamówienia" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Zastosowany kod promocyjny" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "Adres wysyłki użyty dla tego zamówienia" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Adres wysyłki" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Aktualny status zamówienia w jego cyklu życia" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Status zamówienia" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "Reprezentacja JSON atrybutów zamówienia dla tego zamówienia" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "Użytkownik, który złożył zamówienie" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "Użytkownik" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "Znacznik czasu, kiedy zamówienie zostało sfinalizowane" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Kup czas" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "Czytelny dla człowieka identyfikator zamówienia" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "Identyfikator czytelny dla człowieka" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Zamówienie" -#: core/models.py:1410 +#: core/models.py:1439 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!" -#: core/models.py:1444 +#: core/models.py:1473 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." -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "Nie można dodać nieaktywnych produktów do zamówienia" -#: core/models.py:1466 +#: core/models.py:1495 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" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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." -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nie istnieje z zapytaniem <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Kod promocyjny nie istnieje" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "Możesz kupować tylko produkty fizyczne z podanym adresem wysyłki!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "Adres nie istnieje" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Nieprawidłowa wartość siły" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "Nie można kupić pustego zamówienia!" -#: core/models.py:1615 +#: core/models.py:1644 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." -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "Użytkownik bez salda nie może kupować za saldo!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Niewystarczające środki do zrealizowania zamówienia" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2011,7 +2038,7 @@ msgstr "" "informacje: imię i nazwisko klienta, adres e-mail klienta, numer telefonu " "klienta." -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -2019,117 +2046,119 @@ msgstr "" "Nieprawidłowa metoda płatności: {payment_method} z " "{available_payment_methods}!" -#: core/models.py:1768 +#: core/models.py:1802 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." -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Cena zakupu w momencie zamówienia" -#: core/models.py:1774 +#: core/models.py:1808 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" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Uwagi wewnętrzne" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "Powiadomienia użytkownika" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "Reprezentacja JSON atrybutów tego elementu" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Zamówione atrybuty produktu" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Odniesienie do zamówienia nadrzędnego zawierającego ten produkt" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Zamówienie nadrzędne" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "Konkretny produkt powiązany z tą linią zamówienia" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Ilość tego konkretnego produktu w zamówieniu" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Ilość produktu" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Aktualny status tego produktu w zamówieniu" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Status linii produktów" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "Orderproduct musi mieć powiązane zamówienie!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Nieprawidłowa akcja określona dla informacji zwrotnej: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 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." -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Pobierz" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Pliki do pobrania" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "Nie można pobrać zasobu cyfrowego dla nieukończonego zamówienia." -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "Komentarze użytkowników na temat ich doświadczeń z produktem" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Komentarze zwrotne" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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." -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Powiązany produkt zamówienia" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "Ocena produktu przypisana przez użytkownika" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Ocena produktu" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Informacje zwrotne" @@ -2140,7 +2169,7 @@ msgstr "" "Aby dodać opinię, należy podać komentarz, ocenę i identyfikator produktu " "zamówienia." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Błąd podczas tworzenia kodu promocyjnego: {e!s}" @@ -2172,8 +2201,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 " @@ -2230,8 +2258,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:" #: core/templates/digital_order_delivered_email.html:128 msgid "" @@ -2267,8 +2295,7 @@ msgstr "Klucz" #: core/templates/shipped_order_created_email.html:101 #: 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 " @@ -2309,17 +2336,17 @@ msgstr "" "Nieprawidłowa wartość limitu czasu, musi zawierać się w przedziale od 0 do " "216000 sekund." -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | zainicjowany kontakt" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Potwierdzenie zamówienia" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Zamówienie dostarczone" @@ -2342,15 +2369,15 @@ msgstr "" msgid "invalid phone number format" msgstr "Nieprawidłowy format numeru telefonu" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "Zasób cyfrowy można pobrać tylko raz" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "nie znaleziono favicon" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Błąd geokodowania: {e}" diff --git a/core/locale/pt_BR/LC_MESSAGES/django.mo b/core/locale/pt_BR/LC_MESSAGES/django.mo index 5f2c14e5..9cf5004d 100644 Binary files a/core/locale/pt_BR/LC_MESSAGES/django.mo and b/core/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/core/locale/pt_BR/LC_MESSAGES/django.po b/core/locale/pt_BR/LC_MESSAGES/django.po index ed2db556..c38a84f7 100644 --- a/core/locale/pt_BR/LC_MESSAGES/django.po +++ b/core/locale/pt_BR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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" #: core/abstract.py:20 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" @@ -62,70 +63,70 @@ msgstr "Geral" msgid "relations" msgstr "Relações" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Metadados" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Carimbos de data/hora" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Ativar o %(verbose_name_plural)s selecionado" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Os itens selecionados foram ativados!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Desativar o %(verbose_name_plural)s selecionado" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Os itens selecionados foram desativados!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Valor do atributo" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Valores de atributos" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Imagem" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Imagens" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Estoque" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Ações" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Pedido de produto" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Solicitar produtos" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Crianças" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Configuração" @@ -187,8 +188,7 @@ msgid "" "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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -223,198 +223,214 @@ msgstr "" "Compre um pedido como uma empresa, usando os `products` fornecidos com " "`product_uuid` e `attributes`." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "Listar todos os grupos de atributos (visualização simples)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperar um único grupo de atributos (visualização detalhada)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Criar um grupo de atributos" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Excluir um grupo de atributos" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescrever um grupo de atributos existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +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" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "Listar todos os atributos (visualização simples)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperar um único atributo (visualização detalhada)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Criar um atributo" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Excluir um atributo" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "Reescreva um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Reescreva alguns campos de um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "Listar todos os valores de atributos (visualização simples)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperar um único valor de atributo (visualização detalhada)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Criar um valor de atributo" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Excluir um valor de atributo" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescreva um valor de atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +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" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "Listar todas as categorias (visualização simples)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Recuperar uma única categoria (visualização detalhada)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Criar uma categoria" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Excluir uma categoria" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "Reescrever uma categoria existente salvando itens não editáveis" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "Meta snapshot de SEO" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Retorna um instantâneo dos metadados de SEO da categoria" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "UUID ou slug da categoria" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "Listar todas as categorias (visualização simples)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "" "Para usuários não funcionários, apenas seus próprios pedidos são devolvidos." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrar pedidos com buy_time >= este datetime ISO 8601" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrar pedidos com buy_time <= este datetime ISO 8601" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filtrar por UUID de ordem exata" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Filtrar por ID exata do pedido legível por humanos" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtrar por e-mail do usuário (correspondência exata sem distinção entre " "maiúsculas e minúsculas)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filtrar por UUID do usuário" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtrar por status do pedido (correspondência de substring sem distinção " "entre maiúsculas e minúsculas)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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 " "ordem decrescente (por exemplo, '-buy_time')." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Recuperar uma única categoria (visualização detalhada)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Criar um atributo" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Não funciona para usuários que não são da equipe." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Excluir um atributo" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "Reescrever uma categoria existente salvando itens não editáveis" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Preço de compra no momento do pedido" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -424,19 +440,19 @@ msgstr "" "concluída usando o saldo do usuário; se `force_payment` for usado, uma " "transação será iniciada." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "comprar um pedido sem criar uma conta" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "finaliza a compra do pedido para um usuário não registrado." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Adicionar um produto ao pedido" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -444,13 +460,13 @@ msgstr "" "Adiciona um produto a um pedido usando o `product_uuid` e os `attributes` " "fornecidos." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "" "Adicionar uma lista de produtos ao pedido, as quantidades não serão " "contabilizadas" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -458,11 +474,11 @@ msgstr "" "Adiciona uma lista de produtos a um pedido usando o `product_uuid` e os " "`attributes` fornecidos." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Remover um produto do pedido" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -470,11 +486,11 @@ msgstr "" "Remove um produto de um pedido usando o `product_uuid` e os `attributes` " "fornecidos." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "Remover um produto do pedido, as quantidades não serão contabilizadas" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -482,402 +498,397 @@ msgstr "" "Remove uma lista de produtos de um pedido usando o `product_uuid` e os " "`attributes` fornecidos." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "Listar todos os atributos (visualização simples)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Para usuários que não pertencem à equipe, apenas suas próprias listas de " "desejos são retornadas." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperar um único atributo (visualização detalhada)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Criar um atributo" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Não funciona para usuários que não são da equipe." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Excluir um atributo" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "Reescreva um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Reescreva alguns campos de um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Adicionar um produto ao pedido" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Adiciona um produto a uma lista de desejos usando o `product_uuid` fornecido" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Remover um produto da lista de desejos" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Remove um produto de uma lista de desejos usando o `product_uuid` fornecido" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Adicionar muitos produtos à lista de desejos" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Adiciona vários produtos a uma lista de desejos usando os `product_uuids` " "fornecidos" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Remover um produto do pedido" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Remove vários produtos de uma lista de desejos usando os `product_uuids` " "fornecidos" -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "Listar todos os produtos (visualização simples)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "UUID (exato) do produto" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(icontains) Nome do produto" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "" "(lista) Nomes de categorias, sem distinção entre maiúsculas e minúsculas" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(exato) UUID da categoria" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(lista) Nomes de tags, sem distinção entre maiúsculas e minúsculas" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Preço mínimo das ações" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Preço máximo da ação" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(exato) Somente produtos ativos" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Nome da marca" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantidade mínima em estoque" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(exato) Digital vs. físico" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Recuperar um único produto (visualização detalhada)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "UUID ou Slug do produto" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Criar um produto" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Reescrever um produto existente, preservando os campos não editáveis" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Atualizar alguns campos de um produto existente, preservando os campos não " "editáveis" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Excluir um produto" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "lista todos os feedbacks permitidos para um produto" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Retorna um instantâneo dos metadados de SEO do produto" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "Listar todos os endereços" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Recuperar um único endereço" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Criar um novo endereço" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Excluir um endereço" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Atualizar um endereço inteiro" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Atualizar parcialmente um endereço" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Entrada de endereço com preenchimento automático" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Cadeia de consulta de dados brutos, anexe os dados do ponto de extremidade " "de IP geográfico" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita a quantidade de resultados, 1 < limite < 10, padrão: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "listar todos os feedbacks (visualização simples)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "recuperar um único feedback (visualização detalhada)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "criar um feedback" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "excluir um feedback" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "reescrever um feedback existente salvando itens não editáveis" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "listar todas as relações pedido-produto (visualização simples)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "recuperar uma única relação pedido-produto (visão detalhada)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "criar uma nova relação pedido-produto" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "substituir uma relação pedido-produto existente" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "atualizar parcialmente uma relação pedido-produto existente" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "excluir uma relação pedido-produto" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "adicionar ou remover feedback em uma relação pedido-produto" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "Nenhum termo de pesquisa foi fornecido." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Nome" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Categorias" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Categorias Lesmas" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Tags" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Preço mínimo" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Preço máximo" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Está ativo" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Brand" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Atributos" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Quantidade" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Lesma" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "É digital" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Incluir subcategorias" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Incluir produtos pessoais encomendados" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Deve haver um category_uuid para usar o sinalizador include_subcategories" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Pesquisa (ID, nome do produto ou número de peça)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Comprado depois (inclusive)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Comprado antes (inclusive)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "E-mail do usuário" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "UUID do usuário" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Status" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "ID legível por humanos" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Parent" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Toda a categoria (com pelo menos 1 produto ou não)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Nível" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "UUID do produto" @@ -901,7 +912,7 @@ msgstr "Dados em cache" msgid "camelized JSON data from the requested URL" msgstr "Dados JSON camelizados da URL solicitada" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Somente URLs que começam com http(s):// são permitidos" @@ -932,7 +943,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Forneça order_uuid ou order_hr_id - mutuamente exclusivos!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "O tipo errado veio do método order.buy(): {type(instance)!s}" @@ -985,8 +996,8 @@ msgstr "Comprar um pedido" #: core/graphene/mutations.py:500 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" @@ -1007,9 +1018,9 @@ msgstr "Orderproduct {order_product_uuid} não encontrado!" msgid "original address string provided by the user" msgstr "Cadeia de endereços original fornecida pelo usuário" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} não existe: {uuid}!" @@ -1022,97 +1033,98 @@ msgstr "O limite deve estar entre 1 e 10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funciona muito bem" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Atributos" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Atributos agrupados" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Categorias" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Marcas" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Categorias" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Porcentagem de marcação" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 msgid "which attributes and values can be used for filtering this category." msgstr "" "Quais atributos e valores podem ser usados para filtrar essa categoria." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +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." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Tags para esta categoria" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Produtos desta categoria" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Latitude (coordenada Y)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Longitude (coordenada X)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Como fazer" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Representa o feedback de um usuário." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Notificações" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "URL de download para este produto do pedido, se aplicável" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "Uma lista dos produtos solicitados nesse pedido" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Endereço de cobrança" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1120,51 +1132,51 @@ 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" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Preço total deste pedido" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Quantidade total de produtos no pedido" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Todos os produtos estão no pedido digital?" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Transações para esta ordem" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Pedidos" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "URL da imagem" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Imagens do produto" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Categoria" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1172,7 +1184,7 @@ msgstr "Grupos de atributos" msgid "price" msgstr "Preço" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1180,31 +1192,35 @@ msgstr "Preço" msgid "quantity" msgstr "Quantidade" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Número de feedbacks" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Produtos disponíveis apenas para pedidos pessoais" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Produtos" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Códigos promocionais" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Produtos à venda" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Promoções" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1212,786 +1228,797 @@ msgstr "Vendor" msgid "product" msgstr "Produto" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Produtos da lista de desejos" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Listas de desejos" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Produtos marcados" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Etiquetas do produto" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Categorias de tags" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Tags das categorias" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Nome do projeto" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "E-mail da empresa" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Nome da empresa" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Endereço da empresa" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Número de telefone da empresa" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "Usuário do host de e-mail" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Valor máximo para pagamento" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Valor mínimo para pagamento" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Dados analíticos" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Dados do anúncio" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Configuração" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Código do idioma" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Nome do idioma" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Sinalizador de idioma, se houver :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Obter uma lista de idiomas suportados" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Resultados da pesquisa de produtos" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Resultados da pesquisa de produtos" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Pai deste grupo" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Grupo de atributos pai" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Nome do grupo de atributos" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Grupo de atributos" -#: core/models.py:150 +#: core/models.py:151 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" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Informações de autenticação" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "Definir a marcação para produtos recuperados desse fornecedor" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Porcentagem da margem de lucro do fornecedor" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Nome do fornecedor" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Nome do fornecedor" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Identificador de tag interno para a tag do produto" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Nome da etiqueta" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "Nome de fácil utilização para a etiqueta do produto" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Nome de exibição da tag" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Etiqueta do produto" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "tag de categoria" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "tags de categoria" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Faça upload de uma imagem que represente essa categoria" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Imagem da categoria" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "Definir uma porcentagem de majoração para os produtos dessa categoria" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Pai dessa categoria para formar uma estrutura hierárquica" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Categoria dos pais" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Nome da categoria" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Forneça um nome para essa categoria" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Adicione uma descrição detalhada para essa categoria" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Descrição da categoria" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "tags que ajudam a descrever ou agrupar essa categoria" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Prioridade" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Nome da marca" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Nome da marca" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Faça upload de um logotipo que represente essa marca" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Imagem pequena da marca" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Faça upload de um logotipo grande que represente essa marca" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Imagem de marca grande" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Adicione uma descrição detalhada da marca" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Descrição da marca" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Categorias opcionais às quais essa marca está associada" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Categorias" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "O fornecedor que fornece esse estoque de produtos" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Fornecedor associado" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Preço final para o cliente após as marcações" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Preço de venda" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "O produto associado a essa entrada em estoque" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Produto associado" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "O preço pago ao fornecedor por esse produto" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Preço de compra do fornecedor" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Quantidade disponível do produto em estoque" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Quantidade em estoque" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuído pelo fornecedor para identificar o produto" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "SKU do fornecedor" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "Arquivo digital associado a esse estoque, se aplicável" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Arquivo digital" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Entradas de estoque" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Categoria à qual este produto pertence" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Opcionalmente, associe esse produto a uma marca" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Tags que ajudam a descrever ou agrupar este produto" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Indica se esse produto é entregue digitalmente" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "O produto é digital" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Fornecer um nome de identificação claro para o produto" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Nome do produto" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Adicione uma descrição detalhada do produto" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Descrição do produto" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Número de peça para este produto" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Número da peça" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Unidade de Manutenção de Estoque para este produto" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Categoria desse atributo" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Grupo desse atributo" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "Cordas" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Inteiro" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Flutuação" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Booleano" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Matriz" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Objeto" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Tipo do valor do atributo" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Tipo de valor" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Nome desse atributo" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Nome do atributo" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Atributo" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Atributo desse valor" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "O produto específico associado ao valor desse atributo" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "O valor específico para esse atributo" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" -msgstr "Forneça um texto alternativo para a imagem para fins de acessibilidade" +msgstr "" +"Forneça um texto alternativo para a imagem para fins de acessibilidade" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Texto alternativo da imagem" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Faça o upload do arquivo de imagem para este produto" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Imagem do produto" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Determina a ordem em que as imagens são exibidas" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Prioridade de exibição" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "O produto que esta imagem representa" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Imagens do produto" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Desconto percentual para os produtos selecionados" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Porcentagem de desconto" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Forneça um nome exclusivo para essa promoção" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Nome da promoção" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Descrição da promoção" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Selecione quais produtos estão incluídos nessa promoção" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Produtos incluídos" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Promoção" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Produtos que o usuário marcou como desejados" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "Usuário que possui esta lista de desejos" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Proprietário da lista de desejos" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Lista de desejos" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Documentário" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Documentários" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Não resolvido" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Linha de endereço do cliente" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Linha de endereço" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Rua" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "Distrito" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "Cidade" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Região" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Código postal" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "País" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Ponto de geolocalização (Longitude, Latitude)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Resposta JSON completa do geocodificador para este endereço" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Resposta JSON armazenada do serviço de geocodificação" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Endereço" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Endereços" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "Código exclusivo usado por um usuário para resgatar um desconto" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Identificador de código promocional" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "Valor de desconto fixo aplicado se a porcentagem não for usada" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Valor do desconto fixo" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "Desconto percentual aplicado se o valor fixo não for usado" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Desconto percentual" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Registro de data e hora em que o código promocional expira" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "Tempo de validade final" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "" "Registro de data e hora a partir do qual esse código promocional é válido" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Hora de início da validade" -#: core/models.py:1242 +#: core/models.py:1269 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" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Registro de data e hora de uso" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "Usuário atribuído a esse código promocional, se aplicável" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Usuário atribuído" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Código promocional" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Códigos promocionais" -#: core/models.py:1264 +#: core/models.py:1291 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." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "O código promocional já foi usado" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo de desconto inválido para o código promocional {self.uuid}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "O endereço de cobrança usado para esse pedido" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Código promocional opcional aplicado a este pedido" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Código promocional aplicado" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "O endereço de entrega usado para esse pedido" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Endereço de entrega" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Status atual do pedido em seu ciclo de vida" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Status do pedido" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "Representação JSON dos atributos do pedido para esse pedido" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "O usuário que fez o pedido" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "Usuário" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "O registro de data e hora em que o pedido foi finalizado" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Tempo de compra" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "Um identificador legível por humanos para o pedido" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "ID legível por humanos" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Pedido" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "Um usuário deve ter apenas uma ordem pendente por vez!" -#: core/models.py:1444 +#: core/models.py:1473 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" -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "Não é possível adicionar produtos inativos ao pedido" -#: core/models.py:1466 +#: core/models.py:1495 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" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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" -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} não existe com a consulta <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "O código promocional não existe" -#: core/models.py:1547 +#: core/models.py:1576 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!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "O endereço não existe" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Valor de força inválido" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "Você não pode comprar um pedido vazio!" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "Não é possível comprar um pedido sem um usuário!" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "Um usuário sem saldo não pode comprar com saldo!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Fundos insuficientes para concluir o pedido" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1999,7 +2026,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" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -2007,118 +2034,119 @@ msgstr "" "Método de pagamento inválido: {payment_method} de " "{available_payment_methods}!" -#: core/models.py:1768 +#: core/models.py:1802 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" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Preço de compra no momento do pedido" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "" "Comentários internos para administradores sobre este produto encomendado" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Comentários internos" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "Notificações do usuário" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "Representação JSON dos atributos desse item" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Atributos ordenados do produto" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Referência ao pedido pai que contém esse produto" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Ordem dos pais" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "O produto específico associado a essa linha de pedido" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Quantidade desse produto específico no pedido" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Quantidade do produto" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Status atual desse produto no pedido" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Status da linha de produtos" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "O Orderproduct deve ter um pedido associado!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Ação incorreta especificada para o feedback: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 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" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Baixar" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Downloads" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Não é possível fazer download de um ativo digital para um pedido não " "concluído" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "" "Comentários fornecidos pelo usuário sobre sua experiência com o produto" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Comentários de feedback" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Produto de pedido relacionado" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "Classificação atribuída pelo usuário ao produto" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Avaliação do produto" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Feedback" @@ -2129,7 +2157,7 @@ msgstr "" "Você deve fornecer um comentário, uma classificação e o uuid do produto do " "pedido para adicionar feedback." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Erro durante a criação do código promocional: {e!s}" @@ -2161,8 +2189,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 " @@ -2255,8 +2282,7 @@ msgstr "Chave" #: core/templates/shipped_order_created_email.html:101 #: 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 " @@ -2295,17 +2321,17 @@ msgstr "São necessários dados e tempo limite" 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" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | entre em contato conosco iniciado" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Confirmação do pedido" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Pedido entregue" @@ -2328,15 +2354,15 @@ msgstr "" msgid "invalid phone number format" msgstr "Formato de número telefônico inválido" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "Você só pode fazer o download do ativo digital uma vez" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "favicon não encontrado" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Erro de geocodificação: {e}" diff --git a/core/locale/ro_RO/LC_MESSAGES/django.mo b/core/locale/ro_RO/LC_MESSAGES/django.mo index 0bc23179..5ee07ff2 100644 Binary files a/core/locale/ro_RO/LC_MESSAGES/django.mo and b/core/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/core/locale/ro_RO/LC_MESSAGES/django.po b/core/locale/ro_RO/LC_MESSAGES/django.po index 2871dd1e..f6ee986e 100644 --- a/core/locale/ro_RO/LC_MESSAGES/django.po +++ b/core/locale/ro_RO/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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" #: core/abstract.py:20 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ă" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -62,70 +63,70 @@ msgstr "Generalități" msgid "relations" msgstr "Relații" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Metadate" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Timestamps" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activați %(verbose_name_plural)s selectat" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Articolele selectate au fost activate!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Dezactivați %(verbose_name_plural)s selectat" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Articolele selectate au fost dezactivate!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Atribut Valoare" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Valori ale atributului" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Imagine" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Imagini" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Stoc" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Stocuri" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Comanda Produs" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Comandați produse" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Copii" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Configurare" @@ -187,8 +188,7 @@ msgid "" "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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -209,8 +209,8 @@ msgstr "Solicitați un URL CORSed. Numai https este permis." #: core/docs/drf/views.py:85 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" #: core/docs/drf/views.py:91 msgid "purchase an order as a business" @@ -221,206 +221,223 @@ 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." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "Lista tuturor grupurilor de atribute (vizualizare simplă)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperarea unui singur grup de atribute (vedere detaliată)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Crearea unui grup de atribute" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Ștergerea unui grup de atribute" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 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" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +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" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "Lista tuturor atributelor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperarea unui singur atribut (vedere detaliată)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Crearea unui atribut" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Ștergerea unui atribut" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "Rescrierea unui atribut existent cu salvarea elementelor needitabile" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unui atribut existent salvând elementele " "needitabile" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "Lista tuturor valorilor atributelor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperarea valorii unui singur atribut (vedere detaliată)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Crearea unei valori de atribut" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Ștergerea unei valori de atribut" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Rescrierea unei valori de atribut existente care salvează non-editabile" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +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" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "Lista tuturor categoriilor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Recuperarea unei singure categorii (vedere detaliată)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Creați o categorie" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Ștergeți o categorie" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "Rescrieți o categorie existentă salvând non-editabile" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "SEO Meta snapshot" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Returnează un instantaneu al metadatelor SEO ale categoriei" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "Categorie UUID sau slug" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "Lista tuturor categoriilor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "" "Pentru utilizatorii care nu fac parte din personal, sunt returnate doar " "comenzile proprii." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrați comenzile cu buy_time >= această dată ISO 8601" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrează comenzile cu buy_time <= această dată ISO 8601" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Filtrare după UUID exact al comenzii" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Filtrați după ID-ul exact al comenzii care poate fi citit de către om" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtrare în funcție de adresa de e-mail a utilizatorului (potrivire exactă " "insensibilă la majuscule)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Filtrare după UUID-ul utilizatorului" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtrare în funcție de starea comenzii (potrivire a substringurilor fără " "deosebire de majuscule)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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 " "ordine descrescătoare (de exemplu, \"-buy_time\")." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Recuperarea unei singure categorii (vedere detaliată)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Crearea unui atribut" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Nu funcționează pentru utilizatorii care nu fac parte din personal." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Ștergerea unui atribut" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "Rescrieți o categorie existentă salvând non-editabile" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Prețul de achiziție la momentul comenzii" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -430,19 +447,19 @@ msgstr "" "achiziția este finalizată utilizând soldul utilizatorului; Dacă se " "utilizează `force_payment`, este inițiată o tranzacție." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "achiziționarea unei comenzi fără crearea unui cont" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizează achiziția comenzii pentru un utilizator neînregistrat." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Adăugați un produs la comandă" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -450,11 +467,11 @@ msgstr "" "Adaugă un produs la o comandă folosind `product_uuid` și `attributes` " "furnizate." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "Adăugați o listă de produse la comandă, cantitățile nu vor conta" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -462,11 +479,11 @@ msgstr "" "Adaugă o listă de produse la o comandă folosind `product_uuid` și " "`attributes` furnizate." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Eliminați un produs din comandă" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -474,12 +491,12 @@ msgstr "" "Elimină un produs dintr-o comandă folosind `product_uuid` și `attributes` " "furnizate." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "" "Eliminați un produs din comandă, cantitățile nu vor fi luate în considerare" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -487,407 +504,402 @@ msgstr "" "Îndepărtează o listă de produse dintr-o comandă folosind `product_uuid` și " "`attributes` furnizate." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "Lista tuturor atributelor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Pentru utilizatorii care nu fac parte din personal, sunt returnate doar " "propriile liste de dorințe." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperarea unui singur atribut (vedere detaliată)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Crearea unui atribut" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Nu funcționează pentru utilizatorii care nu fac parte din personal." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Ștergerea unui atribut" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rescrierea unui atribut existent cu salvarea elementelor needitabile" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unui atribut existent salvând elementele " "needitabile" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Adăugați un produs la comandă" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Adaugă un produs la o listă de dorințe folosind `product_uuid` furnizat" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Eliminați un produs din lista de dorințe" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Înlătură un produs dintr-o listă de dorințe folosind `product_uuid` furnizat" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Adăugați mai multe produse la lista de dorințe" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Adaugă mai multe produse la o listă de dorințe folosind `product_uuids` " "furnizat" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Eliminați un produs din comandă" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Îndepărtează mai multe produse dintr-o listă de dorințe folosind " "`product_uuids` furnizat" -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`" -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "Listează toate produsele (vizualizare simplă)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(exact) UUID al produsului" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(icontains) Denumirea produsului" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(listă) Numele categoriilor, fără deosebire de majuscule" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(exact) UUID al categoriei" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(listă) Nume de etichete, fără diferențiere de majuscule" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Prețul minim al acțiunilor" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Prețul maxim al acțiunilor" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(exact) Numai produse active" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Denumire comercială" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Cantitatea minimă de stoc" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. fizic" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Recuperarea unui singur produs (vedere detaliată)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "UUID sau Slug al produsului" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Creați un produs" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Rescrierea unui produs existent, păstrând câmpurile care nu pot fi editate" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Actualizarea unor câmpuri ale unui produs existent, păstrând câmpurile " "needitabile" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Ștergeți un produs" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "listează toate feedback-urile permise pentru un produs" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Returnează un instantaneu al metadatelor SEO ale produsului" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "Enumerați toate adresele" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Recuperarea unei singure adrese" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Creați o adresă nouă" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Ștergeți o adresă" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Actualizarea unei adrese întregi" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Actualizarea parțială a unei adrese" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Autocompletare adresă de intrare" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 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" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limitează cantitatea de rezultate, 1 < limit < 10, implicit: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "lista tuturor feedback-urilor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "recuperați un singur feedback (vizualizare detaliată)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "creați un feedback" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "ștergeți un feedback" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "rescrierea unui feedback existent cu salvarea elementelor needitabile" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "lista tuturor relațiilor comandă-produs (vedere simplă)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "recuperarea unei singure relații comandă-produs (vedere detaliată)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "crearea unei noi relații comandă-produs" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "să înlocuiască o relație comandă-produs existentă" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "actualizarea parțială a unei relații comandă-produs existente" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "ștergeți o relație comandă-produs" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "adăugarea sau eliminarea feedback-ului într-o relație comandă-produs" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "Nu a fost furnizat niciun termen de căutare." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Nume și prenume" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Categorii" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Categorii Melci" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Etichete" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Preț minim" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Preț maxim" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Este activ" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Marca" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Atribute" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Cantitate" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Melc" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "Este digital" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Includeți subcategorii" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Includeți produsele comandate personal" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Trebuie să existe un category_uuid pentru a utiliza flagul " "include_subcategories" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Căutare (ID, numele produsului sau numărul piesei)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Cumpărat după (inclusiv)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Cumpărat înainte (inclusiv)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "E-mail utilizator" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "UUID utilizator" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Statut" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "ID lizibil de către om" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Părinte" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Întreaga categorie (are cel puțin 1 produs sau nu)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Nivel" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "UUID produs" @@ -911,7 +923,7 @@ msgstr "Date în cache" msgid "camelized JSON data from the requested URL" msgstr "Date JSON Camelizate de la URL-ul solicitat" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Sunt permise numai URL-urile care încep cu http(s)://" @@ -943,7 +955,7 @@ msgstr "" "Vă rugăm să furnizați fie order_uuid sau order_hr_id - se exclud reciproc!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Metoda order.buy() a generat un tip greșit: {type(instance)!s}" @@ -996,8 +1008,8 @@ msgstr "Cumpărați o comandă" #: core/graphene/mutations.py:500 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" @@ -1019,9 +1031,9 @@ msgstr "Comandaprodus {order_product_uuid} nu a fost găsită!" msgid "original address string provided by the user" msgstr "Șirul de adrese original furnizat de utilizator" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nu există: {uuid}!" @@ -1034,99 +1046,100 @@ msgstr "Limita trebuie să fie între 1 și 10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funcționează ca un farmec" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Atribute" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Atribute grupate" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Grupuri de atribute" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Categorii" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Mărci" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Categorii" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Procentul de majorare" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 msgid "which attributes and values can be used for filtering this category." msgstr "" "Atributele și valorile care pot fi utilizate pentru filtrarea acestei " "categorii." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +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." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Etichete pentru această categorie" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Produse din această categorie" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Furnizori" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Latitudine (coordonata Y)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Longitudine (coordonata X)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Cum să" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 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ă." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Reprezintă feedback de la un utilizator." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Notificări" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "URL de descărcare pentru acest produs de comandă, dacă este cazul" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "O listă a produselor comandate în această comandă" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Adresa de facturare" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1134,51 +1147,51 @@ 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ă" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Prețul total al acestei comenzi" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Cantitatea totală de produse din comandă" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Sunt toate produsele din comanda digitală" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Tranzacții pentru această comandă" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Ordine" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "URL imagine" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Imagini ale produsului" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Categorie" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Feedback-uri" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Marca" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Grupuri de atribute" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1186,7 +1199,7 @@ msgstr "Grupuri de atribute" msgid "price" msgstr "Preț" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1194,31 +1207,35 @@ msgstr "Preț" msgid "quantity" msgstr "Cantitate" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Numărul de reacții" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Produse disponibile numai pentru comenzi personale" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Produse" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Coduri promoționale" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Produse scoase la vânzare" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Promoții" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Furnizor" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1226,640 +1243,650 @@ msgstr "Furnizor" msgid "product" msgstr "Produs" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Produse dorite" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Liste de dorințe" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Produse etichetate" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Etichete de produs" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Categorii etichetate" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Etichete \"Categorii" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Numele proiectului" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "Email companie" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Numele companiei" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Adresa companiei" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Numărul de telefon al companiei" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 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ă" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "Utilizator gazdă e-mail" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Suma maximă pentru plată" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Suma minimă pentru plată" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Date analitice" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Date publicitare" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Configurație" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Codul limbii" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Numele limbii" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Indicatorul de limbă, dacă există :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Obțineți o listă a limbilor acceptate" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Rezultate căutare produse" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Rezultate căutare produse" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Părinte al acestui grup" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Grup de atribute părinte" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Numele grupului de atribute" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Grup de atribute" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stochează acreditările și punctele finale necesare pentru comunicarea API a " "furnizorului" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Informații privind autentificarea" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definirea marjei de profit pentru produsele preluate de la acest furnizor" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Procentul de majorare al furnizorului" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Numele acestui vânzător" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Numele furnizorului" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Identificator intern de etichetă pentru eticheta produsului" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Nume etichetă" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "Nume ușor de utilizat pentru eticheta produsului" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Nume afișare etichetă" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Etichetă produs" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "etichetă de categorie" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "Etichete de categorie" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Încărcați o imagine care reprezintă această categorie" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Categorie imagine" -#: core/models.py:339 +#: core/models.py:353 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" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Părinte al acestei categorii pentru a forma o structură ierarhică" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Categoria de părinți" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Numele categoriei" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Furnizați un nume pentru această categorie" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Adăugați o descriere detaliată pentru această categorie" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Descriere categorie" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "etichete care ajută la descrierea sau gruparea acestei categorii" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Prioritate" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Denumirea acestui brand" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Nume de marcă" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Încărcați un logo care reprezintă acest brand" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Brand imagine mică" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Încărcați un logo mare care reprezintă acest brand" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Imagine de marcă mare" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Adăugați o descriere detaliată a mărcii" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Descrierea mărcii" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Categorii opționale cu care acest brand este asociat" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Categorii" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "Furnizorul care furnizează acest stoc de produse" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Furnizor asociat" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Prețul final pentru client după majorări" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Prețul de vânzare" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "Produsul asociat cu această intrare în stoc" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Produs asociat" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "Prețul plătit vânzătorului pentru acest produs" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Prețul de achiziție al furnizorului" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Cantitatea disponibilă a produsului în stoc" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Cantitate în stoc" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuit de furnizor pentru identificarea produsului" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "SKU al furnizorului" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "Fișier digital asociat cu acest stoc, dacă este cazul" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Fișier digital" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Intrări pe stoc" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Categoria din care face parte acest produs" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "Opțional, asociați acest produs cu un brand" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Etichete care ajută la descrierea sau gruparea acestui produs" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Indică dacă acest produs este livrat digital" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "Produsul este digital" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Furnizați o denumire clară de identificare a produsului" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Denumirea produsului" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Adăugați o descriere detaliată a produsului" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Descrierea produsului" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Numărul piesei pentru acest produs" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Numărul piesei" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Stock Keeping Unit pentru acest produs" + +#: core/models.py:681 +msgid "SKU" +msgstr "SKU" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Categoria acestui atribut" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Grupul acestui atribut" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "Șir de caractere" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Număr întreg" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Float" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Boolean" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Array" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Obiect" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Tipul valorii atributului" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Tipul de valoare" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Denumirea acestui atribut" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Numele atributului" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Atribut" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Atributul acestei valori" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "Produsul specific asociat cu valoarea acestui atribut" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "Valoarea specifică pentru acest atribut" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "Furnizați text alternativ pentru imagine pentru accesibilitate" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Textul alt al imaginii" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Încărcați fișierul de imagine pentru acest produs" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Imaginea produsului" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Determină ordinea în care sunt afișate imaginile" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Prioritatea afișării" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "Produsul pe care îl reprezintă această imagine" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Imagini ale produsului" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Procentul de reducere pentru produsele selectate" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Procent de reducere" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Furnizați un nume unic pentru această promoție" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Numele promoției" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Descrierea promoției" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Selectați ce produse sunt incluse în această promoție" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Produse incluse" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Promovare" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Produse pe care utilizatorul le-a marcat ca fiind dorite" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "Utilizatorul care deține această listă de dorințe" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Proprietarul listei de dorințe" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Lista dorințelor" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Documentar" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Documentare" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Nerezolvat" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Linia de adresă pentru client" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Linia de adresă" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Strada" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "Districtul" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "Oraș" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Regiunea" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Cod poștal" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "Țara" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Punct de geolocație (longitudine, latitudine)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Răspuns JSON complet de la geocoder pentru această adresă" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Răspuns JSON stocat de la serviciul de geocodare" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Adresă" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Adrese" -#: core/models.py:1209 +#: core/models.py:1236 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" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Cod promoțional de identificare" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "Valoarea fixă a reducerii aplicate dacă procentul nu este utilizat" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Valoarea fixă a reducerii" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentul de reducere aplicat dacă suma fixă nu este utilizată" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Reducere procentuală" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Data la care expiră codul promoțional" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "Timpul final de valabilitate" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Timestamp de la care acest cod promoțional este valabil" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Ora de începere a valabilității" -#: core/models.py:1242 +#: core/models.py:1269 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ă" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Timestamp de utilizare" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "Utilizatorul atribuit acestui cod promoțional, dacă este cazul" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Utilizator atribuit" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Cod promoțional" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Coduri promoționale" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1867,149 +1894,149 @@ msgstr "" "Trebuie definit un singur tip de reducere (sumă sau procent), dar nu ambele " "sau niciuna." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "Codul promoțional a fost deja utilizat" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tip de reducere invalid pentru codul promoțional {self.uuid}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "Adresa de facturare utilizată pentru această comandă" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Cod promoțional opțional aplicat la această comandă" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Cod promoțional aplicat" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "Adresa de expediere utilizată pentru această comandă" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Adresa de expediere" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Stadiul actual al comenzii în ciclul său de viață" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Stadiul comenzii" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 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ă" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "Reprezentarea JSON a atributelor comenzii pentru această comandă" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "Utilizatorul care a plasat comanda" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "Utilizator" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "Momentul în care comanda a fost finalizată" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Cumpărați timp" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "Un identificator ușor de citit pentru comandă" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "ID lizibil de către om" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Comandă" -#: core/models.py:1410 +#: core/models.py:1439 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!" -#: core/models.py:1444 +#: core/models.py:1473 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" -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "Nu puteți adăuga produse inactive la comandă" -#: core/models.py:1466 +#: core/models.py:1495 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" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 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" -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nu există cu interogarea <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Codul promoțional nu există" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "" "Puteți cumpăra numai produse fizice cu adresa de expediere specificată!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "Adresa nu există" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 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." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Valoare forță invalidă" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "Nu puteți achiziționa o comandă goală!" -#: core/models.py:1615 +#: core/models.py:1644 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" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "Un utilizator fără sold nu poate cumpăra cu sold!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Insuficiența fondurilor pentru finalizarea comenzii" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2017,124 +2044,126 @@ 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" -#: core/models.py:1666 +#: core/models.py:1700 #, 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}!" -#: core/models.py:1768 +#: core/models.py:1802 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" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Prețul de achiziție la momentul comenzii" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarii interne pentru administratori cu privire la acest produs comandat" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Observații interne" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "Notificări pentru utilizatori" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "Reprezentarea JSON a atributelor acestui element" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Atribute de produs ordonate" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Trimitere la comanda mamă care conține acest produs" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Ordinul părinților" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "Produsul specific asociat cu această linie de comandă" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Cantitatea acestui produs specific din comandă" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Cantitatea produsului" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Starea actuală a acestui produs în comandă" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Starea liniei de produse" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "Comandaprodusul trebuie să aibă o comandă asociată!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Acțiune greșită specificată pentru feedback: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 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" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Descărcare" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Descărcări" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "Nu puteți descărca un bun digital pentru o comandă nefinalizată" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "" "Comentarii furnizate de utilizatori cu privire la experiența lor cu produsul" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Comentarii de feedback" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +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" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Produs aferent comenzii" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "Rating atribuit de utilizator pentru produs" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Evaluarea produsului" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Feedback" @@ -2142,10 +2171,10 @@ msgstr "Feedback" 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." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Eroare în timpul creării codului promoțional: {e!s}" @@ -2177,8 +2206,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ă " @@ -2272,12 +2300,11 @@ msgstr "Cheie" #: core/templates/shipped_order_created_email.html:101 #: 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:" #: core/templates/shipped_order_created_email.html:123 #: core/templates/shipped_order_delivered_email.html:123 @@ -2312,17 +2339,17 @@ msgstr "Sunt necesare atât datele, cât și timpul de așteptare" msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "Valoare timeout invalidă, trebuie să fie între 0 și 216000 secunde" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | contactați-ne inițiat" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Confirmarea comenzii" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Livrarea comenzii" @@ -2346,15 +2373,15 @@ msgstr "" msgid "invalid phone number format" msgstr "Format invalid al numărului de telefon" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "Puteți descărca activul digital o singură dată" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "favicon nu a fost găsit" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Eroare de geocodare: {e}" diff --git a/core/locale/ru_RU/LC_MESSAGES/django.mo b/core/locale/ru_RU/LC_MESSAGES/django.mo index b5fd4df8..c6fc45e6 100644 Binary files a/core/locale/ru_RU/LC_MESSAGES/django.mo and b/core/locale/ru_RU/LC_MESSAGES/django.mo differ diff --git a/core/locale/ru_RU/LC_MESSAGES/django.po b/core/locale/ru_RU/LC_MESSAGES/django.po index a5c17d17..1028dc8e 100644 --- a/core/locale/ru_RU/LC_MESSAGES/django.po +++ b/core/locale/ru_RU/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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 "Активен" #: core/abstract.py:20 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, этот объект не может быть виден " "пользователям без необходимого разрешения" @@ -62,70 +63,70 @@ msgstr "Общие сведения" msgid "relations" msgstr "Отношения" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "Метаданные" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "Временные метки" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Активировать выбранный %(verbose_name_plural)s" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "Выбранные сущности активированы!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Деактивировать выбранный %(verbose_name_plural)s" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "Выбранные сущности были деактивированы!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "Значение атрибута" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "Значения атрибутов" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "Изображение" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "Изображения" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "Наличие" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "Наличия" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "Заказанный товар" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "Заказанные товары" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "Дети" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "Конфигурация" @@ -222,207 +223,223 @@ msgstr "" "Приобретите заказ как бизнес, используя предоставленные `продукты` с " "`product_uuid` и `attributes`." -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "Список всех групп атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "Получение одной группы атрибутов (подробный просмотр)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "Создайте группу атрибутов" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "Удаление группы атрибутов" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Переписать существующую группу атрибутов с сохранением нередактируемых " "элементов" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Переписывание некоторых полей существующей группы атрибутов с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "Список всех атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "Получение одного атрибута (подробный просмотр)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "Создайте атрибут" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "Удалить атрибут" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "Переписать существующий атрибут, сохранив нередактируемый" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Переписывание некоторых полей существующего атрибута с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "Список всех значений атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "Получение значения одного атрибута (подробный просмотр)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "Создание значения атрибута" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "Удалить значение атрибута" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Перезапись существующего значения атрибута с сохранением нередактируемых " "значений" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Переписывание некоторых полей существующего значения атрибута с сохранением " "нередактируемых значений" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "Список всех категорий (простой вид)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "Получение одной категории (подробный просмотр)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "Создайте категорию" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "Удалить категорию" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "SEO Meta snapshot" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "Возвращает снимок SEO-метаданных категории." + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "UUID или slug категории" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "Список всех категорий (простой вид)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "" "Для пользователей, не являющихся сотрудниками, возвращаются только их " "собственные заказы." -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Отфильтруйте ордера с buy_time >= этому времени ISO 8601" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Отфильтруйте ордера с buy_time <= этому времени ISO 8601" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "Фильтр по точному UUID заказа" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "Фильтр по точному человекочитаемому идентификатору заказа" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Фильтр по электронной почте пользователя (точное совпадение без учета " "регистра)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "Фильтр по UUID пользователя" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Фильтр по статусу заказа (нечувствительное к регистру подстрочное " "соответствие)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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')." -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "Получение одной категории (подробный просмотр)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "Создайте атрибут" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "Не работает для нештатных пользователей." -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "Удалить атрибут" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "Покупная цена на момент заказа" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -432,19 +449,19 @@ msgstr "" "завершается с использованием баланса пользователя; если используется " "`force_payment`, инициируется транзакция." -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "приобретение заказа без создания учетной записи" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "завершает покупку заказа для незарегистрированного пользователя." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "Добавить товар в заказ" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -452,23 +469,23 @@ msgstr "" "Добавляет товар в заказ, используя предоставленные `product_uuid` и " "`attributes`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "Добавьте список продуктов для заказа, количество не учитывается" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -"Добавляет список товаров в заказ, используя предоставленные `product_uuid` и " -"`attributes`." +"Добавляет список товаров в заказ, используя предоставленные `product_uuid` и" +" `attributes`." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "Удалить продукт из заказа" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -476,418 +493,412 @@ msgstr "" "Удаляет товар из заказа, используя предоставленные `product_uuid` и " "`attributes`." -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "Удалите продукт из заказа, количество не будет учитываться" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -"Удаляет список товаров из заказа, используя предоставленные `product_uuid` и " -"`attributes`." +"Удаляет список товаров из заказа, используя предоставленные `product_uuid` и" +" `attributes`." -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "Список всех атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Для пользователей, не являющихся сотрудниками, возвращаются только их " "собственные списки желаний." -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "Получение одного атрибута (подробный просмотр)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "Создайте атрибут" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "Не работает для нештатных пользователей." -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "Удалить атрибут" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "Переписать существующий атрибут, сохранив нередактируемый" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Переписывание некоторых полей существующего атрибута с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "Добавить товар в заказ" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Добавляет товар в список желаний, используя предоставленный `product_uuid`." -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "Удалить продукт из списка желаний" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Удаляет продукт из списка желаний, используя предоставленный `product_uuid`." -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "Добавьте много товаров в список желаний" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Добавляет множество товаров в список желаний, используя предоставленные " "`product_uuids`." -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "Удалить продукт из заказа" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Удаляет множество товаров из списка желаний, используя предоставленные " "`product_uuids`." -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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`." -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "Список всех продуктов (простой вид)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(точный) UUID продукта" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(иконки) Название продукта" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(список) Названия категорий, без учета регистра" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(точный) UUID категории" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(список) Имена тегов, нечувствительные к регистру" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) Минимальная цена акции" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) Максимальная цена акции" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(точно) Только активные продукты" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) Торговое название" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) Минимальное количество на складе" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(точно) Цифровые и физические" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "Получение одного продукта (подробный просмотр)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "UUID или Slug продукта" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "Создать продукт" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Переписать существующий продукт, сохранив нередактируемые поля" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Обновление некоторых полей существующего продукта с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "Удалить продукт" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "список всех разрешенных отзывов о продукте" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "Возвращает снимок метаданных SEO продукта." + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "Перечислите все адреса" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "Получение одного адреса" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "Создайте новый адрес" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "Удалить адрес" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "Обновление всего адреса" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "Частичное обновление адреса" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "Автозаполнение ввода адреса" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Строка запроса сырых данных, пожалуйста, дополните ее данными с конечной " "точки geo-IP" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "ограничивает количество результатов, 1 < limit < 10, по умолчанию: 5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "список всех отзывов (простой вид)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "получить один отзыв (подробный просмотр)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "создать отзыв" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "удалить отзыв" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "список всех отношений \"заказ-продукт\" (простой вид)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "получить одно отношение \"заказ-продукт\" (подробный просмотр)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "создать новое отношение \"заказ-продукт" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "заменить существующее отношение \"заказ-продукт" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "частично обновить существующее отношение \"заказ-продукт" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "удалить отношение \"заказ-продукт" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "добавлять или удалять отзывы о связи заказ-продукт" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "Поисковый запрос не предоставлен." -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "Имя" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "Категории" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "Категории Слизни" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "Теги" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "Мин. цена" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "Максимальная цена" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "Активен" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "Бренд" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "Атрибуты" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "Количество" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "Слаг" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "Цифровой" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "Включите подкатегории" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "Включите продукты, заказанные лично" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Для использования флага include_subcategories должен быть указан " "category_uuid." -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "Поиск (идентификатор, название продукта или номер детали)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "Куплено после (включительно)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "Куплено ранее (включительно)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "Электронная почта пользователя" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "UUID пользователя" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "Статус" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "Человекочитаемый идентификатор" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "Родитель" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "Вся категория (есть хотя бы 1 продукт или нет)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "Уровень" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "UUID продукта" @@ -911,7 +922,7 @@ msgstr "Кэшированные данные" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-данные из запрашиваемого URL" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "Допускаются только URL-адреса, начинающиеся с http(s)://" @@ -944,7 +955,7 @@ msgstr "" "варианты!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Неправильный тип получен из метода order.buy(): {type(instance)!s}" @@ -997,8 +1008,8 @@ msgstr "Купить заказ" #: core/graphene/mutations.py:500 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" @@ -1020,9 +1031,9 @@ msgstr "Заказ товара {order_product_uuid} не найден!" msgid "original address string provided by the user" msgstr "Оригинальная строка адреса, предоставленная пользователем" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} не существует: {uuid}!" @@ -1035,99 +1046,100 @@ msgstr "Предел должен быть от 1 до 10" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - работает как шарм" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "Атрибуты" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "Сгруппированные атрибуты" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "Группы атрибутов" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "Категории" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "Бренды" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "Категории" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "Процент наценки" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 msgid "which attributes and values can be used for filtering this category." msgstr "" "Какие атрибуты и значения можно использовать для фильтрации этой категории." -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Минимальные и максимальные цены на товары в этой категории, если они " "доступны." -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "Теги для этой категории" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "Продукты в этой категории" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "Поставщики" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "Широта (координата Y)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "Долгота (координата X)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "Как" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Значение рейтинга от 1 до 10, включительно, или 0, если он не установлен." -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "Представляет собой отзыв пользователя." -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "Уведомления" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "Если применимо, загрузите url для этого продукта заказа" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "Список товаров, заказанных в этом заказе" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "Адрес для выставления счетов" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1135,51 +1147,51 @@ msgstr "" "Адрес доставки для данного заказа, оставьте пустым, если он совпадает с " "адресом выставления счета или не применяется" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "Общая стоимость этого заказа" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "Общее количество продуктов в заказе" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "Все ли товары в заказе представлены в цифровом виде" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "Операции для этого заказа" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "Заказы" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "URL-адрес изображения" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "Изображения товара" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "Категория" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "Отзывы" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "Бренд" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "Группы атрибутов" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1187,7 +1199,7 @@ msgstr "Группы атрибутов" msgid "price" msgstr "Цена" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1195,31 +1207,35 @@ msgstr "Цена" msgid "quantity" msgstr "Количество" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "Количество отзывов" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "Продукты доступны только для личных заказов" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "Товары" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "Промокоды" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "Продукты в продаже" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "Промоакции" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "Поставщик" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1227,789 +1243,799 @@ msgstr "Поставщик" msgid "product" msgstr "Товар" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "Продукты из списка желаний" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "Списки желаний" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "Tagged products" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "Теги товара" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "Категории с метками" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "Теги категорий" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "Название проекта" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "Электронная почта компании" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "Название компании" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "Адрес компании" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "Номер телефона компании" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', иногда его нужно использовать вместо значения пользователя " "хоста." -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "Пользователь узла электронной почты" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "Максимальная сумма для оплаты" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "Минимальная сумма для оплаты" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "Аналитические данные" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "Рекламные данные" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "Конфигурация" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "Код языка" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "Название языка" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "Языковой флаг, если он существует :)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "Получите список поддерживаемых языков" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "Результаты поиска товаров" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "Результаты поиска товаров" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "Родитель этой группы" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "Родительская группа атрибутов" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "Имя группы атрибутов" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "Группа атрибутов" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -"Хранит учетные данные и конечные точки, необходимые для взаимодействия с API " -"поставщика." +"Хранит учетные данные и конечные точки, необходимые для взаимодействия с API" +" поставщика." -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "Информация об аутентификации" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "Определите наценку для товаров, полученных от этого продавца" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "Процент наценки поставщика" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "Имя этого продавца" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "Название поставщика" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "Внутренний идентификатор тега для тега продукта" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "Название тега" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "Удобное название для метки продукта" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "Отображаемое имя тега" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "Метка продукта" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "тег категории" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "теги категорий" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "Загрузите изображение, представляющее эту категорию" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "Изображение категории" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "Определите процент наценки для товаров в этой категории" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "Родитель данной категории для формирования иерархической структуры" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "Родительская категория" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "Название категории" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "Укажите название этой категории" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "Добавьте подробное описание для этой категории" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "Описание категории" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "теги, которые помогают описать или сгруппировать эту категорию" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "Приоритет" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "Название этой марки" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "Название бренда" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "Загрузите логотип, представляющий этот бренд" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "Маленький образ бренда" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "Загрузите большой логотип, представляющий этот бренд" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "Большой имидж бренда" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "Добавьте подробное описание бренда" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "Описание бренда" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "Дополнительные категории, с которыми ассоциируется этот бренд" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "Категории" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "Поставщик, поставляющий данный товар на склад" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "Ассоциированный поставщик" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "Окончательная цена для покупателя после наценок" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "Цена продажи" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "Продукт, связанный с этой складской записью" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "Сопутствующий товар" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "Цена, уплаченная продавцу за этот продукт" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "Цена покупки у поставщика" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "Доступное количество продукта на складе" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "Количество на складе" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "Присвоенный поставщиком SKU для идентификации продукта" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" -msgstr "SKU поставщика" +msgstr "Артикул поставщика" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "Цифровой файл, связанный с этой акцией, если применимо" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "Цифровой файл" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "Наличия" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "Категория, к которой относится этот продукт" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "По желанию ассоциируйте этот продукт с брендом" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "Теги, которые помогают описать или сгруппировать этот продукт" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "Указывает, поставляется ли этот продукт в цифровом виде" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "Является ли продукт цифровым" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "Обеспечьте четкое идентификационное название продукта" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "Название продукта" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "Добавьте подробное описание продукта" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "Описание товара" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "Парт. номер для данного товара" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "Парт. номер" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "Единица складского учета для данного продукта" + +#: core/models.py:681 +msgid "SKU" +msgstr "Артикул" + +#: core/models.py:780 msgid "category of this attribute" msgstr "Категория этого атрибута" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "Группа этого атрибута" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "Строка" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "Целое число" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "Поплавок" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "Булево" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "Массив" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "Объект" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "Тип значения атрибута" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "Тип значения" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "Имя этого атрибута" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "Имя атрибута" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "Атрибут" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "Атрибут этого значения" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "Конкретный продукт, связанный со значением этого атрибута" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "Конкретное значение для этого атрибута" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "" "Предоставьте альтернативный текст для изображения, чтобы обеспечить " "доступность" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "Альтовый текст изображения" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "Загрузите файл изображения для этого продукта" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "Изображение продукта" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "Определяет порядок отображения изображений" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "Приоритет отображения" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "Продукт, который представлен на этом изображении" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "Изображения товаров" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "Процентная скидка на выбранные продукты" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "Процент скидки" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "Укажите уникальное имя для этой акции" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "Название акции" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "Описание акции" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "Выберите, какие продукты участвуют в этой акции" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "Включенные продукты" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "Продвижение" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "Продукты, которые пользователь отметил как желаемые" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "Пользователь, владеющий этим списком желаний" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "Владелец вишлиста" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "Список желаний" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "Документальный фильм" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "Документальные фильмы" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "Неразрешенные" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "Адресная строка для клиента" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "Адресная строка" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "Улица" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "Округ" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "Город" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "Регион" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "Почтовый индекс" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "Страна" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "Геолокационная точка(долгота, широта)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "Полный JSON-ответ от геокодера для этого адреса" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "Сохраненный JSON-ответ от сервиса геокодирования" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "Адрес" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "Адреса" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "Уникальный код, используемый пользователем для получения скидки" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "Идентификатор промо-кода" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "Фиксированная сумма скидки, применяемая, если процент не используется" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "Фиксированная сумма скидки" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Процентная скидка, применяемая, если фиксированная сумма не используется" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "Процентная скидка" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "Временная метка, когда истекает срок действия промокода" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "Время окончания срока действия" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "Время, с которого действует этот промокод" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "Время начала действия" -#: core/models.py:1242 +#: core/models.py:1269 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Временная метка, когда был использован промокод, пустая, если он еще не " "использовался" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "Временная метка использования" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "Пользователь, назначенный на этот промокод, если применимо" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "Назначенный пользователь" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "Промокод" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "Промокоды" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Следует определить только один тип скидки (сумма или процент), но не оба или " -"ни один из них." +"Следует определить только один тип скидки (сумма или процент), но не оба или" +" ни один из них." -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "Промокоды" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Неверный тип скидки для промокода {self.uuid}!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "Адрес для выставления счетов, используемый для данного заказа" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "Дополнительный промокод, применяемый к этому заказу" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "Примененный промокод" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "Адрес доставки, используемый для данного заказа" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "Адрес доставки" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "Текущий статус заказа в его жизненном цикле" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "Статус заказа" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 msgid "json structure of notifications to display to users" msgstr "" -"JSON-структура уведомлений для отображения пользователям, в административном " -"интерфейсе используется табличный вид" +"JSON-структура уведомлений для отображения пользователям, в административном" +" интерфейсе используется табличный вид" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "JSON-представление атрибутов заказа для этого заказа" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "Пользователь, разместивший заказ" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "Пользователь" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "Временная метка, когда заказ был завершен" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "Время покупки" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "Человекочитаемый идентификатор для заказа" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "человекочитаемый идентификатор" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "Заказать" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "Пользователь может одновременно иметь только один отложенный ордер!" -#: core/models.py:1444 +#: core/models.py:1473 msgid "you cannot add products to an order that is not a pending one" msgstr "Вы не можете добавить товары в заказ, который не является отложенным." -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "Вы не можете добавить неактивные товары в заказ" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "Вы не можете добавить больше товаров, чем есть на складе" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 msgid "you cannot remove products from an order that is not a pending one" -msgstr "Вы не можете удалить товары из заказа, который не является отложенным." +msgstr "" +"Вы не можете удалить товары из заказа, который не является отложенным." -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} не существует с запросом <{query}>!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "Промокод не существует" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "" "Вы можете купить физические товары только с указанным адресом доставки!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "Адрес не существует" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "В данный момент вы не можете совершить покупку, пожалуйста, повторите " "попытку через несколько минут." -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "Недопустимое значение силы" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "Вы не можете приобрести пустой заказ!" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "Вы не можете купить заказ без пользователя!" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "Пользователь без баланса не может покупать с балансом!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "Недостаточно средств для выполнения заказа" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -2017,120 +2043,122 @@ msgstr "" "Вы не можете купить без регистрации, пожалуйста, предоставьте следующую " "информацию: имя клиента, электронная почта клиента, номер телефона клиента" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Неверный способ оплаты: {payment_method} от {available_payment_methods}!" -#: core/models.py:1768 +#: core/models.py:1802 msgid "the price paid by the customer for this product at purchase time" msgstr "Цена, уплаченная клиентом за данный продукт на момент покупки" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "Покупная цена на момент заказа" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" -msgstr "Внутренние комментарии для администраторов об этом заказанном продукте" +msgstr "" +"Внутренние комментарии для администраторов об этом заказанном продукте" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "Внутренние комментарии" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "Уведомления пользователей" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "JSON-представление атрибутов этого элемента" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "Атрибуты заказанного продукта" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "Ссылка на родительский заказ, содержащий данный продукт" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "Родительский приказ" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "Конкретный продукт, связанный с этой линией заказа" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "Количество данного товара в заказе" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "Количество продукта" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "Текущий статус этого продукта в заказе" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "Состояние продуктовой линейки" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "У заказанного продукта должен быть связанный с ним заказ!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "Для обратной связи указано неверное действие: {action}!" -#: core/models.py:1888 +#: core/models.py:1922 msgid "you cannot feedback an order which is not received" msgstr "Вы не можете отозвать заказ, который не был получен" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "Скачать" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "Скачать" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "Вы не можете загрузить цифровой актив для незавершенного заказа" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "Комментарии пользователей об их опыте использования продукта" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "Комментарии к отзывам" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "Ссылка на конкретный продукт в заказе, о котором идет речь в этом отзыве" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "Сопутствующий товар для заказа" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "Присвоенный пользователем рейтинг продукта" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "Рейтинг продукции" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "Обратная связь" @@ -2141,7 +2169,7 @@ msgstr "" "чтобы добавить отзыв, необходимо указать комментарий, рейтинг и uuid " "продукта заказа." -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "Ошибка при создании промокода: {e!s}" @@ -2173,12 +2201,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! Мы рады сообщить Вам, что приняли Ваш" +" заказ в работу. Ниже приведены детали вашего заказа:" #: core/templates/digital_order_created_email.html:112 #: core/templates/digital_order_delivered_email.html:110 @@ -2267,8 +2294,7 @@ msgstr "Ключ" #: core/templates/shipped_order_created_email.html:101 #: 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 "" "Спасибо за ваш заказ! Мы рады подтвердить вашу покупку. Ниже приведены " @@ -2309,17 +2335,17 @@ msgstr "" "Неверное значение тайм-аута, оно должно находиться в диапазоне от 0 до " "216000 секунд" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME} | свяжитесь с нами по инициативе" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME} | Подтверждение заказа" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | Заказ доставлен" @@ -2336,21 +2362,22 @@ msgstr "Параметр NOMINATIM_URL должен быть настроен!" #, 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} " +"пикселей" #: core/validators.py:22 msgid "invalid phone number format" msgstr "Неверный формат телефонного номера" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "Вы можете загрузить цифровой актив только один раз" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "favicon не найден" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Ошибка геокодирования: {e}" diff --git a/core/locale/zh_Hans/LC_MESSAGES/django.mo b/core/locale/zh_Hans/LC_MESSAGES/django.mo index 714d4ae4..d9df76d0 100644 Binary files a/core/locale/zh_Hans/LC_MESSAGES/django.mo and b/core/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/core/locale/zh_Hans/LC_MESSAGES/django.po b/core/locale/zh_Hans/LC_MESSAGES/django.po index 0c2ae399..200da17b 100644 --- a/core/locale/zh_Hans/LC_MESSAGES/django.po +++ b/core/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:41+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 "处于活动状态" #: core/abstract.py:20 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,则没有必要权限的用户无法查看此对象" #: core/abstract.py:22 core/choices.py:18 @@ -58,70 +59,70 @@ msgstr "一般情况" msgid "relations" msgstr "关系" -#: core/admin.py:72 core/admin.py:74 +#: core/admin.py:85 msgid "metadata" msgstr "元数据" -#: core/admin.py:81 +#: core/admin.py:92 msgid "timestamps" msgstr "时间戳" -#: core/admin.py:96 +#: core/admin.py:107 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "激活选定的 %(verbose_name_plural)s" -#: core/admin.py:101 +#: core/admin.py:112 msgid "selected items have been activated." msgstr "所选项目已激活!" -#: core/admin.py:107 +#: core/admin.py:118 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "停用选定的 %(verbose_name_plural)s" -#: core/admin.py:112 +#: core/admin.py:123 msgid "selected items have been deactivated." msgstr "选定项目已停用!" -#: core/admin.py:124 core/graphene/object_types.py:421 -#: core/graphene/object_types.py:428 core/models.py:836 core/models.py:844 +#: core/admin.py:135 core/graphene/object_types.py:597 +#: core/graphene/object_types.py:604 core/models.py:863 core/models.py:871 msgid "attribute value" msgstr "属性值" -#: core/admin.py:125 core/graphene/object_types.py:50 core/models.py:845 +#: core/admin.py:136 core/graphene/object_types.py:75 core/models.py:872 msgid "attribute values" msgstr "属性值" -#: core/admin.py:133 +#: core/admin.py:144 msgid "image" msgstr "图片" -#: core/admin.py:134 core/graphene/object_types.py:374 +#: core/admin.py:145 core/graphene/object_types.py:495 msgid "images" msgstr "图片" -#: core/admin.py:142 core/models.py:560 +#: core/admin.py:153 core/models.py:574 msgid "stock" msgstr "库存" -#: core/admin.py:143 core/graphene/object_types.py:475 +#: core/admin.py:154 core/graphene/object_types.py:651 msgid "stocks" msgstr "股票" -#: core/admin.py:153 core/models.py:1829 +#: core/admin.py:164 core/models.py:1863 msgid "order product" msgstr "订购产品" -#: core/admin.py:154 core/graphene/object_types.py:293 core/models.py:1830 +#: core/admin.py:165 core/graphene/object_types.py:414 core/models.py:1864 msgid "order products" msgstr "订购产品" -#: core/admin.py:167 core/admin.py:168 +#: core/admin.py:178 core/admin.py:179 msgid "children" msgstr "儿童" -#: core/admin.py:501 +#: core/admin.py:513 msgid "Config" msgstr "配置" @@ -213,620 +214,630 @@ msgstr "以企业身份购买订单" msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -msgstr "" -"使用提供的带有 `product_uuid` 和 `attributes` 的 `products` 作为企业购买订" -"单。" +msgstr "使用提供的带有 `product_uuid` 和 `attributes` 的 `products` 作为企业购买订单。" -#: core/docs/drf/viewsets.py:43 +#: core/docs/drf/viewsets.py:44 msgid "list all attribute groups (simple view)" msgstr "列出所有属性组(简单视图)" -#: core/docs/drf/viewsets.py:47 +#: core/docs/drf/viewsets.py:48 msgid "retrieve a single attribute group (detailed view)" msgstr "检索单个属性组(详细视图)" -#: core/docs/drf/viewsets.py:51 +#: core/docs/drf/viewsets.py:52 msgid "create an attribute group" msgstr "创建属性组" -#: core/docs/drf/viewsets.py:55 +#: core/docs/drf/viewsets.py:56 msgid "delete an attribute group" msgstr "删除属性组" -#: core/docs/drf/viewsets.py:59 +#: core/docs/drf/viewsets.py:60 msgid "rewrite an existing attribute group saving non-editables" msgstr "重写保存不可编辑的现有属性组" -#: core/docs/drf/viewsets.py:63 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: core/docs/drf/viewsets.py:64 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "重写现有属性组的某些字段,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:70 +#: core/docs/drf/viewsets.py:71 msgid "list all attributes (simple view)" msgstr "列出所有属性(简单视图)" -#: core/docs/drf/viewsets.py:74 +#: core/docs/drf/viewsets.py:75 msgid "retrieve a single attribute (detailed view)" msgstr "检索单个属性(详细视图)" -#: core/docs/drf/viewsets.py:78 +#: core/docs/drf/viewsets.py:79 msgid "create an attribute" msgstr "创建属性" -#: core/docs/drf/viewsets.py:82 +#: core/docs/drf/viewsets.py:83 msgid "delete an attribute" msgstr "删除属性" -#: core/docs/drf/viewsets.py:86 +#: core/docs/drf/viewsets.py:87 msgid "rewrite an existing attribute saving non-editables" msgstr "重写现有属性,保存不可编辑属性" -#: core/docs/drf/viewsets.py:90 +#: core/docs/drf/viewsets.py:91 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "重写现有属性的某些字段,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:97 +#: core/docs/drf/viewsets.py:98 msgid "list all attribute values (simple view)" msgstr "列出所有属性值(简单视图)" -#: core/docs/drf/viewsets.py:101 +#: core/docs/drf/viewsets.py:102 msgid "retrieve a single attribute value (detailed view)" msgstr "读取单个属性值(详细视图)" -#: core/docs/drf/viewsets.py:105 +#: core/docs/drf/viewsets.py:106 msgid "create an attribute value" msgstr "创建属性值" -#: core/docs/drf/viewsets.py:109 +#: core/docs/drf/viewsets.py:110 msgid "delete an attribute value" msgstr "删除属性值" -#: core/docs/drf/viewsets.py:113 +#: core/docs/drf/viewsets.py:114 msgid "rewrite an existing attribute value saving non-editables" msgstr "重写现有属性值,保存不可编辑属性" -#: core/docs/drf/viewsets.py:117 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: core/docs/drf/viewsets.py:118 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "重写现有属性值的某些字段,保存不可编辑的属性值" -#: core/docs/drf/viewsets.py:124 +#: core/docs/drf/viewsets.py:125 core/docs/drf/viewsets.py:126 msgid "list all categories (simple view)" msgstr "列出所有类别(简单视图)" -#: core/docs/drf/viewsets.py:128 +#: core/docs/drf/viewsets.py:130 core/docs/drf/viewsets.py:131 msgid "retrieve a single category (detailed view)" msgstr "检索单个类别(详细视图)" -#: core/docs/drf/viewsets.py:132 +#: core/docs/drf/viewsets.py:135 core/docs/drf/viewsets.py:136 msgid "create a category" msgstr "创建类别" -#: core/docs/drf/viewsets.py:136 +#: core/docs/drf/viewsets.py:140 core/docs/drf/viewsets.py:141 msgid "delete a category" msgstr "删除类别" -#: core/docs/drf/viewsets.py:140 +#: core/docs/drf/viewsets.py:145 core/docs/drf/viewsets.py:146 msgid "rewrite an existing category saving non-editables" msgstr "重写现有类别,保存不可编辑内容" -#: core/docs/drf/viewsets.py:144 +#: core/docs/drf/viewsets.py:150 core/docs/drf/viewsets.py:151 msgid "rewrite some fields of an existing category saving non-editables" msgstr "重写现有类别的某些字段,保存不可编辑内容" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:155 core/docs/drf/viewsets.py:553 +#: core/graphene/object_types.py:117 core/graphene/object_types.py:207 +#: core/graphene/object_types.py:503 +msgid "SEO Meta snapshot" +msgstr "搜索引擎优化元快照" + +#: core/docs/drf/viewsets.py:156 +msgid "returns a snapshot of the category's SEO meta data" +msgstr "返回类别的搜索引擎优化元数据快照" + +#: core/docs/drf/viewsets.py:161 +msgid "Category UUID or slug" +msgstr "类别 UUID 或标签" + +#: core/docs/drf/viewsets.py:174 msgid "list all orders (simple view)" msgstr "列出所有类别(简单视图)" -#: core/docs/drf/viewsets.py:152 +#: core/docs/drf/viewsets.py:175 msgid "for non-staff users, only their own orders are returned." msgstr "对于非工作人员用户,只有他们自己的订单才会被退回。" -#: core/docs/drf/viewsets.py:158 +#: core/docs/drf/viewsets.py:181 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 中进行不区分大小写的子串搜索" -#: core/docs/drf/viewsets.py:165 +#: core/docs/drf/viewsets.py:188 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "过滤买入时间 >= 此 ISO 8601 日期的订单" -#: core/docs/drf/viewsets.py:170 +#: core/docs/drf/viewsets.py:193 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "过滤买入时间 <= 此 ISO 8601 日期的订单" -#: core/docs/drf/viewsets.py:175 +#: core/docs/drf/viewsets.py:198 msgid "Filter by exact order UUID" msgstr "按准确订单 UUID 筛选" -#: core/docs/drf/viewsets.py:180 +#: core/docs/drf/viewsets.py:203 msgid "Filter by exact human-readable order ID" msgstr "根据准确的人工可读订单 ID 进行筛选" -#: core/docs/drf/viewsets.py:185 +#: core/docs/drf/viewsets.py:208 msgid "Filter by user's email (case-insensitive exact match)" msgstr "按用户电子邮件过滤(不区分大小写精确匹配)" -#: core/docs/drf/viewsets.py:190 +#: core/docs/drf/viewsets.py:213 msgid "Filter by user's UUID" msgstr "按用户的 UUID 筛选" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:218 msgid "Filter by order status (case-insensitive substring match)" msgstr "按订单状态筛选(不区分大小写的子串匹配)" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:224 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\")。" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:233 msgid "retrieve a single order (detailed view)" msgstr "检索单个类别(详细视图)" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:237 msgid "create an order" msgstr "创建属性" -#: core/docs/drf/viewsets.py:215 +#: core/docs/drf/viewsets.py:238 msgid "doesn't work for non-staff users." msgstr "不适用于非工作人员用户。" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:242 msgid "delete an order" msgstr "删除属性" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:246 msgid "rewrite an existing order saving non-editables" msgstr "重写现有类别,保存不可编辑内容" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:250 msgid "rewrite some fields of an existing order saving non-editables" msgstr "重写现有类别的某些字段,保存不可编辑内容" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:254 msgid "purchase an order" msgstr "订购时的购买价格" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:256 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." -msgstr "" -"完成订单购买。如果使用 \"force_balance\",则使用用户的余额完成购买;如果使用 " -"\"force_payment\",则启动交易。" +msgstr "完成订单购买。如果使用 \"force_balance\",则使用用户的余额完成购买;如果使用 \"force_payment\",则启动交易。" -#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:324 +#: core/docs/drf/viewsets.py:268 core/graphene/mutations.py:324 msgid "purchase an order without account creation" msgstr "无需创建账户即可购买订单" -#: core/docs/drf/viewsets.py:246 +#: core/docs/drf/viewsets.py:269 msgid "finalizes the order purchase for a non-registered user." msgstr "完成非注册用户的订单购买。" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:277 msgid "add product to order" msgstr "在订单中添加产品" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:278 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 将产品添加到订单中。" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:283 msgid "add a list of products to order, quantities will not count" msgstr "添加要订购的产品列表,不计算数量" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:284 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 将产品列表添加到订单中。" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:289 msgid "remove product from order" msgstr "从订单中删除产品" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:290 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 从订单中删除产品。" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:295 msgid "remove product from order, quantities will not count" msgstr "从订单中删除产品,不计算数量" -#: core/docs/drf/viewsets.py:273 +#: core/docs/drf/viewsets.py:296 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "使用提供的 `product_uuid` 和 `attributes` 从订单中删除产品列表。" -#: core/docs/drf/viewsets.py:281 +#: core/docs/drf/viewsets.py:304 msgid "list all wishlists (simple view)" msgstr "列出所有属性(简单视图)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:305 msgid "for non-staff users, only their own wishlists are returned." msgstr "对于非工作人员用户,只返回他们自己的愿望清单。" -#: core/docs/drf/viewsets.py:286 +#: core/docs/drf/viewsets.py:309 msgid "retrieve a single wishlist (detailed view)" msgstr "检索单个属性(详细视图)" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:313 msgid "create an wishlist" msgstr "创建属性" -#: core/docs/drf/viewsets.py:291 +#: core/docs/drf/viewsets.py:314 msgid "Doesn't work for non-staff users." msgstr "不适用于非工作人员用户。" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:318 msgid "delete an wishlist" msgstr "删除属性" -#: core/docs/drf/viewsets.py:299 +#: core/docs/drf/viewsets.py:322 msgid "rewrite an existing wishlist saving non-editables" msgstr "重写现有属性,保存不可编辑属性" -#: core/docs/drf/viewsets.py:303 +#: core/docs/drf/viewsets.py:326 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "重写现有属性的某些字段,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:330 msgid "add product to wishlist" msgstr "在订单中添加产品" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:331 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "使用提供的 `product_uuid` 将产品添加到愿望清单中" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:336 msgid "remove product from wishlist" msgstr "从愿望清单中删除产品" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:337 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "使用提供的 `product_uuid` 从愿望清单中删除产品" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:342 msgid "add many products to wishlist" msgstr "将许多产品添加到愿望清单" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:343 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 将许多产品添加到愿望清单中" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:348 msgid "remove many products from wishlist" msgstr "从订单中删除产品" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:349 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 从愿望清单中删除多个产品" -#: core/docs/drf/viewsets.py:333 +#: core/docs/drf/viewsets.py:356 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" +"- 方法**(如果省略,默认为 `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`." -#: core/docs/drf/viewsets.py:349 +#: core/docs/drf/viewsets.py:372 core/docs/drf/viewsets.py:373 msgid "list all products (simple view)" msgstr "列出所有产品(简单视图)" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:378 msgid "(exact) Product UUID" msgstr "(产品 UUID" -#: core/docs/drf/viewsets.py:360 +#: core/docs/drf/viewsets.py:384 msgid "(icontains) Product name" msgstr "(图示) 产品名称" -#: core/docs/drf/viewsets.py:366 +#: core/docs/drf/viewsets.py:390 msgid "(list) Category names, case-insensitive" msgstr "(列表) 类别名称,不区分大小写" -#: core/docs/drf/viewsets.py:372 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Category UUID" msgstr "(类别 UUID" -#: core/docs/drf/viewsets.py:378 +#: core/docs/drf/viewsets.py:402 msgid "(list) Tag names, case-insensitive" msgstr "(标签名称,不区分大小写" -#: core/docs/drf/viewsets.py:384 +#: core/docs/drf/viewsets.py:408 msgid "(gte) Minimum stock price" msgstr "(gte) 最低股价" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:414 msgid "(lte) Maximum stock price" msgstr "(lte) 最高股价" -#: core/docs/drf/viewsets.py:396 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Only active products" msgstr "(准确)只有活性产品" -#: core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:426 msgid "(iexact) Brand name" msgstr "(iexact) 品牌名称" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:438 msgid "(gt) Minimum stock quantity" msgstr "(gt) 最低库存量" -#: core/docs/drf/viewsets.py:420 +#: core/docs/drf/viewsets.py:444 msgid "(exact) Digital vs. physical" msgstr "(准确)数字与实物" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:451 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、评分、名称、标签、创建、修改、价格、随机" -#: core/docs/drf/viewsets.py:441 +#: core/docs/drf/viewsets.py:465 core/docs/drf/viewsets.py:466 msgid "retrieve a single product (detailed view)" msgstr "检索单个产品(详细视图)" -#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 -#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 -#: core/docs/drf/viewsets.py:513 +#: core/docs/drf/viewsets.py:471 core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:511 core/docs/drf/viewsets.py:527 +#: core/docs/drf/viewsets.py:543 core/docs/drf/viewsets.py:559 msgid "Product UUID or slug" msgstr "产品 UUID 或 Slug" -#: core/docs/drf/viewsets.py:456 +#: core/docs/drf/viewsets.py:481 core/docs/drf/viewsets.py:482 msgid "create a product" msgstr "创建产品" -#: core/docs/drf/viewsets.py:463 +#: core/docs/drf/viewsets.py:489 core/docs/drf/viewsets.py:490 msgid "rewrite an existing product, preserving non-editable fields" msgstr "重写现有产品,保留不可编辑字段" -#: core/docs/drf/viewsets.py:478 +#: core/docs/drf/viewsets.py:505 core/docs/drf/viewsets.py:506 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "更新现有产品的某些字段,保留不可编辑的字段" -#: core/docs/drf/viewsets.py:493 +#: core/docs/drf/viewsets.py:521 core/docs/drf/viewsets.py:522 msgid "delete a product" msgstr "删除产品" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:537 core/docs/drf/viewsets.py:538 msgid "lists all permitted feedbacks for a product" msgstr "列出产品的所有允许反馈" -#: core/docs/drf/viewsets.py:526 +#: core/docs/drf/viewsets.py:554 +msgid "returns a snapshot of the product's SEO meta data" +msgstr "返回产品的搜索引擎优化元数据快照" + +#: core/docs/drf/viewsets.py:572 msgid "list all addresses" msgstr "列出所有地址" -#: core/docs/drf/viewsets.py:533 +#: core/docs/drf/viewsets.py:579 msgid "retrieve a single address" msgstr "检索单个地址" -#: core/docs/drf/viewsets.py:540 +#: core/docs/drf/viewsets.py:586 msgid "create a new address" msgstr "创建新地址" -#: core/docs/drf/viewsets.py:548 +#: core/docs/drf/viewsets.py:594 msgid "delete an address" msgstr "删除地址" -#: core/docs/drf/viewsets.py:555 +#: core/docs/drf/viewsets.py:601 msgid "update an entire address" msgstr "更新整个地址" -#: core/docs/drf/viewsets.py:563 +#: core/docs/drf/viewsets.py:609 msgid "partially update an address" msgstr "部分更新地址" -#: core/docs/drf/viewsets.py:571 +#: core/docs/drf/viewsets.py:617 msgid "autocomplete address suggestions" msgstr "自动完成地址输入" -#: core/docs/drf/viewsets.py:576 +#: core/docs/drf/viewsets.py:622 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "原始数据查询字符串,请附加来自地理 IP 端点的数据" -#: core/docs/drf/viewsets.py:582 +#: core/docs/drf/viewsets.py:628 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "限制结果数量,1 < limit < 10,默认:5" -#: core/docs/drf/viewsets.py:595 +#: core/docs/drf/viewsets.py:641 msgid "list all feedbacks (simple view)" msgstr "列出所有反馈(简单视图)" -#: core/docs/drf/viewsets.py:599 +#: core/docs/drf/viewsets.py:645 msgid "retrieve a single feedback (detailed view)" msgstr "检索单个反馈(详细视图)" -#: core/docs/drf/viewsets.py:603 +#: core/docs/drf/viewsets.py:649 msgid "create a feedback" msgstr "创建反馈" -#: core/docs/drf/viewsets.py:607 +#: core/docs/drf/viewsets.py:653 msgid "delete a feedback" msgstr "删除反馈" -#: core/docs/drf/viewsets.py:611 +#: core/docs/drf/viewsets.py:657 msgid "rewrite an existing feedback saving non-editables" msgstr "重写现有的反馈,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:615 +#: core/docs/drf/viewsets.py:661 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "重写现有反馈的某些字段,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:622 +#: core/docs/drf/viewsets.py:668 msgid "list all order–product relations (simple view)" msgstr "列出所有订单-产品关系(简单视图)" -#: core/docs/drf/viewsets.py:629 +#: core/docs/drf/viewsets.py:675 msgid "retrieve a single order–product relation (detailed view)" msgstr "检索单一订单-产品关系(详细视图)" -#: core/docs/drf/viewsets.py:636 +#: core/docs/drf/viewsets.py:682 msgid "create a new order–product relation" msgstr "创建新的订单-产品关系" -#: core/docs/drf/viewsets.py:643 +#: core/docs/drf/viewsets.py:689 msgid "replace an existing order–product relation" msgstr "替换现有的订单-产品关系" -#: core/docs/drf/viewsets.py:650 +#: core/docs/drf/viewsets.py:696 msgid "partially update an existing order–product relation" msgstr "部分更新现有的订单-产品关系" -#: core/docs/drf/viewsets.py:657 +#: core/docs/drf/viewsets.py:703 msgid "delete an order–product relation" msgstr "删除订单-产品关系" -#: core/docs/drf/viewsets.py:664 +#: core/docs/drf/viewsets.py:710 msgid "add or remove feedback on an order–product relation" msgstr "添加或删除订单与产品关系中的反馈信息" -#: core/elasticsearch/__init__.py:101 +#: core/elasticsearch/__init__.py:97 msgid "no search term provided." msgstr "未提供搜索条件。" -#: core/filters.py:61 core/filters.py:459 core/filters.py:488 +#: core/filters.py:62 core/filters.py:479 core/filters.py:508 msgid "UUID" msgstr "UUID" -#: core/filters.py:62 core/filters.py:353 core/filters.py:428 +#: core/filters.py:63 core/filters.py:371 core/filters.py:447 msgid "Name" msgstr "名称" -#: core/filters.py:63 core/filters.py:429 +#: core/filters.py:64 core/filters.py:448 msgid "Categories" msgstr "类别" -#: core/filters.py:65 +#: core/filters.py:66 msgid "Categories Slugs" msgstr "类别 蛞蝓" -#: core/filters.py:66 core/filters.py:361 +#: core/filters.py:67 core/filters.py:379 msgid "Tags" msgstr "标签" -#: core/filters.py:67 +#: core/filters.py:68 msgid "Min Price" msgstr "最低价格" -#: core/filters.py:68 +#: core/filters.py:69 msgid "Max Price" msgstr "最高价格" -#: core/filters.py:69 +#: core/filters.py:70 msgid "Is Active" msgstr "处于活动状态" -#: core/filters.py:70 +#: core/filters.py:71 msgid "Brand" msgstr "品牌" -#: core/filters.py:71 +#: core/filters.py:72 msgid "Attributes" msgstr "属性" -#: core/filters.py:72 +#: core/filters.py:73 msgid "Quantity" msgstr "数量" -#: core/filters.py:73 core/filters.py:355 core/models.py:378 core/models.py:472 -#: core/models.py:663 +#: core/filters.py:74 core/filters.py:373 core/models.py:392 +#: core/models.py:486 core/models.py:677 msgid "Slug" msgstr "蛞蝓" -#: core/filters.py:74 +#: core/filters.py:75 msgid "Is Digital" msgstr "是数字" -#: core/filters.py:75 +#: core/filters.py:76 msgid "Include sub-categories" msgstr "包括子类别" -#: core/filters.py:147 +#: core/filters.py:79 +msgid "Include personal ordered" +msgstr "包括个人订购的产品" + +#: core/filters.py:160 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "必须有 category_uuid 才能使用 include_subcategories 标志" -#: core/filters.py:280 +#: core/filters.py:298 msgid "Search (ID, product name or part number)" msgstr "搜索(ID、产品名称或零件编号)" -#: core/filters.py:283 +#: core/filters.py:301 msgid "Bought after (inclusive)" msgstr "之后购买(含)" -#: core/filters.py:284 +#: core/filters.py:302 msgid "Bought before (inclusive)" msgstr "之前购买(含)" -#: core/filters.py:287 core/filters.py:334 core/filters.py:490 +#: core/filters.py:305 core/filters.py:352 core/filters.py:510 msgid "User email" msgstr "用户电子邮件" -#: core/filters.py:288 core/filters.py:335 core/filters.py:468 -#: core/filters.py:489 +#: core/filters.py:306 core/filters.py:353 core/filters.py:488 +#: core/filters.py:509 msgid "User UUID" msgstr "用户 UUID" -#: core/filters.py:289 +#: core/filters.py:307 msgid "Status" msgstr "现状" -#: core/filters.py:293 +#: core/filters.py:311 msgid "Human Readable ID" msgstr "人可读 ID" -#: core/filters.py:354 +#: core/filters.py:372 msgid "Parent" msgstr "家长" -#: core/filters.py:358 +#: core/filters.py:376 msgid "Whole category(has at least 1 product or not)" msgstr "整个类别(是否至少有 1 个产品)" -#: core/filters.py:362 +#: core/filters.py:380 msgid "Level" msgstr "级别" -#: core/filters.py:463 +#: core/filters.py:483 msgid "Product UUID" msgstr "产品 UUID" @@ -850,7 +861,7 @@ msgstr "缓存数据" msgid "camelized JSON data from the requested URL" msgstr "从请求的 URL 中获取驼峰化 JSON 数据" -#: core/graphene/mutations.py:65 core/views.py:356 +#: core/graphene/mutations.py:65 core/views.py:359 msgid "only URLs starting with http(s):// are allowed" msgstr "只允许使用以 http(s):// 开头的 URL" @@ -881,7 +892,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "请提供 order_uuid 或 order_hr_id(互斥)!" #: core/graphene/mutations.py:229 core/graphene/mutations.py:486 -#: core/graphene/mutations.py:527 core/viewsets.py:601 +#: core/graphene/mutations.py:527 core/viewsets.py:818 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy() 方法中的类型有误:{type(instance)!s}" @@ -934,8 +945,8 @@ msgstr "购买订单" #: core/graphene/mutations.py:500 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" #: core/graphene/mutations.py:532 @@ -955,9 +966,9 @@ msgstr "未找到订购产品 {order_product_uuid}!" msgid "original address string provided by the user" msgstr "用户提供的原始地址字符串" -#: core/graphene/mutations.py:655 core/models.py:1020 core/models.py:1033 -#: core/models.py:1476 core/models.py:1505 core/models.py:1530 -#: core/viewsets.py:408 core/viewsets.py:604 +#: core/graphene/mutations.py:655 core/models.py:1047 core/models.py:1060 +#: core/models.py:1505 core/models.py:1534 core/models.py:1559 +#: core/viewsets.py:821 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} 不存在:{uuid}!" @@ -970,145 +981,146 @@ msgstr "限值必须在 1 和 10 之间" msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - 工作起来得心应手" -#: core/graphene/object_types.py:57 core/graphene/object_types.py:276 -#: core/graphene/object_types.py:317 core/models.py:790 core/models.py:1368 +#: core/graphene/object_types.py:82 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:438 core/models.py:817 core/models.py:1395 msgid "attributes" msgstr "属性" -#: core/graphene/object_types.py:70 +#: core/graphene/object_types.py:95 msgid "grouped attributes" msgstr "分组属性" -#: core/graphene/object_types.py:77 +#: core/graphene/object_types.py:102 msgid "groups of attributes" msgstr "属性组" -#: core/graphene/object_types.py:91 core/graphene/object_types.py:125 -#: core/graphene/object_types.py:155 core/models.py:403 core/models.py:754 +#: core/graphene/object_types.py:116 core/graphene/object_types.py:193 +#: core/graphene/object_types.py:224 core/models.py:417 core/models.py:781 msgid "categories" msgstr "类别" -#: core/graphene/object_types.py:98 core/models.py:486 +#: core/graphene/object_types.py:124 core/models.py:500 msgid "brands" msgstr "品牌" -#: core/graphene/object_types.py:127 +#: core/graphene/object_types.py:195 msgid "category image url" msgstr "类别" -#: core/graphene/object_types.py:128 core/graphene/object_types.py:223 -#: core/models.py:340 +#: core/graphene/object_types.py:196 core/graphene/object_types.py:344 +#: core/models.py:354 msgid "markup percentage" msgstr "加价百分比" -#: core/graphene/object_types.py:131 +#: core/graphene/object_types.py:199 msgid "which attributes and values can be used for filtering this category." msgstr "哪些属性和值可用于筛选该类别。" -#: core/graphene/object_types.py:135 -msgid "minimum and maximum prices for products in this category, if available." +#: core/graphene/object_types.py:203 +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "该类别产品的最低和最高价格(如有)。" -#: core/graphene/object_types.py:137 +#: core/graphene/object_types.py:205 msgid "tags for this category" msgstr "此类别的标签" -#: core/graphene/object_types.py:138 +#: core/graphene/object_types.py:206 msgid "products in this category" msgstr "该类别中的产品" -#: core/graphene/object_types.py:230 core/models.py:173 +#: core/graphene/object_types.py:351 core/models.py:187 msgid "vendors" msgstr "供应商" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:355 msgid "Latitude (Y coordinate)" msgstr "纬度(Y 坐标)" -#: core/graphene/object_types.py:235 +#: core/graphene/object_types.py:356 msgid "Longitude (X coordinate)" msgstr "经度(X 坐标)" -#: core/graphene/object_types.py:264 +#: core/graphene/object_types.py:385 msgid "comment" msgstr "如何" -#: core/graphene/object_types.py:265 +#: core/graphene/object_types.py:386 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "评级值从 1 到 10(包括 10),如果未设置,则为 0。" -#: core/graphene/object_types.py:272 +#: core/graphene/object_types.py:393 msgid "represents feedback from a user." msgstr "代表用户的反馈意见。" -#: core/graphene/object_types.py:277 core/graphene/object_types.py:318 -#: core/models.py:1362 +#: core/graphene/object_types.py:398 core/graphene/object_types.py:439 +#: core/models.py:1389 msgid "notifications" msgstr "通知" -#: core/graphene/object_types.py:278 +#: core/graphene/object_types.py:399 msgid "download url for this order product if applicable" msgstr "此订单产品的下载网址(如适用" -#: core/graphene/object_types.py:307 +#: core/graphene/object_types.py:428 msgid "a list of order products in this order" msgstr "该订单中的订单产品列表" -#: core/graphene/object_types.py:309 core/models.py:1332 +#: core/graphene/object_types.py:430 core/models.py:1359 msgid "billing address" msgstr "账单地址" -#: core/graphene/object_types.py:312 +#: core/graphene/object_types.py:433 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "此订单的送货地址,如果与账单地址相同或不适用,请留空" -#: core/graphene/object_types.py:314 +#: core/graphene/object_types.py:435 msgid "total price of this order" msgstr "订单总价" -#: core/graphene/object_types.py:315 +#: core/graphene/object_types.py:436 msgid "total quantity of products in order" msgstr "订单中产品的总数量" -#: core/graphene/object_types.py:316 +#: core/graphene/object_types.py:437 msgid "are all products in the order digital" msgstr "订单中的所有产品都是数字产品吗?" -#: core/graphene/object_types.py:319 +#: core/graphene/object_types.py:440 msgid "transactions for this order" msgstr "此订单的交易" -#: core/graphene/object_types.py:338 core/models.py:1396 +#: core/graphene/object_types.py:459 core/models.py:1423 msgid "orders" msgstr "订单" -#: core/graphene/object_types.py:359 +#: core/graphene/object_types.py:480 msgid "image url" msgstr "图片 URL" -#: core/graphene/object_types.py:366 +#: core/graphene/object_types.py:487 msgid "product's images" msgstr "产品图片" -#: core/graphene/object_types.py:373 core/models.py:402 core/models.py:606 +#: core/graphene/object_types.py:494 core/models.py:416 core/models.py:620 msgid "category" msgstr "类别" -#: core/graphene/object_types.py:375 core/models.py:1988 +#: core/graphene/object_types.py:496 core/models.py:2022 msgid "feedbacks" msgstr "反馈意见" -#: core/graphene/object_types.py:376 core/models.py:485 core/models.py:615 +#: core/graphene/object_types.py:497 core/models.py:499 core/models.py:629 msgid "brand" msgstr "品牌" -#: core/graphene/object_types.py:377 core/models.py:113 +#: core/graphene/object_types.py:498 core/models.py:114 msgid "attribute groups" msgstr "属性组" -#: core/graphene/object_types.py:378 +#: core/graphene/object_types.py:499 #: core/templates/digital_order_created_email.html:111 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:109 @@ -1116,7 +1128,7 @@ msgstr "属性组" msgid "price" msgstr "价格" -#: core/graphene/object_types.py:379 +#: core/graphene/object_types.py:500 #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:108 @@ -1124,31 +1136,35 @@ msgstr "价格" msgid "quantity" msgstr "数量" -#: core/graphene/object_types.py:380 +#: core/graphene/object_types.py:501 msgid "number of feedbacks" msgstr "反馈数量" -#: core/graphene/object_types.py:398 core/models.py:668 +#: core/graphene/object_types.py:502 +msgid "only available for personal orders" +msgstr "仅限个人订购的产品" + +#: core/graphene/object_types.py:525 core/models.py:691 msgid "products" msgstr "产品" -#: core/graphene/object_types.py:446 +#: core/graphene/object_types.py:622 msgid "promocodes" msgstr "促销代码" -#: core/graphene/object_types.py:456 +#: core/graphene/object_types.py:632 msgid "products on sale" msgstr "销售产品" -#: core/graphene/object_types.py:463 core/models.py:967 +#: core/graphene/object_types.py:639 core/models.py:994 msgid "promotions" msgstr "促销活动" -#: core/graphene/object_types.py:467 core/models.py:172 +#: core/graphene/object_types.py:643 core/models.py:186 msgid "vendor" msgstr "供应商" -#: core/graphene/object_types.py:468 core/models.py:667 +#: core/graphene/object_types.py:644 core/models.py:690 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:107 @@ -1156,891 +1172,900 @@ msgstr "供应商" msgid "product" msgstr "产品" -#: core/graphene/object_types.py:479 core/models.py:992 +#: core/graphene/object_types.py:655 core/models.py:1019 msgid "wishlisted products" msgstr "心愿单上的产品" -#: core/graphene/object_types.py:485 core/models.py:1009 +#: core/graphene/object_types.py:661 core/models.py:1036 msgid "wishlists" msgstr "愿望清单" -#: core/graphene/object_types.py:489 +#: core/graphene/object_types.py:665 msgid "tagged products" msgstr "标签产品" -#: core/graphene/object_types.py:496 core/models.py:217 core/models.py:621 +#: core/graphene/object_types.py:672 core/models.py:231 core/models.py:635 msgid "product tags" msgstr "产品标签" -#: core/graphene/object_types.py:500 +#: core/graphene/object_types.py:676 msgid "tagged categories" msgstr "标签类别" -#: core/graphene/object_types.py:507 +#: core/graphene/object_types.py:683 msgid "categories tags" msgstr "类别标签" -#: core/graphene/object_types.py:511 +#: core/graphene/object_types.py:687 msgid "project name" msgstr "项目名称" -#: core/graphene/object_types.py:512 +#: core/graphene/object_types.py:688 msgid "company email" msgstr "公司电子邮件" -#: core/graphene/object_types.py:513 +#: core/graphene/object_types.py:689 msgid "company name" msgstr "公司名称" -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:690 msgid "company address" msgstr "公司地址" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:691 msgid "company phone number" msgstr "公司电话号码" -#: core/graphene/object_types.py:516 +#: core/graphene/object_types.py:692 msgid "email from, sometimes it must be used instead of host user value" msgstr "电子邮件来自\",有时必须使用它来代替主机用户值" -#: core/graphene/object_types.py:517 +#: core/graphene/object_types.py:693 msgid "email host user" msgstr "电子邮件主机用户" -#: core/graphene/object_types.py:518 +#: core/graphene/object_types.py:694 msgid "maximum amount for payment" msgstr "最高付款额" -#: core/graphene/object_types.py:519 +#: core/graphene/object_types.py:695 msgid "minimum amount for payment" msgstr "最低付款额" -#: core/graphene/object_types.py:520 +#: core/graphene/object_types.py:696 msgid "analytics data" msgstr "分析数据" -#: core/graphene/object_types.py:521 +#: core/graphene/object_types.py:697 msgid "advertisement data" msgstr "广告数据" -#: core/graphene/object_types.py:524 +#: core/graphene/object_types.py:700 msgid "company configuration" msgstr "配置" -#: core/graphene/object_types.py:528 +#: core/graphene/object_types.py:704 msgid "language code" msgstr "语言代码" -#: core/graphene/object_types.py:529 +#: core/graphene/object_types.py:705 msgid "language name" msgstr "语言名称" -#: core/graphene/object_types.py:530 +#: core/graphene/object_types.py:706 msgid "language flag, if exists :)" msgstr "语言标志(如果有):)" -#: core/graphene/object_types.py:533 +#: core/graphene/object_types.py:709 msgid "supported languages" msgstr "获取支持的语言列表" -#: core/graphene/object_types.py:564 core/graphene/object_types.py:565 -#: core/graphene/object_types.py:566 +#: core/graphene/object_types.py:740 core/graphene/object_types.py:741 +#: core/graphene/object_types.py:742 msgid "products search results" msgstr "产品搜索结果" -#: core/graphene/object_types.py:567 +#: core/graphene/object_types.py:743 msgid "posts search results" msgstr "产品搜索结果" -#: core/models.py:98 +#: core/models.py:99 msgid "parent of this group" msgstr "本组家长" -#: core/models.py:99 +#: core/models.py:100 msgid "parent attribute group" msgstr "父属性组" -#: core/models.py:103 core/models.py:104 +#: core/models.py:104 core/models.py:105 msgid "attribute group's name" msgstr "属性组名称" -#: core/models.py:112 core/models.py:762 +#: core/models.py:113 core/models.py:789 msgid "attribute group" msgstr "属性组" -#: core/models.py:150 +#: core/models.py:151 msgid "stores credentials and endpoints required for vendor communication" msgstr "存储供应商应用程序接口通信所需的凭证和端点" -#: core/models.py:151 +#: core/models.py:152 msgid "authentication info" msgstr "认证信息" -#: core/models.py:156 +#: core/models.py:157 msgid "define the markup for products retrieved from this vendor" msgstr "定义从该供应商获取的产品的标记" -#: core/models.py:157 +#: core/models.py:158 msgid "vendor markup percentage" msgstr "供应商加价百分比" -#: core/models.py:161 +#: core/models.py:162 msgid "name of this vendor" msgstr "供应商名称" -#: core/models.py:162 +#: core/models.py:163 msgid "vendor name" msgstr "供应商名称" -#: core/models.py:202 core/models.py:240 +#: core/models.py:216 core/models.py:254 msgid "internal tag identifier for the product tag" msgstr "产品标签的内部标签标识符" -#: core/models.py:203 core/models.py:241 +#: core/models.py:217 core/models.py:255 msgid "tag name" msgstr "标签名称" -#: core/models.py:207 core/models.py:245 +#: core/models.py:221 core/models.py:259 msgid "user-friendly name for the product tag" msgstr "方便用户使用的产品标签名称" -#: core/models.py:208 core/models.py:246 +#: core/models.py:222 core/models.py:260 msgid "tag display name" msgstr "标签显示名称" -#: core/models.py:216 +#: core/models.py:230 msgid "product tag" msgstr "产品标签" -#: core/models.py:254 +#: core/models.py:268 msgid "category tag" msgstr "类别标签" -#: core/models.py:255 core/models.py:384 +#: core/models.py:269 core/models.py:398 msgid "category tags" msgstr "类别标签" -#: core/models.py:331 +#: core/models.py:345 msgid "upload an image representing this category" msgstr "上传代表该类别的图片" -#: core/models.py:334 +#: core/models.py:348 msgid "category image" msgstr "类别 图像" -#: core/models.py:339 +#: core/models.py:353 msgid "define a markup percentage for products in this category" msgstr "定义该类别产品的加价百分比" -#: core/models.py:348 +#: core/models.py:362 msgid "parent of this category to form a hierarchical structure" msgstr "该类别的父类别,形成等级结构" -#: core/models.py:349 +#: core/models.py:363 msgid "parent category" msgstr "父类" -#: core/models.py:354 +#: core/models.py:368 msgid "category name" msgstr "类别名称" -#: core/models.py:355 +#: core/models.py:369 msgid "provide a name for this category" msgstr "提供该类别的名称" -#: core/models.py:362 +#: core/models.py:376 msgid "add a detailed description for this category" msgstr "为该类别添加详细说明" -#: core/models.py:363 +#: core/models.py:377 msgid "category description" msgstr "类别说明" -#: core/models.py:383 +#: core/models.py:397 msgid "tags that help describe or group this category" msgstr "有助于描述或归类该类别的标签" -#: core/models.py:390 core/models.py:478 +#: core/models.py:404 core/models.py:492 msgid "priority" msgstr "优先权" -#: core/models.py:431 +#: core/models.py:445 msgid "name of this brand" msgstr "品牌名称" -#: core/models.py:432 +#: core/models.py:446 msgid "brand name" msgstr "品牌名称" -#: core/models.py:439 +#: core/models.py:453 msgid "upload a logo representing this brand" msgstr "上传代表该品牌的徽标" -#: core/models.py:441 +#: core/models.py:455 msgid "brand small image" msgstr "品牌小形象" -#: core/models.py:447 +#: core/models.py:461 msgid "upload a big logo representing this brand" msgstr "上传代表该品牌的大徽标" -#: core/models.py:449 +#: core/models.py:463 msgid "brand big image" msgstr "品牌大形象" -#: core/models.py:454 +#: core/models.py:468 msgid "add a detailed description of the brand" msgstr "添加品牌的详细描述" -#: core/models.py:455 +#: core/models.py:469 msgid "brand description" msgstr "品牌描述" -#: core/models.py:460 +#: core/models.py:474 msgid "optional categories that this brand is associated with" msgstr "与该品牌相关的可选类别" -#: core/models.py:461 +#: core/models.py:475 msgid "associated categories" msgstr "类别" -#: core/models.py:515 +#: core/models.py:529 msgid "the vendor supplying this product stock" msgstr "提供该产品库存的供应商" -#: core/models.py:516 +#: core/models.py:530 msgid "associated vendor" msgstr "相关供应商" -#: core/models.py:520 +#: core/models.py:534 msgid "final price to the customer after markups" msgstr "加价后给客户的最终价格" -#: core/models.py:521 +#: core/models.py:535 msgid "selling price" msgstr "销售价格" -#: core/models.py:526 +#: core/models.py:540 msgid "the product associated with this stock entry" msgstr "与该库存条目相关的产品" -#: core/models.py:527 core/models.py:832 core/models.py:889 core/models.py:1803 +#: core/models.py:541 core/models.py:859 core/models.py:916 +#: core/models.py:1837 msgid "associated product" msgstr "相关产品" -#: core/models.py:534 +#: core/models.py:548 msgid "the price paid to the vendor for this product" msgstr "为该产品支付给供应商的价格" -#: core/models.py:535 +#: core/models.py:549 msgid "vendor purchase price" msgstr "供应商购买价格" -#: core/models.py:539 +#: core/models.py:553 msgid "available quantity of the product in stock" msgstr "产品的可用库存量" -#: core/models.py:540 +#: core/models.py:554 msgid "quantity in stock" msgstr "库存数量" -#: core/models.py:544 +#: core/models.py:558 msgid "vendor-assigned SKU for identifying the product" msgstr "供应商指定的 SKU,用于识别产品" -#: core/models.py:545 +#: core/models.py:559 msgid "vendor sku" msgstr "供应商 SKU" -#: core/models.py:551 +#: core/models.py:565 msgid "digital file associated with this stock if applicable" msgstr "与该库存相关的数字文件(如适用" -#: core/models.py:552 +#: core/models.py:566 msgid "digital file" msgstr "数字文件" -#: core/models.py:561 +#: core/models.py:575 msgid "stock entries" msgstr "库存条目" -#: core/models.py:605 +#: core/models.py:619 msgid "category this product belongs to" msgstr "该产品所属类别" -#: core/models.py:614 +#: core/models.py:628 msgid "optionally associate this product with a brand" msgstr "可选择将该产品与某个品牌联系起来" -#: core/models.py:620 +#: core/models.py:634 msgid "tags that help describe or group this product" msgstr "有助于描述或归类该产品的标签" -#: core/models.py:625 +#: core/models.py:639 msgid "indicates whether this product is digitally delivered" msgstr "表示该产品是否以数字方式交付" -#: core/models.py:626 +#: core/models.py:640 msgid "is product digital" msgstr "产品是否数字化" -#: core/models.py:632 +#: core/models.py:646 msgid "provide a clear identifying name for the product" msgstr "为产品提供一个明确的标识名称" -#: core/models.py:633 +#: core/models.py:647 msgid "product name" msgstr "产品名称" -#: core/models.py:638 core/models.py:955 +#: core/models.py:652 core/models.py:982 msgid "add a detailed description of the product" msgstr "添加产品的详细描述" -#: core/models.py:639 +#: core/models.py:653 msgid "product description" msgstr "产品说明" -#: core/models.py:646 +#: core/models.py:660 msgid "part number for this product" msgstr "该产品的零件编号" -#: core/models.py:647 +#: core/models.py:661 msgid "part number" msgstr "部件编号" -#: core/models.py:753 +#: core/models.py:680 +msgid "stock keeping unit for this product" +msgstr "该产品的库存单位" + +#: core/models.py:681 +msgid "SKU" +msgstr "商品编号" + +#: core/models.py:780 msgid "category of this attribute" msgstr "该属性的类别" -#: core/models.py:761 +#: core/models.py:788 msgid "group of this attribute" msgstr "该属性的组" -#: core/models.py:767 +#: core/models.py:794 msgid "string" msgstr "字符串" -#: core/models.py:768 +#: core/models.py:795 msgid "integer" msgstr "整数" -#: core/models.py:769 +#: core/models.py:796 msgid "float" msgstr "浮动" -#: core/models.py:770 +#: core/models.py:797 msgid "boolean" msgstr "布尔型" -#: core/models.py:771 +#: core/models.py:798 msgid "array" msgstr "阵列" -#: core/models.py:772 +#: core/models.py:799 msgid "object" msgstr "对象" -#: core/models.py:774 +#: core/models.py:801 msgid "type of the attribute's value" msgstr "属性值的类型" -#: core/models.py:775 +#: core/models.py:802 msgid "value type" msgstr "价值类型" -#: core/models.py:780 +#: core/models.py:807 msgid "name of this attribute" msgstr "该属性的名称" -#: core/models.py:781 +#: core/models.py:808 msgid "attribute's name" msgstr "属性名称" -#: core/models.py:789 core/models.py:824 +#: core/models.py:816 core/models.py:851 #: core/templates/digital_order_delivered_email.html:134 msgid "attribute" msgstr "属性" -#: core/models.py:823 +#: core/models.py:850 msgid "attribute of this value" msgstr "该值的属性" -#: core/models.py:831 +#: core/models.py:858 msgid "the specific product associated with this attribute's value" msgstr "与该属性值相关的特定产品" -#: core/models.py:837 +#: core/models.py:864 msgid "the specific value for this attribute" msgstr "该属性的具体值" -#: core/models.py:871 +#: core/models.py:898 msgid "provide alternative text for the image for accessibility" msgstr "为图像提供替代文字,以便于访问" -#: core/models.py:872 +#: core/models.py:899 msgid "image alt text" msgstr "图片 alt 文本" -#: core/models.py:875 +#: core/models.py:902 msgid "upload the image file for this product" msgstr "上传该产品的图片文件" -#: core/models.py:876 core/models.py:901 +#: core/models.py:903 core/models.py:928 msgid "product image" msgstr "产品图片" -#: core/models.py:882 +#: core/models.py:909 msgid "determines the order in which images are displayed" msgstr "确定图像的显示顺序" -#: core/models.py:883 +#: core/models.py:910 msgid "display priority" msgstr "显示优先级" -#: core/models.py:888 +#: core/models.py:915 msgid "the product that this image represents" msgstr "该图片所代表的产品" -#: core/models.py:902 +#: core/models.py:929 msgid "product images" msgstr "产品图片" -#: core/models.py:943 +#: core/models.py:970 msgid "percentage discount for the selected products" msgstr "所选产品的折扣百分比" -#: core/models.py:944 +#: core/models.py:971 msgid "discount percentage" msgstr "折扣百分比" -#: core/models.py:949 +#: core/models.py:976 msgid "provide a unique name for this promotion" msgstr "为该促销活动提供一个独特的名称" -#: core/models.py:950 +#: core/models.py:977 msgid "promotion name" msgstr "推广名称" -#: core/models.py:956 +#: core/models.py:983 msgid "promotion description" msgstr "促销说明" -#: core/models.py:961 +#: core/models.py:988 msgid "select which products are included in this promotion" msgstr "选择促销活动包括哪些产品" -#: core/models.py:962 +#: core/models.py:989 msgid "included products" msgstr "包括产品" -#: core/models.py:966 +#: core/models.py:993 msgid "promotion" msgstr "促销活动" -#: core/models.py:991 +#: core/models.py:1018 msgid "products that the user has marked as wanted" msgstr "用户标记为想要的产品" -#: core/models.py:999 +#: core/models.py:1026 msgid "user who owns this wishlist" msgstr "拥有此愿望清单的用户" -#: core/models.py:1000 +#: core/models.py:1027 msgid "wishlist owner" msgstr "心愿单所有者" -#: core/models.py:1008 +#: core/models.py:1035 msgid "wishlist" msgstr "愿望清单" -#: core/models.py:1075 +#: core/models.py:1102 msgid "documentary" msgstr "纪录片" -#: core/models.py:1076 +#: core/models.py:1103 msgid "documentaries" msgstr "纪录片" -#: core/models.py:1086 +#: core/models.py:1113 msgid "unresolved" msgstr "未解决" -#: core/models.py:1132 +#: core/models.py:1159 msgid "address line for the customer" msgstr "客户地址栏" -#: core/models.py:1133 +#: core/models.py:1160 msgid "address line" msgstr "地址栏" -#: core/models.py:1135 +#: core/models.py:1162 msgid "street" msgstr "街道" -#: core/models.py:1136 +#: core/models.py:1163 msgid "district" msgstr "地区" -#: core/models.py:1137 +#: core/models.py:1164 msgid "city" msgstr "城市" -#: core/models.py:1138 +#: core/models.py:1165 msgid "region" msgstr "地区" -#: core/models.py:1139 +#: core/models.py:1166 msgid "postal code" msgstr "邮政编码" -#: core/models.py:1140 +#: core/models.py:1167 msgid "country" msgstr "国家" -#: core/models.py:1147 +#: core/models.py:1174 msgid "geolocation point: (longitude, latitude)" msgstr "地理位置点(经度、纬度)" -#: core/models.py:1150 +#: core/models.py:1177 msgid "full JSON response from geocoder for this address" msgstr "地理编码器对此地址的完整 JSON 响应" -#: core/models.py:1155 +#: core/models.py:1182 msgid "stored JSON response from the geocoding service" msgstr "存储的来自地理编码服务的 JSON 响应" -#: core/models.py:1163 +#: core/models.py:1190 msgid "address" msgstr "地址" -#: core/models.py:1164 +#: core/models.py:1191 msgid "addresses" msgstr "地址" -#: core/models.py:1209 +#: core/models.py:1236 msgid "unique code used by a user to redeem a discount" msgstr "用户用于兑换折扣的唯一代码" -#: core/models.py:1210 +#: core/models.py:1237 msgid "promo code identifier" msgstr "促销代码标识符" -#: core/models.py:1217 +#: core/models.py:1244 msgid "fixed discount amount applied if percent is not used" msgstr "如果不使用百分比,则使用固定折扣额" -#: core/models.py:1218 +#: core/models.py:1245 msgid "fixed discount amount" msgstr "固定折扣额" -#: core/models.py:1224 +#: core/models.py:1251 msgid "percentage discount applied if fixed amount is not used" msgstr "未使用固定金额时适用的折扣百分比" -#: core/models.py:1225 +#: core/models.py:1252 msgid "percentage discount" msgstr "折扣百分比" -#: core/models.py:1230 +#: core/models.py:1257 msgid "timestamp when the promocode expires" msgstr "促销代码过期的时间戳" -#: core/models.py:1231 +#: core/models.py:1258 msgid "end validity time" msgstr "结束有效时间" -#: core/models.py:1236 +#: core/models.py:1263 msgid "timestamp from which this promocode is valid" msgstr "该促销代码有效的时间戳" -#: core/models.py:1237 +#: core/models.py:1264 msgid "start validity time" msgstr "开始有效时间" -#: core/models.py:1242 +#: core/models.py:1269 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "使用促销代码的时间戳,如果尚未使用,则留空" -#: core/models.py:1243 +#: core/models.py:1270 msgid "usage timestamp" msgstr "使用时间戳" -#: core/models.py:1248 +#: core/models.py:1275 msgid "user assigned to this promocode if applicable" msgstr "分配给此促销代码的用户(如适用" -#: core/models.py:1249 +#: core/models.py:1276 msgid "assigned user" msgstr "指定用户" -#: core/models.py:1256 +#: core/models.py:1283 msgid "promo code" msgstr "促销代码" -#: core/models.py:1257 +#: core/models.py:1284 msgid "promo codes" msgstr "促销代码" -#: core/models.py:1264 +#: core/models.py:1291 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." -msgstr "" -"只能定义一种折扣类型(金额或百分比),而不能同时定义两种类型或两者都不定义。" +msgstr "只能定义一种折扣类型(金额或百分比),而不能同时定义两种类型或两者都不定义。" -#: core/models.py:1279 +#: core/models.py:1306 msgid "promocode already used" msgstr "促销代码已被使用" -#: core/models.py:1295 +#: core/models.py:1322 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "促销代码 {self.uuid} 的折扣类型无效!" -#: core/models.py:1331 +#: core/models.py:1358 msgid "the billing address used for this order" msgstr "该订单使用的账单地址" -#: core/models.py:1339 +#: core/models.py:1366 msgid "optional promo code applied to this order" msgstr "此订单可选择使用促销代码" -#: core/models.py:1340 +#: core/models.py:1367 msgid "applied promo code" msgstr "应用促销代码" -#: core/models.py:1348 +#: core/models.py:1375 msgid "the shipping address used for this order" msgstr "该订单使用的送货地址" -#: core/models.py:1349 +#: core/models.py:1376 msgid "shipping address" msgstr "送货地址" -#: core/models.py:1355 +#: core/models.py:1382 msgid "current status of the order in its lifecycle" msgstr "订单在其生命周期中的当前状态" -#: core/models.py:1356 +#: core/models.py:1383 msgid "order status" msgstr "订单状态" -#: core/models.py:1361 core/models.py:1780 +#: core/models.py:1388 core/models.py:1814 msgid "json structure of notifications to display to users" msgstr "向用户显示的通知的 JSON 结构,在管理用户界面中使用表格视图" -#: core/models.py:1367 +#: core/models.py:1394 msgid "json representation of order attributes for this order" msgstr "该订单属性的 JSON 表示形式" -#: core/models.py:1373 +#: core/models.py:1400 msgid "the user who placed the order" msgstr "下订单的用户" -#: core/models.py:1374 +#: core/models.py:1401 msgid "user" msgstr "用户" -#: core/models.py:1380 +#: core/models.py:1407 msgid "the timestamp when the order was finalized" msgstr "订单确定的时间戳" -#: core/models.py:1381 +#: core/models.py:1408 msgid "buy time" msgstr "购买时间" -#: core/models.py:1388 +#: core/models.py:1415 msgid "a human-readable identifier for the order" msgstr "订单的人工可读标识符" -#: core/models.py:1389 +#: core/models.py:1416 msgid "human readable id" msgstr "人类可读 ID" -#: core/models.py:1395 +#: core/models.py:1422 msgid "order" msgstr "订购" -#: core/models.py:1410 +#: core/models.py:1439 msgid "a user must have only one pending order at a time" msgstr "用户每次只能有一个挂单!" -#: core/models.py:1444 +#: core/models.py:1473 msgid "you cannot add products to an order that is not a pending one" msgstr "您不能向非待处理订单添加产品" -#: core/models.py:1449 +#: core/models.py:1478 msgid "you cannot add inactive products to order" msgstr "您不能在订单中添加非活动产品" -#: core/models.py:1466 +#: core/models.py:1495 msgid "you cannot add more products than available in stock" msgstr "添加的产品数量不能超过现有库存" -#: core/models.py:1488 core/models.py:1513 core/models.py:1521 +#: core/models.py:1517 core/models.py:1542 core/models.py:1550 msgid "you cannot remove products from an order that is not a pending one" msgstr "您不能从非待处理订单中删除产品" -#: core/models.py:1509 +#: core/models.py:1538 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "查询 <{query}> 时,{name} 不存在!" -#: core/models.py:1541 +#: core/models.py:1570 msgid "promocode does not exist" msgstr "促销代码不存在" -#: core/models.py:1547 +#: core/models.py:1576 msgid "you can only buy physical products with shipping address specified" msgstr "您只能购买指定送货地址的实物产品!" -#: core/models.py:1566 +#: core/models.py:1595 msgid "address does not exist" msgstr "地址不存在" -#: core/models.py:1587 core/models.py:1645 +#: core/models.py:1616 core/models.py:1679 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "您现在无法购买,请稍后再试。" -#: core/models.py:1590 +#: core/models.py:1619 core/models.py:1675 msgid "invalid force value" msgstr "力值无效" -#: core/models.py:1596 core/models.py:1648 +#: core/models.py:1625 core/models.py:1682 msgid "you cannot purchase an empty order!" msgstr "您不能购买空单!" -#: core/models.py:1615 +#: core/models.py:1644 msgid "you cannot buy an order without a user" msgstr "没有用户就无法购买订单!" -#: core/models.py:1618 +#: core/models.py:1652 msgid "a user without a balance cannot buy with balance" msgstr "没有余额的用户不能使用余额购买!" -#: core/models.py:1623 +#: core/models.py:1657 msgid "insufficient funds to complete the order" msgstr "资金不足,无法完成订单" -#: core/models.py:1657 +#: core/models.py:1691 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "未经注册不能购买,请提供以下信息:客户姓名、客户电子邮件、客户电话号码" -#: core/models.py:1666 +#: core/models.py:1700 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "付款方式无效:来自 {available_payment_methods} 的 {payment_method} !" -#: core/models.py:1768 +#: core/models.py:1802 msgid "the price paid by the customer for this product at purchase time" msgstr "客户购买该产品时支付的价格" -#: core/models.py:1769 +#: core/models.py:1803 msgid "purchase price at order time" msgstr "订购时的购买价格" -#: core/models.py:1774 +#: core/models.py:1808 msgid "internal comments for admins about this ordered product" msgstr "管理员对该订购产品的内部评论" -#: core/models.py:1775 +#: core/models.py:1809 msgid "internal comments" msgstr "内部意见" -#: core/models.py:1781 +#: core/models.py:1815 msgid "user notifications" msgstr "用户通知" -#: core/models.py:1786 +#: core/models.py:1820 msgid "json representation of this item's attributes" msgstr "该项属性的 JSON 表示形式" -#: core/models.py:1787 +#: core/models.py:1821 msgid "ordered product attributes" msgstr "有序的产品属性" -#: core/models.py:1792 +#: core/models.py:1826 msgid "reference to the parent order that contains this product" msgstr "对包含该产品的父订单的引用" -#: core/models.py:1793 +#: core/models.py:1827 msgid "parent order" msgstr "父顺序" -#: core/models.py:1802 +#: core/models.py:1836 msgid "the specific product associated with this order line" msgstr "与该订单项目相关的具体产品" -#: core/models.py:1809 +#: core/models.py:1843 msgid "quantity of this specific product in the order" msgstr "订单中该特定产品的数量" -#: core/models.py:1810 +#: core/models.py:1844 msgid "product quantity" msgstr "产品数量" -#: core/models.py:1817 +#: core/models.py:1851 msgid "current status of this product in the order" msgstr "订单中该产品的当前状态" -#: core/models.py:1818 +#: core/models.py:1852 msgid "product line status" msgstr "产品系列状态" -#: core/models.py:1878 +#: core/models.py:1912 msgid "order product must have an order" msgstr "订单产品必须有相关的订单!" -#: core/models.py:1880 +#: core/models.py:1914 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "为反馈指定了错误的操作:{action}!" -#: core/models.py:1888 +#: core/models.py:1922 msgid "you cannot feedback an order which is not received" msgstr "您不能反馈未收到的订单" -#: core/models.py:1923 +#: core/models.py:1957 msgid "download" msgstr "下载" -#: core/models.py:1924 +#: core/models.py:1958 msgid "downloads" msgstr "下载" -#: core/models.py:1932 +#: core/models.py:1966 msgid "you can not download a digital asset for a non-finished order" msgstr "您无法下载未完成订单的数字资产" -#: core/models.py:1962 +#: core/models.py:1996 msgid "user-provided comments about their experience with the product" msgstr "用户提供的产品使用体验评论" -#: core/models.py:1963 +#: core/models.py:1997 msgid "feedback comments" msgstr "反馈意见" -#: core/models.py:1970 -msgid "references the specific product in an order that this feedback is about" +#: core/models.py:2004 +msgid "" +"references the specific product in an order that this feedback is about" msgstr "引用该反馈意见涉及的订单中的具体产品" -#: core/models.py:1971 +#: core/models.py:2005 msgid "related order product" msgstr "相关订购产品" -#: core/models.py:1976 +#: core/models.py:2010 msgid "user-assigned rating for the product" msgstr "用户对产品的评分" -#: core/models.py:1977 +#: core/models.py:2011 msgid "product rating" msgstr "产品评级" -#: core/models.py:1987 +#: core/models.py:2021 msgid "feedback" msgstr "反馈意见" @@ -2049,7 +2074,7 @@ msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "您必须提供评论、评级和订单产品 uuid 才能添加反馈。" -#: core/signals.py:63 +#: core/signals.py:62 msgid "error during promocode creation: {e!s}" msgstr "创建促销代码时出错:{e!s}" @@ -2081,12 +2106,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!我们很高兴地通知您,我们已将您的订单付诸实施。以下是您的订单详情:" #: core/templates/digital_order_created_email.html:112 #: core/templates/digital_order_delivered_email.html:110 @@ -2109,8 +2131,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 联系我们的支持人员。" #: core/templates/digital_order_created_email.html:133 #, python-format @@ -2170,8 +2191,7 @@ msgstr "钥匙" #: core/templates/shipped_order_created_email.html:101 #: 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 "感谢您的订购!我们很高兴确认您的购买。以下是您的订单详情:" @@ -2208,17 +2228,17 @@ msgstr "需要数据和超时" msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "超时值无效,必须介于 0 和 216000 秒之间" -#: core/utils/emailing.py:21 +#: core/utils/emailing.py:24 #, python-brace-format msgid "{config.PROJECT_NAME} | contact us initiated" msgstr "{config.PROJECT_NAME}| 联系我们" -#: core/utils/emailing.py:60 +#: core/utils/emailing.py:63 #, python-brace-format msgid "{config.PROJECT_NAME} | order confirmation" msgstr "{config.PROJECT_NAME}| 订单确认" -#: core/utils/emailing.py:95 +#: core/utils/emailing.py:98 #, python-brace-format msgid "{config.PROJECT_NAME} | order delivered" msgstr "{config.PROJECT_NAME} | 订单已送达" @@ -2240,15 +2260,15 @@ msgstr "图像尺寸不应超过 w{max_width} x h{max_height} 像素!" msgid "invalid phone number format" msgstr "电话号码格式无效" -#: core/views.py:475 +#: core/views.py:480 msgid "you can only download the digital asset once" msgstr "您只能下载一次数字资产" -#: core/views.py:528 +#: core/views.py:538 msgid "favicon not found" msgstr "未找到 favicon" -#: core/viewsets.py:1099 +#: core/viewsets.py:1316 #, python-brace-format msgid "Geocoding error: {e}" msgstr "地理编码错误:{e}" diff --git a/core/migrations/0037_product_sku.py b/core/migrations/0037_product_sku.py new file mode 100644 index 00000000..c1e349ee --- /dev/null +++ b/core/migrations/0037_product_sku.py @@ -0,0 +1,25 @@ +# Generated by Django 5.2 on 2025-09-01 17:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("core", "0036_vendor_b2b_auth_token_vendor_users"), + ] + + operations = [ + migrations.AddField( + model_name="product", + name="sku", + field=models.CharField( + blank=True, + db_index=True, + default=None, + help_text="stock keeping unit for this product", + max_length=8, + null=True, + verbose_name="SKU", + ), + ), + ] diff --git a/core/migrations/0038_backfill_product_sku.py b/core/migrations/0038_backfill_product_sku.py new file mode 100644 index 00000000..44abefde --- /dev/null +++ b/core/migrations/0038_backfill_product_sku.py @@ -0,0 +1,44 @@ +from django.db import migrations, transaction, IntegrityError + + +def generate_unique_sku(Product, make_candidate, taken): + while True: + candidate = make_candidate() + if candidate in taken: + continue + if not Product.objects.filter(sku=candidate).exists(): + taken.add(candidate) + return candidate + + +def backfill_sku(apps, schema_editor): + Product = apps.get_model("core", "Product") + from core.utils import generate_human_readable_id as make_candidate + + taken = set(Product.objects.exclude(sku__isnull=True).values_list("sku", flat=True)) + + qs = Product.objects.filter(sku__isnull=True) + BATCH = 500 + + start = 0 + count = qs.count() + while start < count: + with transaction.atomic(): + for product in qs.order_by("pk")[start : start + BATCH]: + product.sku = generate_unique_sku(Product, make_candidate, taken) + product.save(update_fields=["sku"]) + start += BATCH + + +def noop(apps, schema_editor): + pass + + +class Migration(migrations.Migration): + dependencies = [ + ("core", "0037_product_sku"), + ] + + operations = [ + migrations.RunPython(backfill_sku, reverse_code=noop), + ] diff --git a/core/migrations/0039_alter_product_sku.py b/core/migrations/0039_alter_product_sku.py new file mode 100644 index 00000000..c8bc0ba6 --- /dev/null +++ b/core/migrations/0039_alter_product_sku.py @@ -0,0 +1,25 @@ +# Generated by Django 5.2 on 2025-09-01 17:36 + +import core.utils +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("core", "0038_backfill_product_sku"), + ] + + operations = [ + migrations.AlterField( + model_name="product", + name="sku", + field=models.CharField( + default=core.utils.generate_human_readable_id, + help_text="stock keeping unit for this product", + max_length=8, + unique=True, + verbose_name="SKU", + ), + ), + ] diff --git a/core/models.py b/core/models.py index b90e445d..b31a341b 100644 --- a/core/models.py +++ b/core/models.py @@ -4,8 +4,6 @@ import logging from typing import Any, Optional, Self from constance import config -from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.models import ContentType from django.contrib.gis.db.models import PointField from django.contrib.postgres.indexes import GinIndex from django.core.cache import cache @@ -32,8 +30,6 @@ from django.db.models import ( PositiveIntegerField, QuerySet, TextField, - UUIDField, - URLField, ) from django.db.models.indexes import Index from django.http import Http404 @@ -680,6 +676,13 @@ class Product(ExportModelOperationsMixin("product"), NiceModel): # type: ignore null=True, verbose_name=_("Slug"), ) + sku = CharField( + help_text=_("stock keeping unit for this product"), + verbose_name=_("SKU"), + max_length=8, + unique=True, + default=generate_human_readable_id, + ) objects: ProductManager = ProductManager() @@ -2017,20 +2020,3 @@ class Feedback(ExportModelOperationsMixin("feedback"), NiceModel): # type: igno class Meta: verbose_name = _("feedback") verbose_name_plural = _("feedbacks") - - -class SeoMeta(NiceModel): - uuid = None - content_type = ForeignKey(ContentType, on_delete=CASCADE) - object_id = UUIDField() - content_object = GenericForeignKey("content_type", "object_id") - - meta_title = CharField(max_length=70, blank=True) - meta_description = CharField(max_length=180, blank=True) - canonical_override = URLField(blank=True) - robots = CharField(max_length=40, blank=True, default="index,follow") - social_image = ImageField(upload_to="seo/", blank=True, null=True) - extras = JSONField(blank=True, null=True) - - class Meta: - unique_together = ("content_type", "object_id") diff --git a/core/utils/emailing.py b/core/utils/emailing.py index d7f26c55..ddd7aef3 100644 --- a/core/utils/emailing.py +++ b/core/utils/emailing.py @@ -50,7 +50,7 @@ def send_order_created_email(order_pk: str) -> tuple[bool, str]: except Order.DoesNotExist: return False, f"Order not found with the given pk: {order_pk}" - if not order.user: + if not any([order.user, order.attributes.get("email", None), order.attributes.get("customer_email", None)]): return False, f"Order's user not found with the given pk: {order_pk}" activate(order.user.language) diff --git a/evibes/locale/ar_AR/LC_MESSAGES/django.mo b/evibes/locale/ar_AR/LC_MESSAGES/django.mo index 401478ad..b7adaf62 100644 Binary files a/evibes/locale/ar_AR/LC_MESSAGES/django.mo and b/evibes/locale/ar_AR/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/ar_AR/LC_MESSAGES/django.po b/evibes/locale/ar_AR/LC_MESSAGES/django.po index 14eecf75..00bc3263 100644 --- a/evibes/locale/ar_AR/LC_MESSAGES/django.po +++ b/evibes/locale/ar_AR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "كيان لتخزين بيانات الإعلانات" msgid "An entity for storing analytics data" msgstr "كيان لتخزين بيانات التحليلات" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "الخيارات العامة" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "خيارات البريد الإلكتروني" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "خيارات بوابة الدفع" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "خيارات الميزات" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "خيارات تحسين محركات البحث" diff --git a/evibes/locale/cs_CZ/LC_MESSAGES/django.mo b/evibes/locale/cs_CZ/LC_MESSAGES/django.mo index e6d117e7..892ea057 100644 Binary files a/evibes/locale/cs_CZ/LC_MESSAGES/django.mo and b/evibes/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/cs_CZ/LC_MESSAGES/django.po b/evibes/locale/cs_CZ/LC_MESSAGES/django.po index 068ab567..43a849e6 100644 --- a/evibes/locale/cs_CZ/LC_MESSAGES/django.po +++ b/evibes/locale/cs_CZ/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "Subjekt pro ukládání dat inzerátů" msgid "An entity for storing analytics data" msgstr "Subjekt pro ukládání analytických dat" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "Obecné možnosti" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Možnosti e-mailu" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Možnosti platební brány" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Možnosti funkcí" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "Možnosti SEO" diff --git a/evibes/locale/da_DK/LC_MESSAGES/django.mo b/evibes/locale/da_DK/LC_MESSAGES/django.mo index 3c8570fa..8082f9e5 100644 Binary files a/evibes/locale/da_DK/LC_MESSAGES/django.mo and b/evibes/locale/da_DK/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/da_DK/LC_MESSAGES/django.po b/evibes/locale/da_DK/LC_MESSAGES/django.po index 617b3c79..0ce81ed4 100644 --- a/evibes/locale/da_DK/LC_MESSAGES/django.po +++ b/evibes/locale/da_DK/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "En enhed til lagring af annonceringsdata" msgid "An entity for storing analytics data" msgstr "En enhed til lagring af analysedata" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "Generelle indstillinger" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Indstillinger for e-mail" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Muligheder for betalingsgateway" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Funktioner Indstillinger" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "SEO-muligheder" diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.mo b/evibes/locale/de_DE/LC_MESSAGES/django.mo index b53a8e0f..dd104e4c 100644 Binary files a/evibes/locale/de_DE/LC_MESSAGES/django.mo and b/evibes/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.po b/evibes/locale/de_DE/LC_MESSAGES/django.po index fbd0b63c..f572044e 100644 --- a/evibes/locale/de_DE/LC_MESSAGES/django.po +++ b/evibes/locale/de_DE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "Eine Einheit zur Speicherung von Werbedaten" msgid "An entity for storing analytics data" msgstr "Eine Einheit zur Speicherung von Analysedaten" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "Allgemeine Optionen" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "E-Mail-Optionen" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Zahlungs-Gateway-Optionen" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Merkmale Optionen" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "SEO-Optionen" diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.mo b/evibes/locale/en_GB/LC_MESSAGES/django.mo index 467d627b..75243592 100644 Binary files a/evibes/locale/en_GB/LC_MESSAGES/django.mo and b/evibes/locale/en_GB/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.po b/evibes/locale/en_GB/LC_MESSAGES/django.po index 5b4fbabf..401a8dd1 100644 --- a/evibes/locale/en_GB/LC_MESSAGES/django.po +++ b/evibes/locale/en_GB/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 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -117,23 +117,23 @@ msgstr "An entity for storing advertisiment data" msgid "An entity for storing analytics data" msgstr "An entity for storing analytics data" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "General Options" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Email Options" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Payment Gateway Options" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Features Options" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "SEO Options" diff --git a/evibes/locale/en_US/LC_MESSAGES/django.mo b/evibes/locale/en_US/LC_MESSAGES/django.mo index 04719d61..ec5434b1 100644 Binary files a/evibes/locale/en_US/LC_MESSAGES/django.mo and b/evibes/locale/en_US/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/en_US/LC_MESSAGES/django.po b/evibes/locale/en_US/LC_MESSAGES/django.po index 4aba66ba..29b9056a 100644 --- a/evibes/locale/en_US/LC_MESSAGES/django.po +++ b/evibes/locale/en_US/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "An entity for storing advertisiment data" msgid "An entity for storing analytics data" msgstr "An entity for storing analytics data" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "General Options" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Email Options" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Payment Gateway Options" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Features Options" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "SEO Options" diff --git a/evibes/locale/es_ES/LC_MESSAGES/django.mo b/evibes/locale/es_ES/LC_MESSAGES/django.mo index 7f49ac2b..5a437994 100644 Binary files a/evibes/locale/es_ES/LC_MESSAGES/django.mo and b/evibes/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/es_ES/LC_MESSAGES/django.po b/evibes/locale/es_ES/LC_MESSAGES/django.po index 0ceb55a6..78a0afde 100644 --- a/evibes/locale/es_ES/LC_MESSAGES/django.po +++ b/evibes/locale/es_ES/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "Una entidad para almacenar datos publicitarios" msgid "An entity for storing analytics data" msgstr "Una entidad para almacenar datos analíticos" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "Opciones generales" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Opciones de correo electrónico" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Opciones de pasarela de pago" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Características Opciones" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "Opciones SEO" diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.mo b/evibes/locale/fr_FR/LC_MESSAGES/django.mo index 0152adfe..f35c86ba 100644 Binary files a/evibes/locale/fr_FR/LC_MESSAGES/django.mo and b/evibes/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.po b/evibes/locale/fr_FR/LC_MESSAGES/django.po index 29e11c2b..9d48a77f 100644 --- a/evibes/locale/fr_FR/LC_MESSAGES/django.po +++ b/evibes/locale/fr_FR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "Une entité pour stocker des données publicitaires" msgid "An entity for storing analytics data" msgstr "Une entité pour stocker des données analytiques" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "Options générales" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Options de courrier électronique" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Options de passerelle de paiement" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Caractéristiques Options" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "Options de référencement" diff --git a/evibes/locale/hi_IN/LC_MESSAGES/django.mo b/evibes/locale/hi_IN/LC_MESSAGES/django.mo index 47c1f925..980937eb 100644 Binary files a/evibes/locale/hi_IN/LC_MESSAGES/django.mo and b/evibes/locale/hi_IN/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/hi_IN/LC_MESSAGES/django.po b/evibes/locale/hi_IN/LC_MESSAGES/django.po index 75d54335..bc48fb0c 100644 --- a/evibes/locale/hi_IN/LC_MESSAGES/django.po +++ b/evibes/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 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -116,23 +116,23 @@ msgstr "" msgid "An entity for storing analytics data" msgstr "" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "" diff --git a/evibes/locale/it_IT/LC_MESSAGES/django.mo b/evibes/locale/it_IT/LC_MESSAGES/django.mo index 1b5bccda..97779bb0 100644 Binary files a/evibes/locale/it_IT/LC_MESSAGES/django.mo and b/evibes/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/it_IT/LC_MESSAGES/django.po b/evibes/locale/it_IT/LC_MESSAGES/django.po index 5a19bfb8..6f73d542 100644 --- a/evibes/locale/it_IT/LC_MESSAGES/django.po +++ b/evibes/locale/it_IT/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "Un'entità per la memorizzazione dei dati pubblicitari" msgid "An entity for storing analytics data" msgstr "Un'entità per la memorizzazione dei dati analitici" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "Opzioni generali" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Opzioni e-mail" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Opzioni di gateway di pagamento" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Caratteristiche Opzioni" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "Opzioni SEO" diff --git a/evibes/locale/ja_JP/LC_MESSAGES/django.mo b/evibes/locale/ja_JP/LC_MESSAGES/django.mo index 992ead43..cf425c05 100644 Binary files a/evibes/locale/ja_JP/LC_MESSAGES/django.mo and b/evibes/locale/ja_JP/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/ja_JP/LC_MESSAGES/django.po b/evibes/locale/ja_JP/LC_MESSAGES/django.po index 00db5aac..83bf798b 100644 --- a/evibes/locale/ja_JP/LC_MESSAGES/django.po +++ b/evibes/locale/ja_JP/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "広告データを保存するエンティティ" msgid "An entity for storing analytics data" msgstr "分析データを保存するエンティティ" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "一般オプション" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Eメールオプション" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "ペイメントゲートウェイオプション" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "機能オプション" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "SEOオプション" diff --git a/evibes/locale/kk_KZ/LC_MESSAGES/django.mo b/evibes/locale/kk_KZ/LC_MESSAGES/django.mo index 47c1f925..980937eb 100644 Binary files a/evibes/locale/kk_KZ/LC_MESSAGES/django.mo and b/evibes/locale/kk_KZ/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/kk_KZ/LC_MESSAGES/django.po b/evibes/locale/kk_KZ/LC_MESSAGES/django.po index 75d54335..bc48fb0c 100644 --- a/evibes/locale/kk_KZ/LC_MESSAGES/django.po +++ b/evibes/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 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -116,23 +116,23 @@ msgstr "" msgid "An entity for storing analytics data" msgstr "" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "" diff --git a/evibes/locale/nl_NL/LC_MESSAGES/django.mo b/evibes/locale/nl_NL/LC_MESSAGES/django.mo index b51078fc..3c705fe9 100644 Binary files a/evibes/locale/nl_NL/LC_MESSAGES/django.mo and b/evibes/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/nl_NL/LC_MESSAGES/django.po b/evibes/locale/nl_NL/LC_MESSAGES/django.po index 60e90e40..a7eae046 100644 --- a/evibes/locale/nl_NL/LC_MESSAGES/django.po +++ b/evibes/locale/nl_NL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "Een entiteit voor het opslaan van adverteerdersgegevens" msgid "An entity for storing analytics data" msgstr "Een entiteit voor het opslaan van analytische gegevens" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "Algemene opties" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "E-mailopties" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Opties voor betalingsgateways" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Functies Opties" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "SEO Opties" diff --git a/evibes/locale/pl_PL/LC_MESSAGES/django.mo b/evibes/locale/pl_PL/LC_MESSAGES/django.mo index 17cfa98f..216cd237 100644 Binary files a/evibes/locale/pl_PL/LC_MESSAGES/django.mo and b/evibes/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/pl_PL/LC_MESSAGES/django.po b/evibes/locale/pl_PL/LC_MESSAGES/django.po index 50f7619c..5cd9694e 100644 --- a/evibes/locale/pl_PL/LC_MESSAGES/django.po +++ b/evibes/locale/pl_PL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "Jednostka do przechowywania danych reklamowych" msgid "An entity for storing analytics data" msgstr "Jednostka do przechowywania danych analitycznych" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "Opcje ogólne" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Opcje e-mail" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Opcje bramki płatności" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Opcje funkcji" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "Opcje SEO" diff --git a/evibes/locale/pt_BR/LC_MESSAGES/django.mo b/evibes/locale/pt_BR/LC_MESSAGES/django.mo index 8c3c4184..58079eee 100644 Binary files a/evibes/locale/pt_BR/LC_MESSAGES/django.mo and b/evibes/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/pt_BR/LC_MESSAGES/django.po b/evibes/locale/pt_BR/LC_MESSAGES/django.po index 0dc4779e..6bbbecc0 100644 --- a/evibes/locale/pt_BR/LC_MESSAGES/django.po +++ b/evibes/locale/pt_BR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "Uma entidade para armazenar dados de propaganda" msgid "An entity for storing analytics data" msgstr "Uma entidade para armazenar dados analíticos" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "Opções gerais" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Opções de e-mail" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Opções de gateway de pagamento" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Opções de recursos" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "Opções de SEO" diff --git a/evibes/locale/ro_RO/LC_MESSAGES/django.mo b/evibes/locale/ro_RO/LC_MESSAGES/django.mo index 6f0b3b4b..f7cc86a9 100644 Binary files a/evibes/locale/ro_RO/LC_MESSAGES/django.mo and b/evibes/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/ro_RO/LC_MESSAGES/django.po b/evibes/locale/ro_RO/LC_MESSAGES/django.po index 4fc0b953..7241af63 100644 --- a/evibes/locale/ro_RO/LC_MESSAGES/django.po +++ b/evibes/locale/ro_RO/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "O entitate pentru stocarea datelor privind publicitatea" msgid "An entity for storing analytics data" msgstr "O entitate pentru stocarea datelor analitice" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "Opțiuni generale" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Opțiuni de e-mail" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Opțiuni pentru portalul de plăți" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Caracteristici Opțiuni" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "Opțiuni SEO" diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.mo b/evibes/locale/ru_RU/LC_MESSAGES/django.mo index b70b4f28..1302e2e6 100644 Binary files a/evibes/locale/ru_RU/LC_MESSAGES/django.mo and b/evibes/locale/ru_RU/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.po b/evibes/locale/ru_RU/LC_MESSAGES/django.po index 57270c24..e24154d8 100644 --- a/evibes/locale/ru_RU/LC_MESSAGES/django.po +++ b/evibes/locale/ru_RU/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "Устройство для хранения данных о рекла msgid "An entity for storing analytics data" msgstr "Сущность для хранения аналитических данных" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "Общие параметры" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "Параметры электронной почты" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "Варианты платежных шлюзов" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "Особенности Опции" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "Параметры SEO" diff --git a/evibes/locale/zh_Hans/LC_MESSAGES/django.mo b/evibes/locale/zh_Hans/LC_MESSAGES/django.mo index ad32b734..2f98b119 100644 Binary files a/evibes/locale/zh_Hans/LC_MESSAGES/django.mo and b/evibes/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/zh_Hans/LC_MESSAGES/django.po b/evibes/locale/zh_Hans/LC_MESSAGES/django.po index 5fc42118..a11fd4ce 100644 --- a/evibes/locale/zh_Hans/LC_MESSAGES/django.po +++ b/evibes/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-18 08:39+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -113,23 +113,23 @@ msgstr "存储广告数据的实体" msgid "An entity for storing analytics data" msgstr "存储分析数据的实体" -#: evibes/settings/constance.py:54 +#: evibes/settings/constance.py:55 msgid "General Options" msgstr "一般选项" -#: evibes/settings/constance.py:62 +#: evibes/settings/constance.py:63 msgid "Email Options" msgstr "电子邮件选项" -#: evibes/settings/constance.py:71 +#: evibes/settings/constance.py:72 msgid "Payment Gateway Options" msgstr "支付网关选项" -#: evibes/settings/constance.py:78 +#: evibes/settings/constance.py:79 msgid "Features Options" msgstr "功能选项" -#: evibes/settings/constance.py:85 +#: evibes/settings/constance.py:86 msgid "SEO Options" msgstr "搜索引擎优化选项" diff --git a/evibes/settings/base.py b/evibes/settings/base.py index 651e850c..40a37b19 100644 --- a/evibes/settings/base.py +++ b/evibes/settings/base.py @@ -2,7 +2,7 @@ import logging from os import getenv, name from pathlib import Path -EVIBES_VERSION = "2.9.2" +EVIBES_VERSION = "2.9.3" BASE_DIR = Path(__file__).resolve().parent.parent.parent diff --git a/payments/locale/ar_AR/LC_MESSAGES/django.mo b/payments/locale/ar_AR/LC_MESSAGES/django.mo index fc2d8807..38cfcbf2 100644 Binary files a/payments/locale/ar_AR/LC_MESSAGES/django.mo and b/payments/locale/ar_AR/LC_MESSAGES/django.mo differ diff --git a/payments/locale/ar_AR/LC_MESSAGES/django.po b/payments/locale/ar_AR/LC_MESSAGES/django.po index 736fd372..5d8bb9dc 100644 --- a/payments/locale/ar_AR/LC_MESSAGES/django.po +++ b/payments/locale/ar_AR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "تفاصيل المعالجة" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"يجب أن يتناسب مبلغ المعاملة مع " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"يجب أن يتناسب مبلغ المعاملة مع {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" #: payments/models.py:59 msgid "balance" diff --git a/payments/locale/cs_CZ/LC_MESSAGES/django.mo b/payments/locale/cs_CZ/LC_MESSAGES/django.mo index 32cd1d95..5f49a4b0 100644 Binary files a/payments/locale/cs_CZ/LC_MESSAGES/django.mo and b/payments/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/payments/locale/cs_CZ/LC_MESSAGES/django.po b/payments/locale/cs_CZ/LC_MESSAGES/django.po index 7cb81ebe..8b3575a4 100644 --- a/payments/locale/cs_CZ/LC_MESSAGES/django.po +++ b/payments/locale/cs_CZ/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Podrobnosti o zpracování" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"Částka transakce se musí vejít do rozmezí " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." +"Částka transakce se musí vejít do rozmezí {config.PAYMENT_GATEWAY_MINIMUM}-" +"{config.PAYMENT_GATEWAY_MAXIMUM}." #: payments/models.py:59 msgid "balance" diff --git a/payments/locale/da_DK/LC_MESSAGES/django.mo b/payments/locale/da_DK/LC_MESSAGES/django.mo index e7504b30..8c2f717a 100644 Binary files a/payments/locale/da_DK/LC_MESSAGES/django.mo and b/payments/locale/da_DK/LC_MESSAGES/django.mo differ diff --git a/payments/locale/da_DK/LC_MESSAGES/django.po b/payments/locale/da_DK/LC_MESSAGES/django.po index 0bb3bc3c..98fe705f 100644 --- a/payments/locale/da_DK/LC_MESSAGES/django.po +++ b/payments/locale/da_DK/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Behandling af detaljer" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"Transaktionsbeløbet skal passe ind i " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." +"Transaktionsbeløbet skal passe ind i {config.PAYMENT_GATEWAY_MINIMUM}-" +"{config.PAYMENT_GATEWAY_MAXIMUM}." #: payments/models.py:59 msgid "balance" diff --git a/payments/locale/de_DE/LC_MESSAGES/django.mo b/payments/locale/de_DE/LC_MESSAGES/django.mo index b2262d8f..78bb09a3 100644 Binary files a/payments/locale/de_DE/LC_MESSAGES/django.mo and b/payments/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/payments/locale/de_DE/LC_MESSAGES/django.po b/payments/locale/de_DE/LC_MESSAGES/django.po index a8c78ad8..1a156dc4 100644 --- a/payments/locale/de_DE/LC_MESSAGES/django.po +++ b/payments/locale/de_DE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Details zur Verarbeitung" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"Der Transaktionsbetrag muss zwischen " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM} liegen" +"Der Transaktionsbetrag muss zwischen {config.PAYMENT_GATEWAY_MINIMUM}-" +"{config.PAYMENT_GATEWAY_MAXIMUM} liegen" #: payments/models.py:59 msgid "balance" diff --git a/payments/locale/en_GB/LC_MESSAGES/django.mo b/payments/locale/en_GB/LC_MESSAGES/django.mo index c40f51f0..cd2b67e2 100644 Binary files a/payments/locale/en_GB/LC_MESSAGES/django.mo and b/payments/locale/en_GB/LC_MESSAGES/django.mo differ diff --git a/payments/locale/en_GB/LC_MESSAGES/django.po b/payments/locale/en_GB/LC_MESSAGES/django.po index 2268b1e3..fe0443d9 100644 --- a/payments/locale/en_GB/LC_MESSAGES/django.po +++ b/payments/locale/en_GB/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 Egor "fureunoir" Gorbunov # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -56,11 +56,11 @@ msgstr "Processing details" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"Transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"Transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" #: payments/models.py:59 msgid "balance" diff --git a/payments/locale/en_US/LC_MESSAGES/django.mo b/payments/locale/en_US/LC_MESSAGES/django.mo index caeca9cb..5e5508f6 100644 Binary files a/payments/locale/en_US/LC_MESSAGES/django.mo and b/payments/locale/en_US/LC_MESSAGES/django.mo differ diff --git a/payments/locale/en_US/LC_MESSAGES/django.po b/payments/locale/en_US/LC_MESSAGES/django.po index 4afec807..a5080ff3 100644 --- a/payments/locale/en_US/LC_MESSAGES/django.po +++ b/payments/locale/en_US/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Processing details" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"Transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"Transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" #: payments/models.py:59 msgid "balance" diff --git a/payments/locale/es_ES/LC_MESSAGES/django.mo b/payments/locale/es_ES/LC_MESSAGES/django.mo index 8d3f7a8a..90fd4c13 100644 Binary files a/payments/locale/es_ES/LC_MESSAGES/django.mo and b/payments/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/payments/locale/es_ES/LC_MESSAGES/django.po b/payments/locale/es_ES/LC_MESSAGES/django.po index 22e9be2d..516e90fe 100644 --- a/payments/locale/es_ES/LC_MESSAGES/django.po +++ b/payments/locale/es_ES/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Detalles del proceso" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"El importe de la transacción debe ajustarse a " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"El importe de la transacción debe ajustarse a {config." +"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/models.py:59 msgid "balance" @@ -95,7 +95,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(contact_email)s." msgstr "" -"Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro servicio de asistencia en\n" +"Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro " +"servicio de asistencia en\n" " %(contact_email)s." #: payments/templates/balance_deposit_email.html:100 diff --git a/payments/locale/fr_FR/LC_MESSAGES/django.mo b/payments/locale/fr_FR/LC_MESSAGES/django.mo index b154dd0c..5dde8497 100644 Binary files a/payments/locale/fr_FR/LC_MESSAGES/django.mo and b/payments/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/payments/locale/fr_FR/LC_MESSAGES/django.po b/payments/locale/fr_FR/LC_MESSAGES/django.po index faafb50b..3cb04288 100644 --- a/payments/locale/fr_FR/LC_MESSAGES/django.po +++ b/payments/locale/fr_FR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Détails du traitement" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"Le montant de la transaction doit être compris entre " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." +"Le montant de la transaction doit être compris entre {config." +"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." #: payments/models.py:59 msgid "balance" @@ -95,7 +95,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(contact_email)s." msgstr "" -"Si vous avez des questions, n'hésitez pas à contacter notre service d'assistance à l'adresse suivante\n" +"Si vous avez des questions, n'hésitez pas à contacter notre service " +"d'assistance à l'adresse suivante\n" " %(contact_email)s." #: payments/templates/balance_deposit_email.html:100 @@ -109,8 +110,7 @@ msgstr "Tous droits réservés" #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" -msgstr "" -"Il est nécessaire de disposer d'un fournisseur pour obtenir des tarifs" +msgstr "Il est nécessaire de disposer d'un fournisseur pour obtenir des tarifs" #: payments/utils/__init__.py:15 #, python-brace-format diff --git a/payments/locale/hi_IN/LC_MESSAGES/django.mo b/payments/locale/hi_IN/LC_MESSAGES/django.mo index 47c1f925..980937eb 100644 Binary files a/payments/locale/hi_IN/LC_MESSAGES/django.mo and b/payments/locale/hi_IN/LC_MESSAGES/django.mo differ diff --git a/payments/locale/hi_IN/LC_MESSAGES/django.po b/payments/locale/hi_IN/LC_MESSAGES/django.po index 879b9332..f2ab33b7 100644 --- a/payments/locale/hi_IN/LC_MESSAGES/django.po +++ b/payments/locale/hi_IN/LC_MESSAGES/django.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/payments/locale/it_IT/LC_MESSAGES/django.mo b/payments/locale/it_IT/LC_MESSAGES/django.mo index 06bc4086..092e9d0b 100644 Binary files a/payments/locale/it_IT/LC_MESSAGES/django.mo and b/payments/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/payments/locale/it_IT/LC_MESSAGES/django.po b/payments/locale/it_IT/LC_MESSAGES/django.po index f3998be7..8963d2bc 100644 --- a/payments/locale/it_IT/LC_MESSAGES/django.po +++ b/payments/locale/it_IT/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Dettagli di elaborazione" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"L'importo della transazione deve rientrare in " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"L'importo della transazione deve rientrare in {config." +"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/models.py:59 msgid "balance" @@ -95,7 +95,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(contact_email)s." msgstr "" -"In caso di domande, non esitate a contattare il nostro supporto all'indirizzo\n" +"In caso di domande, non esitate a contattare il nostro supporto " +"all'indirizzo\n" " %(contact_email)s." #: payments/templates/balance_deposit_email.html:100 diff --git a/payments/locale/ja_JP/LC_MESSAGES/django.mo b/payments/locale/ja_JP/LC_MESSAGES/django.mo index 595b2e3e..0a3cf704 100644 Binary files a/payments/locale/ja_JP/LC_MESSAGES/django.mo and b/payments/locale/ja_JP/LC_MESSAGES/django.mo differ diff --git a/payments/locale/ja_JP/LC_MESSAGES/django.po b/payments/locale/ja_JP/LC_MESSAGES/django.po index 8eecbd21..0594b927 100644 --- a/payments/locale/ja_JP/LC_MESSAGES/django.po +++ b/payments/locale/ja_JP/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,10 +52,11 @@ msgstr "加工内容" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"取引金額は{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}に収まる必要があります。" +"取引金額は{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}に" +"収まる必要があります。" #: payments/models.py:59 msgid "balance" diff --git a/payments/locale/kk_KZ/LC_MESSAGES/django.mo b/payments/locale/kk_KZ/LC_MESSAGES/django.mo index 47c1f925..980937eb 100644 Binary files a/payments/locale/kk_KZ/LC_MESSAGES/django.mo and b/payments/locale/kk_KZ/LC_MESSAGES/django.mo differ diff --git a/payments/locale/kk_KZ/LC_MESSAGES/django.po b/payments/locale/kk_KZ/LC_MESSAGES/django.po index 879b9332..f2ab33b7 100644 --- a/payments/locale/kk_KZ/LC_MESSAGES/django.po +++ b/payments/locale/kk_KZ/LC_MESSAGES/django.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/payments/locale/nl_NL/LC_MESSAGES/django.mo b/payments/locale/nl_NL/LC_MESSAGES/django.mo index 9788cbe8..cbe0dc0a 100644 Binary files a/payments/locale/nl_NL/LC_MESSAGES/django.mo and b/payments/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/payments/locale/nl_NL/LC_MESSAGES/django.po b/payments/locale/nl_NL/LC_MESSAGES/django.po index b047c098..765c143b 100644 --- a/payments/locale/nl_NL/LC_MESSAGES/django.po +++ b/payments/locale/nl_NL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Verwerkingsdetails" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"Het transactiebedrag moet passen binnen " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." +"Het transactiebedrag moet passen binnen {config.PAYMENT_GATEWAY_MINIMUM}-" +"{config.PAYMENT_GATEWAY_MAXIMUM}." #: payments/models.py:59 msgid "balance" diff --git a/payments/locale/pl_PL/LC_MESSAGES/django.mo b/payments/locale/pl_PL/LC_MESSAGES/django.mo index 0e386c06..f8b22010 100644 Binary files a/payments/locale/pl_PL/LC_MESSAGES/django.mo and b/payments/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/payments/locale/pl_PL/LC_MESSAGES/django.po b/payments/locale/pl_PL/LC_MESSAGES/django.po index f59fb8fd..adf51096 100644 --- a/payments/locale/pl_PL/LC_MESSAGES/django.po +++ b/payments/locale/pl_PL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Szczegóły przetwarzania" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"Kwota transakcji musi mieścić się w przedziale " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." +"Kwota transakcji musi mieścić się w przedziale {config." +"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." #: payments/models.py:59 msgid "balance" @@ -95,7 +95,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(contact_email)s." msgstr "" -"Jeśli masz jakiekolwiek pytania, skontaktuj się z naszym działem pomocy technicznej pod adresem\n" +"Jeśli masz jakiekolwiek pytania, skontaktuj się z naszym działem pomocy " +"technicznej pod adresem\n" " %(contact_email)s." #: payments/templates/balance_deposit_email.html:100 diff --git a/payments/locale/pt_BR/LC_MESSAGES/django.mo b/payments/locale/pt_BR/LC_MESSAGES/django.mo index 6ec393d6..f34cddc7 100644 Binary files a/payments/locale/pt_BR/LC_MESSAGES/django.mo and b/payments/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/payments/locale/pt_BR/LC_MESSAGES/django.po b/payments/locale/pt_BR/LC_MESSAGES/django.po index 9a078627..d6682d32 100644 --- a/payments/locale/pt_BR/LC_MESSAGES/django.po +++ b/payments/locale/pt_BR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Detalhes do processamento" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"O valor da transação deve se enquadrar em " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"O valor da transação deve se enquadrar em {config.PAYMENT_GATEWAY_MINIMUM}-" +"{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/models.py:59 msgid "balance" diff --git a/payments/locale/ro_RO/LC_MESSAGES/django.mo b/payments/locale/ro_RO/LC_MESSAGES/django.mo index 06d0094e..089138e0 100644 Binary files a/payments/locale/ro_RO/LC_MESSAGES/django.mo and b/payments/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/payments/locale/ro_RO/LC_MESSAGES/django.po b/payments/locale/ro_RO/LC_MESSAGES/django.po index 9a98693c..20f2c85e 100644 --- a/payments/locale/ro_RO/LC_MESSAGES/django.po +++ b/payments/locale/ro_RO/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Detalii de prelucrare" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"Valoarea tranzacției trebuie să se încadreze în " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"Valoarea tranzacției trebuie să se încadreze în {config." +"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/models.py:59 msgid "balance" diff --git a/payments/locale/ru_RU/LC_MESSAGES/django.mo b/payments/locale/ru_RU/LC_MESSAGES/django.mo index b22307d9..597e41f8 100644 Binary files a/payments/locale/ru_RU/LC_MESSAGES/django.mo and b/payments/locale/ru_RU/LC_MESSAGES/django.mo differ diff --git a/payments/locale/ru_RU/LC_MESSAGES/django.po b/payments/locale/ru_RU/LC_MESSAGES/django.po index ce969f65..a2265e74 100644 --- a/payments/locale/ru_RU/LC_MESSAGES/django.po +++ b/payments/locale/ru_RU/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "Детали обработки" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"Сумма транзакции должна вписываться в " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"Сумма транзакции должна вписываться в {config.PAYMENT_GATEWAY_MINIMUM}-" +"{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/models.py:59 msgid "balance" diff --git a/payments/locale/zh_Hans/LC_MESSAGES/django.mo b/payments/locale/zh_Hans/LC_MESSAGES/django.mo index 46df8adf..1dbdeb22 100644 Binary files a/payments/locale/zh_Hans/LC_MESSAGES/django.mo and b/payments/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/payments/locale/zh_Hans/LC_MESSAGES/django.po b/payments/locale/zh_Hans/LC_MESSAGES/django.po index 2c9e8f9e..a39be376 100644 --- a/payments/locale/zh_Hans/LC_MESSAGES/django.po +++ b/payments/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-03 18:33+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,11 +52,11 @@ msgstr "处理细节" #: payments/models.py:37 #, python-brace-format msgid "" -"transaction amount must fit into " -"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM}" msgstr "" -"交易金额必须符合 {config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM} " -"的规定。" +"交易金额必须符合 {config.PAYMENT_GATEWAY_MINIMUM}-{config." +"PAYMENT_GATEWAY_MAXIMUM} 的规定。" #: payments/models.py:59 msgid "balance" diff --git a/pyproject.toml b/pyproject.toml index c84498a5..995e9a3f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "eVibes" -version = "2.9.2" +version = "2.9.3" description = "eVibes is an open-source eCommerce backend service built with Django. It’s designed for flexibility, making it ideal for various use cases and learning Django skills. The project is easy to customize, allowing for straightforward editing and extension." authors = ["fureunoir "] readme = "README.md" diff --git a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo index f4be54c5..c9f9cba3 100644 Binary files a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo and b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po index dfdf1521..4541e5ee 100644 --- a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -104,7 +104,8 @@ msgstr "التعامل مع تحميل الصورة الرمزية للمستخ msgid "confirm a user's password reset" msgstr "تأكيد إعادة تعيين كلمة مرور المستخدم" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "كلمات المرور غير متطابقة" @@ -134,34 +135,34 @@ msgstr "كلمة المرور ضعيفة جداً" msgid "{name} does not exist: {uuid}" msgstr "{name} غير موجود: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "بريد إلكتروني مشوه" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "رقم هاتف مشوه: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "تنسيق السمة غير صالح: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "رابط التفعيل غير صالح!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "تم تفعيل الحساب بالفعل..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "حدث خطأ ما: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "الرمز غير صالح!" @@ -285,28 +286,33 @@ msgstr "الرمز المميز المدرج في القائمة السوداء" msgid "blacklisted tokens" msgstr "الرموز المميزة المدرجة في القائمة السوداء" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "بريد إلكتروني مشوه: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "لم يتم العثور على حساب نشط" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "يجب تعيين سمة token_class على الفئة!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "تم إدراج الرمز المميز في القائمة السوداء" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "رمز غير صالح" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "لا توجد مطالبة معرف المستخدم في الرمز المميز" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "المستخدم غير موجود" diff --git a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo b/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo index 14060184..bade6284 100644 Binary files a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo and b/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po b/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po index b901bc0c..0a0cd7af 100644 --- a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po +++ b/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -102,7 +102,8 @@ msgstr "Zpracování nahrávání avataru pro uživatele" msgid "confirm a user's password reset" msgstr "Potvrzení obnovení hesla uživatele" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Hesla se neshodují" @@ -132,34 +133,34 @@ msgstr "Heslo je příliš slabé" msgid "{name} does not exist: {uuid}" msgstr "{name} neexistuje: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "Špatně formulovaný e-mail" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Chybně zadané telefonní číslo: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Nesprávný formát atributu: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "Aktivační odkaz je neplatný!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "Účet byl již aktivován..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Něco se pokazilo: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "Token je neplatný!" @@ -284,28 +285,33 @@ msgstr "Token na černé listině" msgid "blacklisted tokens" msgstr "Tokeny na černé listině" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "nesprávně formulovaný e-mail: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "Nebyl nalezen žádný aktivní účet" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "Musí být nastaven atribut token_class na třídě!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Token na černé listině" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Neplatný token" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "V tokenu není deklarace uuid uživatele" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "Uživatel neexistuje" diff --git a/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo b/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo index 7380dad2..b113c4b1 100644 Binary files a/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo and b/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/da_DK/LC_MESSAGES/django.po b/vibes_auth/locale/da_DK/LC_MESSAGES/django.po index dd76906d..1814b965 100644 --- a/vibes_auth/locale/da_DK/LC_MESSAGES/django.po +++ b/vibes_auth/locale/da_DK/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -104,7 +104,8 @@ msgstr "Håndter upload af avatar for en bruger" msgid "confirm a user's password reset" msgstr "Bekræft nulstilling af en brugers adgangskode" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Adgangskoderne stemmer ikke overens" @@ -134,34 +135,34 @@ msgstr "Adgangskoden er for svag" msgid "{name} does not exist: {uuid}" msgstr "{name} findes ikke: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "Misdannet e-mail" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Misdannet telefonnummer: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ugyldigt attributformat: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "Aktiveringslinket er ugyldigt!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "Kontoen er allerede aktiveret..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Noget gik galt: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "Token er ugyldig!" @@ -286,28 +287,33 @@ msgstr "Sortlistet token" msgid "blacklisted tokens" msgstr "Sortlistede tokens" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "Misdannet e-mail: {email}." + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "Ingen aktiv konto fundet" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "Skal sætte token_class-attributten på klassen!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Token blacklistet" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Ugyldigt token" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "Ingen bruger-uuid-krav til stede i token" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "Brugeren findes ikke" diff --git a/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo b/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo index 7c5c9893..6188cc9a 100644 Binary files a/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo and b/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/de_DE/LC_MESSAGES/django.po b/vibes_auth/locale/de_DE/LC_MESSAGES/django.po index 10c66cc0..4fa79f17 100644 --- a/vibes_auth/locale/de_DE/LC_MESSAGES/django.po +++ b/vibes_auth/locale/de_DE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -105,7 +105,8 @@ msgstr "Avatar-Upload für einen Benutzer verwalten" msgid "confirm a user's password reset" msgstr "Bestätigen Sie das Zurücksetzen des Passworts eines Benutzers" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Passwörter stimmen nicht überein" @@ -138,34 +139,34 @@ msgstr "Das Passwort ist zu schwach" msgid "{name} does not exist: {uuid}" msgstr "{name} existiert nicht: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "Fehlerhafte E-Mail" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Missgebildete Telefonnummer: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ungültiges Attributformat: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "Der Aktivierungslink ist ungültig!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "Das Konto wurde bereits aktiviert..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Etwas ist schief gelaufen: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "Token ist ungültig!" @@ -291,28 +292,33 @@ msgstr "Token auf der schwarzen Liste" msgid "blacklisted tokens" msgstr "Token auf der schwarzen Liste" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "missgebildete E-Mail: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "Kein aktives Konto gefunden" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "Das Attribut token_class muss auf class gesetzt werden!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Token auf der schwarzen Liste" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Ungültiges Token" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "Kein Benutzer uuid-Anspruch im Token vorhanden" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "Benutzer existiert nicht" diff --git a/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo b/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo index 5b5288c3..6593dc63 100644 Binary files a/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo and b/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/en_GB/LC_MESSAGES/django.po b/vibes_auth/locale/en_GB/LC_MESSAGES/django.po index 409ecaef..31e366ed 100644 --- a/vibes_auth/locale/en_GB/LC_MESSAGES/django.po +++ b/vibes_auth/locale/en_GB/LC_MESSAGES/django.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -106,7 +106,8 @@ msgstr "Handle avatar upload for a user" msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Passwords do not match" @@ -136,34 +137,34 @@ msgstr "The password is too weak" msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "Malformed email" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Malformed phone number: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Invalid attribute format: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "Activation link is invalid!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "Account has been already activated..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "Token is invalid!" @@ -288,28 +289,33 @@ msgstr "Blacklisted token" msgid "blacklisted tokens" msgstr "Blacklisted tokens" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "malformed email: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "No active account found" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "Must set token_class attribute on class!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Token blacklisted" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "User does not exist" diff --git a/vibes_auth/locale/en_US/LC_MESSAGES/django.mo b/vibes_auth/locale/en_US/LC_MESSAGES/django.mo index b5c06dbf..6e2120d4 100644 Binary files a/vibes_auth/locale/en_US/LC_MESSAGES/django.mo and b/vibes_auth/locale/en_US/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/en_US/LC_MESSAGES/django.po b/vibes_auth/locale/en_US/LC_MESSAGES/django.po index 667df87e..6a98144e 100644 --- a/vibes_auth/locale/en_US/LC_MESSAGES/django.po +++ b/vibes_auth/locale/en_US/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -102,7 +102,8 @@ msgstr "Handle avatar upload for a user" msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Passwords do not match" @@ -132,34 +133,34 @@ msgstr "The password is too weak" msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "Malformed email" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Malformed phone number: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Invalid attribute format: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "Activation link is invalid!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "Account has been already activated..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "Token is invalid!" @@ -284,28 +285,33 @@ msgstr "Blacklisted token" msgid "blacklisted tokens" msgstr "Blacklisted tokens" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "malformed email: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "No active account found" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "Must set token_class attribute on class!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Token blacklisted" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "User does not exist" diff --git a/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo b/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo index cd06e2c8..6c0ffb14 100644 Binary files a/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo and b/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/es_ES/LC_MESSAGES/django.po b/vibes_auth/locale/es_ES/LC_MESSAGES/django.po index 01ca6613..68da284e 100644 --- a/vibes_auth/locale/es_ES/LC_MESSAGES/django.po +++ b/vibes_auth/locale/es_ES/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -104,7 +104,8 @@ msgstr "Gestionar la subida de avatares de un usuario" msgid "confirm a user's password reset" msgstr "Confirmar el restablecimiento de la contraseña de un usuario" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Las contraseñas no coinciden" @@ -135,34 +136,34 @@ msgstr "La contraseña es demasiado débil" msgid "{name} does not exist: {uuid}" msgstr "{name} no existe: ¡{uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "Correo electrónico malformado" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Número de teléfono malformado: ¡{phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato de atributo no válido: ¡{attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "El enlace de activación no es válido." -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "La cuenta ya ha sido activada..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Algo salió mal: {e!s}." -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "¡La ficha no es válida!" @@ -287,28 +288,33 @@ msgstr "Ficha en la lista negra" msgid "blacklisted tokens" msgstr "Fichas en la lista negra" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "correo electrónico malformado: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "No se ha encontrado ninguna cuenta activa" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "Debe establecer el atributo token_class en la clase." -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Ficha en la lista negra" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Token no válido" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "El usuario no existe" diff --git a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo index 31480c06..cd1fbd34 100644 Binary files a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo and b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po index 9ef1405c..1fcabac5 100644 --- a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po +++ b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -106,7 +106,8 @@ msgstr "Gérer le téléchargement d'un avatar pour un utilisateur" msgid "confirm a user's password reset" msgstr "Confirmer la réinitialisation du mot de passe d'un utilisateur" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Les mots de passe ne correspondent pas" @@ -138,34 +139,34 @@ msgstr "Le mot de passe est trop faible" msgid "{name} does not exist: {uuid}" msgstr "{name} n'existe pas : {uuid} !" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "Courriel malformé" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Numéro de téléphone malformé : {phone_number} !" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Format d'attribut non valide : {attribute_pair} !" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "Le lien d'activation n'est pas valide !" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "Le compte a déjà été activé..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Quelque chose a mal tourné : {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "Le jeton n'est pas valide !" @@ -293,29 +294,34 @@ msgstr "Jeton sur liste noire" msgid "blacklisted tokens" msgstr "Jetons sur liste noire" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "email malformé : {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "Aucun compte actif trouvé" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "L'attribut token_class doit être défini sur la classe !" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Token sur liste noire" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Jeton non valide" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "" "Aucune revendication d'uuid d'utilisateur n'est présente dans le jeton" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "L'utilisateur n'existe pas" diff --git a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.mo b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.mo index 47c1f925..980937eb 100644 Binary files a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.mo and b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po index 8f4f37a3..a962becd 100644 --- a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po +++ b/vibes_auth/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 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -105,7 +105,8 @@ msgstr "" msgid "confirm a user's password reset" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "" @@ -135,34 +136,34 @@ msgstr "" msgid "{name} does not exist: {uuid}" msgstr "" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "" -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "" @@ -285,28 +286,33 @@ msgstr "" msgid "blacklisted tokens" msgstr "" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "" diff --git a/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo b/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo index 2c428447..94adeecc 100644 Binary files a/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo and b/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/it_IT/LC_MESSAGES/django.po b/vibes_auth/locale/it_IT/LC_MESSAGES/django.po index 539c85fb..d374c85c 100644 --- a/vibes_auth/locale/it_IT/LC_MESSAGES/django.po +++ b/vibes_auth/locale/it_IT/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -105,7 +105,8 @@ msgstr "Gestire il caricamento dell'avatar per un utente" msgid "confirm a user's password reset" msgstr "Confermare la reimpostazione della password di un utente" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Le password non corrispondono" @@ -135,34 +136,34 @@ msgstr "La password è troppo debole" msgid "{name} does not exist: {uuid}" msgstr "{name} non esiste: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "Email malformata" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Numero di telefono malformato: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato attributo non valido: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "Il link di attivazione non è valido!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "L'account è già stato attivato..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Qualcosa è andato storto: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "Il gettone non è valido!" @@ -289,28 +290,33 @@ msgstr "Token in lista nera" msgid "blacklisted tokens" msgstr "Gettoni nella lista nera" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "email malformata: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "Nessun conto attivo trovato" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "Deve essere impostato l'attributo token_class sulla classe!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Token nella lista nera" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Token non valido" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "Nessuna richiesta di uuid utente presente nel token" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "L'utente non esiste" diff --git a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo index 429ef994..967739a8 100644 Binary files a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo and b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po index 3e02d0e4..a0ed5255 100644 --- a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -102,7 +102,8 @@ msgstr "ユーザーのアバターアップロードを処理する" msgid "confirm a user's password reset" msgstr "ユーザーのパスワード・リセットを確認する" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "パスワードが一致しない" @@ -132,34 +133,34 @@ msgstr "パスワードが弱すぎる" msgid "{name} does not exist: {uuid}" msgstr "{name}は存在しません:{uuid}が存在しません!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "不正な電子メール" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "電話番号が不正です:{phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "無効な属性形式です:{attribute_pair}です!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "アクティベーションリンクが無効です!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "アカウントはすでに有効になっています..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "何かが間違っていた:{e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "トークンが無効です!" @@ -282,28 +283,33 @@ msgstr "ブラックリストトークン" msgid "blacklisted tokens" msgstr "ブラックリストに載ったトークン" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "不正な電子メール:{email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "アクティブなアカウントが見つかりません" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "クラスにtoken_class属性を設定する必要があります!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "トークンのブラックリスト入り" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "無効なトークン" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "トークンにユーザー uuid クレームが存在しない" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "ユーザーが存在しない" diff --git a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.mo b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.mo index 47c1f925..980937eb 100644 Binary files a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.mo and b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po index 8f4f37a3..a962becd 100644 --- a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po +++ b/vibes_auth/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 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -105,7 +105,8 @@ msgstr "" msgid "confirm a user's password reset" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "" @@ -135,34 +136,34 @@ msgstr "" msgid "{name} does not exist: {uuid}" msgstr "" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "" -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "" @@ -285,28 +286,33 @@ msgstr "" msgid "blacklisted tokens" msgstr "" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "" diff --git a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo index e1782390..93283378 100644 Binary files a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo and b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po index 737b2e82..c034803e 100644 --- a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po +++ b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -104,7 +104,8 @@ msgstr "Avatar uploaden voor een gebruiker afhandelen" msgid "confirm a user's password reset" msgstr "Bevestig het resetten van het wachtwoord van een gebruiker" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Wachtwoorden komen niet overeen" @@ -136,34 +137,34 @@ msgstr "Het wachtwoord is te zwak" msgid "{name} does not exist: {uuid}" msgstr "{name} bestaat niet: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "Misvormde e-mail" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Misvormd telefoonnummer: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ongeldig attribuutformaat: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "Activeringslink is ongeldig!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "Account is al geactiveerd..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Er ging iets mis: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "Token is invalid!" @@ -288,28 +289,33 @@ msgstr "Token op zwarte lijst" msgid "blacklisted tokens" msgstr "Tokens op de zwarte lijst" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "misvormde e-mail: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "Geen actieve account gevonden" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "Moet token_class attribuut instellen op klasse!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Token op zwarte lijst" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "Geen gebruiker uuid claim aanwezig in token" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "Gebruiker bestaat niet" diff --git a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo b/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo index 3bda44e3..3203a4f1 100644 Binary files a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo and b/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po b/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po index 7a658933..1d5d4015 100644 --- a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po +++ b/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -105,7 +105,8 @@ msgstr "Obsługa przesyłania awatara dla użytkownika" msgid "confirm a user's password reset" msgstr "Potwierdzenie zresetowania hasła użytkownika" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Hasła nie są zgodne" @@ -137,34 +138,34 @@ msgstr "Hasło jest zbyt słabe" msgid "{name} does not exist: {uuid}" msgstr "{name} nie istnieje: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "Zniekształcona wiadomość e-mail" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Zniekształcony numer telefonu: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Nieprawidłowy format atrybutu: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "Link aktywacyjny jest nieprawidłowy!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "Konto zostało już aktywowane..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Coś poszło nie tak: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "Token jest nieprawidłowy!" @@ -289,28 +290,33 @@ msgstr "Token na czarnej liście" msgid "blacklisted tokens" msgstr "Tokeny znajdujące się na czarnej liście" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "źle sformatowana wiadomość e-mail: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "Nie znaleziono aktywnego konta" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "Należy ustawić atrybut token_class na klasie!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Token na czarnej liście" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Nieprawidłowy token" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "Brak oświadczenia uuid użytkownika w tokenie" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "Użytkownik nie istnieje" diff --git a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo index 367a980b..2f208c73 100644 Binary files a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo and b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po index 0ae31ec7..6da08e5d 100644 --- a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po +++ b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -103,7 +103,8 @@ msgstr "Manipular o upload do avatar de um usuário" msgid "confirm a user's password reset" msgstr "Confirmar a redefinição de senha de um usuário" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "As senhas não correspondem" @@ -133,34 +134,34 @@ msgstr "A senha é muito fraca" msgid "{name} does not exist: {uuid}" msgstr "{name} não existe: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "E-mail malformado" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Número de telefone malformado: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato de atributo inválido: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "O link de ativação é inválido!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "A conta já foi ativada..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Algo deu errado: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "O token é inválido!" @@ -285,28 +286,33 @@ msgstr "Token na lista negra" msgid "blacklisted tokens" msgstr "Tokens na lista negra" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "e-mail malformado: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "Nenhuma conta ativa encontrada" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "É necessário definir o atributo token_class na classe!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Token na lista negra" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Token inválido" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "Nenhuma reivindicação de uuid de usuário presente no token" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "O usuário não existe" diff --git a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo index f25e4286..0cb612b1 100644 Binary files a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo and b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po index 8786c612..62d26eba 100644 --- a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -105,7 +105,8 @@ msgstr "Gestionarea încărcării avatarului pentru un utilizator" msgid "confirm a user's password reset" msgstr "Confirmați resetarea parolei unui utilizator" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Parolele nu se potrivesc" @@ -136,34 +137,34 @@ msgstr "Parola este prea slabă" msgid "{name} does not exist: {uuid}" msgstr "{name} nu există: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "E-mail malformat" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Număr de telefon malformat: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Format de atribut invalid: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "Linkul de activare este invalid!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "Contul a fost deja activat..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Ceva nu a mers bine: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "Token-ul nu este valabil!" @@ -288,28 +289,33 @@ msgstr "Token pe lista neagră" msgid "blacklisted tokens" msgstr "Jetoane pe lista neagră" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "e-mail malformat: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "Nu s-a găsit niciun cont activ" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "Trebuie să setați atributul token_class pe clasă!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Token pe lista neagră" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Jeton invalid" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "În jeton nu este prezentă nicio cerere uuid a utilizatorului" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "Utilizatorul nu există" diff --git a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo index af290bd2..feae8206 100644 Binary files a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo and b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po index 64629900..85366ac2 100644 --- a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -104,7 +104,8 @@ msgstr "Обработка загрузки аватара для пользов msgid "confirm a user's password reset" msgstr "Подтверждение сброса пароля пользователя" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "Пароли не совпадают" @@ -137,34 +138,34 @@ msgstr "Пароль слишком слабый" msgid "{name} does not exist: {uuid}" msgstr "{name} не существует: {uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "Некорректное письмо" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Некорректный номер телефона: {phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Недопустимый формат атрибута: {attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "Ссылка на активацию недействительна!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "Аккаунт уже активирован..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "Что-то пошло не так: {e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "Токен недействителен!" @@ -289,28 +290,33 @@ msgstr "Токен в черном списке" msgid "blacklisted tokens" msgstr "Чёрный список токенов" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "malformed email: {email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "Активная учетная запись не найдена" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "Необходимо установить атрибут token_class для класса!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "Токен занесен в черный список" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "Неверный токен" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "В токене отсутствует утверждение uuid пользователя" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "Пользователь не существует" diff --git a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo index ac696c90..b058e12e 100644 Binary files a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo and b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po index fce92396..f4afb1bc 100644 --- a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.9.2\n" +"Project-Id-Version: EVIBES 2.9.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-14 15:36+0300\n" +"POT-Creation-Date: 2025-09-01 20:37+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -102,7 +102,8 @@ msgstr "处理用户的头像上传" msgid "confirm a user's password reset" msgstr "确认用户密码重置" -#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:311 +#: vibes_auth/serializers.py:100 vibes_auth/serializers.py:104 #: vibes_auth/viewsets.py:114 msgid "passwords do not match" msgstr "密码不匹配" @@ -132,34 +133,34 @@ msgstr "密码太弱" msgid "{name} does not exist: {uuid}" msgstr "{name} 不存在:{uuid}!" -#: vibes_auth/graphene/mutations.py:115 +#: vibes_auth/graphene/mutations.py:117 msgid "malformed email" msgstr "畸形电子邮件" -#: vibes_auth/graphene/mutations.py:120 +#: vibes_auth/graphene/mutations.py:124 vibes_auth/serializers.py:109 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "畸形电话号码:{phone_number}!" -#: vibes_auth/graphene/mutations.py:142 +#: vibes_auth/graphene/mutations.py:146 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "属性格式无效:{attribute_pair}!" -#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:157 +#: vibes_auth/graphene/mutations.py:267 vibes_auth/viewsets.py:157 #: vibes_auth/viewsets.py:176 msgid "activation link is invalid!" msgstr "激活链接无效!" -#: vibes_auth/graphene/mutations.py:266 +#: vibes_auth/graphene/mutations.py:270 msgid "account already activated..." msgstr "帐户已激活..." -#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 +#: vibes_auth/graphene/mutations.py:277 vibes_auth/graphene/mutations.py:329 msgid "something went wrong: {e!s}" msgstr "出了问题:{e!s}" -#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:125 +#: vibes_auth/graphene/mutations.py:318 vibes_auth/viewsets.py:125 msgid "token is invalid!" msgstr "令牌无效!" @@ -282,28 +283,33 @@ msgstr "黑名单令牌" msgid "blacklisted tokens" msgstr "黑名单令牌" -#: vibes_auth/serializers.py:110 vibes_auth/serializers.py:132 -#: vibes_auth/serializers.py:154 vibes_auth/serializers.py:166 +#: vibes_auth/serializers.py:114 +#, python-brace-format +msgid "malformed email: {email}" +msgstr "畸形电子邮件:{email}" + +#: vibes_auth/serializers.py:135 vibes_auth/serializers.py:157 +#: vibes_auth/serializers.py:179 vibes_auth/serializers.py:191 msgid "no active account" msgstr "未找到活动账户" -#: vibes_auth/serializers.py:142 +#: vibes_auth/serializers.py:167 msgid "must set token_class attribute on class." msgstr "必须在类上设置 token_class 属性!" -#: vibes_auth/serializers.py:214 +#: vibes_auth/serializers.py:239 msgid "token_blacklisted" msgstr "令牌被列入黑名单" -#: vibes_auth/serializers.py:219 +#: vibes_auth/serializers.py:244 msgid "invalid token" msgstr "无效令牌" -#: vibes_auth/serializers.py:225 +#: vibes_auth/serializers.py:250 msgid "no user uuid claim present in token" msgstr "令牌中没有用户 uuid 声明" -#: vibes_auth/serializers.py:227 +#: vibes_auth/serializers.py:252 msgid "user does not exist" msgstr "用户不存在"