diff --git a/core/locale/ar_AR/LC_MESSAGES/django.mo b/core/locale/ar_AR/LC_MESSAGES/django.mo index 3b496f8d..a9482dac 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 164ae1c0..bc5be970 100644 --- a/core/locale/ar_AR/LC_MESSAGES/django.po +++ b/core/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -459,35 +459,112 @@ msgid "" msgstr "" "يزيل العديد من المنتجات من قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +msgstr "" +"تصفية حسب زوج واحد أو أكثر من أسماء/قيم السمات. \n" +"- **صيغة**: `attr_name=الطريقة-القيمة[ ؛ attr2=الطريقة2-القيمة2]...`\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" +"\"b64-description=icontains-aGVhdC1jb2xk" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "قائمة بجميع المنتجات (عرض بسيط)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(بالضبط) UUID المنتج" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(أيقونات) اسم المنتج" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(قائمة) أسماء الفئات، غير حساسة لحالة الأحرف" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(بالضبط) معرّف الفئة UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(قائمة) أسماء العلامات، غير حساسة لحالة الأحرف" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) الحد الأدنى لسعر السهم" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) الحد الأقصى لسعر السهم" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(بالضبط) المنتجات النشطة فقط" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(أيكساكت) اسم العلامة التجارية" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(زط) الحد الأدنى لكمية المخزون" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(بالضبط) سبيكة المنتج" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(بالضبط) الرقمية مقابل المادية" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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:310 msgid "retrieve a single product (detailed view)" msgstr "استرداد منتج واحد (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "معرف المنتج UUID أو سبيكة المنتج" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "إنشاء منتج" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "حذف منتج" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "إعادة كتابة منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "تحديث بعض حقول منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "حذف منتج" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "لم يتم توفير مصطلح بحث." @@ -544,7 +621,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:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "جاء نوع خاطئ من طريقة order.buy(): {type(instance)!s}" diff --git a/core/locale/cs_CZ/LC_MESSAGES/django.mo b/core/locale/cs_CZ/LC_MESSAGES/django.mo index 2a4f7c52..93cc5940 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 86716334..4344815e 100644 --- a/core/locale/cs_CZ/LC_MESSAGES/django.po +++ b/core/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -479,38 +479,115 @@ msgid "" msgstr "" "Odebere mnoho produktů ze seznamu přání pomocí zadaných `product_uuids`." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"Příklady: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Seznam všech produktů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(přesně) UUID produktu" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Název produktu" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(seznam) Názvy kategorií, nerozlišuje velká a malá písmena" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(přesně) Kategorie UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(seznam) Názvy značek, nerozlišuje velká a malá písmena" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimální cena akcií" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maximální cena akcií" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(přesně) Pouze aktivní produkty" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Obchodní značka" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimální skladové množství" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(přesně) Product slug" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(přesně) Digitální vs. fyzické" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" +"**Povolené:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Vyhledání jednoho produktu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Identifikátor UUID produktu nebo Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Vytvoření produktu" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Odstranění produktu" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 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:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Odstranění produktu" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Nebyl zadán žádný vyhledávací termín." @@ -566,7 +643,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:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Z metody order.buy() pochází nesprávný typ: {type(instance)!s}" diff --git a/core/locale/da_DK/LC_MESSAGES/django.mo b/core/locale/da_DK/LC_MESSAGES/django.mo index d61cddce..6a155182 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 cfcaf924..15f19423 100644 --- a/core/locale/da_DK/LC_MESSAGES/django.po +++ b/core/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -487,37 +487,114 @@ msgstr "" "Fjerner mange produkter fra en ønskeliste ved hjælp af de angivne " "`product_uuids`." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"Eksempler på dette: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`." + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Liste over alle produkter (enkel visning)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(præcis) Produkt-UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Produktnavn" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(liste) Kategorinavne, skelner ikke mellem store og små bogstaver" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(præcis) UUID for kategori" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(liste) Tag-navne, skelner ikke mellem store og små bogstaver" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimum aktiekurs" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maksimal aktiekurs" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(præcis) Kun aktive produkter" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Mærkenavn" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimum lagermængde" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(nøjagtig) Produktsug" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(præcis) Digital vs. fysisk" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" +"**Tilladt:** uuid, vurdering, navn, slug, oprettet, ændret, pris, tilfældig" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Hent et enkelt produkt (detaljeret visning)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Opret et produkt" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Slet et produkt" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Omskriv et eksisterende produkt og bevar ikke-redigerbare felter" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Slet et produkt" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Der er ikke angivet noget søgeord." @@ -573,7 +650,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:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Forkert type kom fra metoden order.buy(): {type(instance)!s}" diff --git a/core/locale/de_DE/LC_MESSAGES/django.mo b/core/locale/de_DE/LC_MESSAGES/django.mo index 3a2b7f3e..9725bff3 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 060a6064..aea5bcef 100644 --- a/core/locale/de_DE/LC_MESSAGES/django.po +++ b/core/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -498,39 +498,118 @@ msgstr "" "Entfernt viele Produkte aus einer Wunschliste unter Verwendung der " "angegebenen `product_uuids`." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"Beispiele: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Alle Produkte auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(genaue) Produkt-UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Produktname" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "" +"(Liste) Kategorienamen, Groß- und Kleinschreibung wird nicht berücksichtigt" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(genau) Kategorie UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "" +"(Liste) Tag-Namen, Groß- und Kleinschreibung wird nicht berücksichtigt" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Mindestaktienkurs" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maximaler Aktienkurs" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(genau) Nur aktive Produkte" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Markenname" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Mindestlagermenge" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(genau) Produktausschnitt" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(genau) Digital vs. physisch" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" +"**Erlaubt:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Ein einzelnes Produkt abrufen (Detailansicht)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Produkt UUID oder Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Ein Produkt erstellen" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Ein Produkt löschen" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer" " Felder" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Ein Produkt löschen" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Kein Suchbegriff angegeben." @@ -588,7 +667,7 @@ msgstr "" "sich gegenseitig aus!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Von der Methode order.buy() kam der falsche Typ: {type(instance)!s}" diff --git a/core/locale/en_GB/LC_MESSAGES/django.mo b/core/locale/en_GB/LC_MESSAGES/django.mo index b0338edd..2015c242 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 ddecce55..ec03e01f 100644 --- a/core/locale/en_GB/LC_MESSAGES/django.po +++ b/core/locale/en_GB/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -465,36 +465,113 @@ msgid "" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"• **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:276 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(exact) Product UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Product name" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(list) Category names, case-insensitive" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(exact) Category UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(list) Tag names, case-insensitive" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimum stock price" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maximum stock price" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exact) Only active products" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Brand name" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimum stock quantity" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exact) Product slug" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exact) Digital vs. physical" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Delete a product" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Delete a product" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "No search term provided." @@ -550,7 +627,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:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" diff --git a/core/locale/en_US/LC_MESSAGES/django.mo b/core/locale/en_US/LC_MESSAGES/django.mo index afb944dc..fc54d585 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 f8f9ec6b..41c11f69 100644 --- a/core/locale/en_US/LC_MESSAGES/django.po +++ b/core/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -465,36 +465,113 @@ msgid "" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"• **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:276 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(exact) Product UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Product name" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(list) Category names, case-insensitive" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(exact) Category UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(list) Tag names, case-insensitive" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimum stock price" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maximum stock price" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exact) Only active products" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Brand name" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimum stock quantity" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exact) Product slug" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exact) Digital vs. physical" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Delete a product" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Delete a product" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "No search term provided." @@ -550,7 +627,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:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" diff --git a/core/locale/es_ES/LC_MESSAGES/django.mo b/core/locale/es_ES/LC_MESSAGES/django.mo index 1bdadd96..48c00c20 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 b5298c04..e7701273 100644 --- a/core/locale/es_ES/LC_MESSAGES/django.po +++ b/core/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -489,37 +489,116 @@ msgstr "" "Elimina varios productos de una lista de deseos utilizando los " "`product_uuids` proporcionados." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"Ejemplos: \n" +"`color=rojo exacto`, `tamaño=gt-10`, `características=en-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`." + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Listar todos los productos (vista simple)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "UUID (exacto) del producto" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Nombre del producto" + +#: core/docs/drf/viewsets.py:280 +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:282 +msgid "(exact) Category UUID" +msgstr "(exacto) Categoría UUID" + +#: core/docs/drf/viewsets.py:283 +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:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Precio mínimo de las acciones" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Precio máximo de las acciones" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exacto) Sólo productos activos" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Marca" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Cantidad mínima de existencias" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exacto) Babosa del producto" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exacto) Digital frente a físico" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" +"**Permitido:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Recuperar un solo producto (vista detallada)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID o babosa del producto" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Crear un producto" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Eliminar un producto" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Reescribir un producto existente conservando los campos no editables" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Eliminar un producto" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "No se proporciona ningún término de búsqueda." @@ -575,7 +654,7 @@ 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:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}" diff --git a/core/locale/fr_FR/LC_MESSAGES/django.mo b/core/locale/fr_FR/LC_MESSAGES/django.mo index 28568e9e..0a1f885a 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 b54702d5..9762eb59 100644 --- a/core/locale/fr_FR/LC_MESSAGES/django.po +++ b/core/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -495,37 +495,114 @@ msgstr "" "Supprime plusieurs produits d'une liste de souhaits en utilisant les " "`product_uuids` fournis" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"Exemples : \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Liste de tous les produits (vue simple)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "UUID (exact) du produit" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Nom du produit" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(liste) Noms de catégories, insensibles à la casse" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "UUID (exact) de la catégorie" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(liste) Noms d'étiquettes, insensibles à la casse" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Prix minimum de l'action" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Prix maximum de l'action" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exact) Uniquement les produits actifs" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Nom de marque" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Quantité minimale en stock" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "UUID ou Slug du produit" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exact) Numérique ou physique" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Récupérer un seul produit (vue détaillée)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID ou Slug du produit" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Créer un produit" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Supprimer un produit" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 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:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Supprimer un produit" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Aucun terme de recherche n'est fourni." @@ -583,7 +660,7 @@ msgstr "" "mutuellement !" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 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}" diff --git a/core/locale/hi_IN/LC_MESSAGES/django.po b/core/locale/hi_IN/LC_MESSAGES/django.po index 31571f62..5aed5588 100644 --- a/core/locale/hi_IN/LC_MESSAGES/django.po +++ b/core/locale/hi_IN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -450,35 +450,108 @@ msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +msgstr "" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:268 -msgid "retrieve a single product (detailed view)" +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:272 -msgid "Product UUID or slug" +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" msgstr "" #: core/docs/drf/viewsets.py:284 -msgid "create a product" +msgid "(gte) Minimum stock price" +msgstr "" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" msgstr "" #: core/docs/drf/viewsets.py:291 -msgid "delete a product" +msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:295 +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:310 +msgid "retrieve a single product (detailed view)" +msgstr "" + +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 +msgid "Product UUID or slug" +msgstr "" + +#: core/docs/drf/viewsets.py:315 +msgid "create a product" +msgstr "" + +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "" @@ -534,7 +607,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" diff --git a/core/locale/it_IT/LC_MESSAGES/django.mo b/core/locale/it_IT/LC_MESSAGES/django.mo index 6d9f056a..53da0f43 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 6da04151..306a668d 100644 --- a/core/locale/it_IT/LC_MESSAGES/django.po +++ b/core/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -495,38 +495,116 @@ msgstr "" "Rimuove molti prodotti da una lista di desideri utilizzando i " "`product_uuids` forniti." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"Esempi: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Elenco di tutti i prodotti (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(esatto) UUID del prodotto" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Nome del prodotto" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "" +"(elenco) Nomi di categoria, senza distinzione tra maiuscole e minuscole" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(esatto) UUID della categoria" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(elenco) Nomi di tag, senza distinzione tra maiuscole e minuscole" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Prezzo minimo delle azioni" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Prezzo massimo del titolo" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(esatto) Solo prodotti attivi" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Nome del marchio" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Quantità minima di scorte" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(esatto) Prodotto slug" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(esatto) Digitale e fisico" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" +"**Consentito:** uuid, rating, nome, slug, creato, modificato, prezzo, casuale" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Recuperare un singolo prodotto (vista dettagliata)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID o Slug del prodotto" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Creare un prodotto" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Eliminare un prodotto" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Riscrivere un prodotto esistente, preservando i campi non modificabili" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Eliminare un prodotto" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Non è stato fornito alcun termine di ricerca." @@ -583,7 +661,7 @@ msgstr "" "Si prega di fornire order_uuid o order_hr_id, che si escludono a vicenda!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}" diff --git a/core/locale/ja_JP/LC_MESSAGES/django.mo b/core/locale/ja_JP/LC_MESSAGES/django.mo index b4bdcbc2..ec450840 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 0718e973..b64f396e 100644 --- a/core/locale/ja_JP/LC_MESSAGES/django.po +++ b/core/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -453,35 +453,112 @@ msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"例 \n" +"color=exact-red`、`size=gt-10`、`features=in-[\"wifi\", \"bluetooth\"]`、\n" +"b64-description=icontains-aGVhdC1jb2xk`。" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "全商品を一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(正確には)製品UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(アイコン) 製品名" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(リスト)カテゴリー名、大文字と小文字は区別しない" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(正確には)カテゴリーUUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(リスト) タグ名、大文字と小文字は区別されない" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(最低株価" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(最大株価" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(正確には)アクティブ製品のみ" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(商品名" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(最低在庫量" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(正確には)製品スラッグ" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(正確には)デジタルとフィジカル" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "単一の製品を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "製品UUIDまたはスラグ" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "製品を作る" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "製品を削除する" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "編集不可能なフィールドを保持したまま、既存の製品を書き換える。" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新する。" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "製品を削除する" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "検索語はありません。" @@ -537,7 +614,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "order_uuidまたはorder_hr_idを入力してください!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy()メソッドから間違った型が来た:{type(instance)!s}。" diff --git a/core/locale/kk_KZ/LC_MESSAGES/django.po b/core/locale/kk_KZ/LC_MESSAGES/django.po index 31571f62..5aed5588 100644 --- a/core/locale/kk_KZ/LC_MESSAGES/django.po +++ b/core/locale/kk_KZ/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -450,35 +450,108 @@ msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +msgstr "" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:268 -msgid "retrieve a single product (detailed view)" +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:272 -msgid "Product UUID or slug" +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" msgstr "" #: core/docs/drf/viewsets.py:284 -msgid "create a product" +msgid "(gte) Minimum stock price" +msgstr "" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" msgstr "" #: core/docs/drf/viewsets.py:291 -msgid "delete a product" +msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:295 +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:310 +msgid "retrieve a single product (detailed view)" +msgstr "" + +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 +msgid "Product UUID or slug" +msgstr "" + +#: core/docs/drf/viewsets.py:315 +msgid "create a product" +msgstr "" + +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "" @@ -534,7 +607,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" diff --git a/core/locale/nl_NL/LC_MESSAGES/django.mo b/core/locale/nl_NL/LC_MESSAGES/django.mo index 4de06905..1dfe01d7 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 bd706bb5..bcecdea5 100644 --- a/core/locale/nl_NL/LC_MESSAGES/django.po +++ b/core/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -495,38 +495,115 @@ msgstr "" "Verwijdert een groot aantal producten uit een verlanglijstje met behulp van " "de opgegeven `product_uuids`." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"Voorbeelden: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`." + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Alle producten weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(exacte) UUID van product" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(pictogrammen) Productnaam" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(lijst) Categorienamen, hoofdlettergevoelig" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(exacte) UUID van categorie" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(lijst) Labelnamen, hoofdlettergevoelig" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimale aandelenprijs" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maximale aandelenprijs" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exact) Alleen actieve producten" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Merknaam" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimumvoorraad" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exacte) productnaam" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exact) Digitaal vs. fysiek" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Een enkel product ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Product UUID of Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Een product maken" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Een product verwijderen" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 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:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Een product verwijderen" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Geen zoekterm opgegeven." @@ -582,7 +659,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:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Verkeerd type kwam uit order.buy() methode: {type(instance)!s}" diff --git a/core/locale/pl_PL/LC_MESSAGES/django.mo b/core/locale/pl_PL/LC_MESSAGES/django.mo index e662e08f..ec775811 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 15bfd4a5..19799561 100644 --- a/core/locale/pl_PL/LC_MESSAGES/django.po +++ b/core/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -490,37 +490,114 @@ msgid "" msgstr "" "Usuwa wiele produktów z listy życzeń przy użyciu podanych `product_uuids`" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"Przykłady: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Lista wszystkich produktów (widok prosty)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(dokładny) UUID produktu" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(ikony) Nazwa produktu" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(lista) Nazwy kategorii, wielkość liter nie ma znaczenia" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(dokładny) UUID kategorii" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(lista) Nazwy tagów, wielkość liter nie ma znaczenia" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimalna cena akcji" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maksymalna cena akcji" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(dokładnie) Tylko aktywne produkty" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Nazwa marki" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimalna ilość zapasów" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(dokładny) Ślimak produktu" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(dokładnie) Cyfrowe vs. fizyczne" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" +"**Dozwolone:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Pobieranie pojedynczego produktu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID produktu lub Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Tworzenie produktu" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Usuń produkt" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Przepisz istniejący produkt, zachowując nieedytowalne pola" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Usuń produkt" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Nie podano wyszukiwanego hasła." @@ -576,7 +653,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:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Nieprawidłowy typ pochodzi z metody order.buy(): {type(instance)!s}" diff --git a/core/locale/pt_BR/LC_MESSAGES/django.mo b/core/locale/pt_BR/LC_MESSAGES/django.mo index 757fe02c..6dc0c770 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 466ffe76..335ea00d 100644 --- a/core/locale/pt_BR/LC_MESSAGES/django.po +++ b/core/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -482,37 +482,115 @@ msgstr "" "Remove vários produtos de uma lista de desejos usando os `product_uuids` " "fornecidos" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"Exemplos: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Listar todos os produtos (visualização simples)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "UUID (exato) do produto" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Nome do produto" + +#: core/docs/drf/viewsets.py:280 +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:282 +msgid "(exact) Category UUID" +msgstr "(exato) UUID da categoria" + +#: core/docs/drf/viewsets.py:283 +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:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Preço mínimo das ações" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Preço máximo da ação" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exato) Somente produtos ativos" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Nome da marca" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Quantidade mínima em estoque" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exato) Slug do produto" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exato) Digital vs. físico" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Recuperar um único produto (visualização detalhada)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID ou Slug do produto" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Criar um produto" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Excluir um produto" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 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:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Excluir um produto" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Nenhum termo de pesquisa foi fornecido." @@ -568,7 +646,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:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "O tipo errado veio do método order.buy(): {type(instance)!s}" diff --git a/core/locale/ro_RO/LC_MESSAGES/django.mo b/core/locale/ro_RO/LC_MESSAGES/django.mo index b80d695b..170b5996 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 109fc888..c6b031e6 100644 --- a/core/locale/ro_RO/LC_MESSAGES/django.po +++ b/core/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -491,38 +491,115 @@ msgstr "" "Îndepărtează mai multe produse dintr-o listă de dorințe folosind " "`product_uuids` furnizat" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"Exemple: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Listează toate produsele (vizualizare simplă)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(exact) UUID al produsului" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Denumirea produsului" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(listă) Numele categoriilor, fără deosebire de majuscule" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(exact) UUID al categoriei" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(listă) Nume de etichete, fără diferențiere de majuscule" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Prețul minim al acțiunilor" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Prețul maxim al acțiunilor" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exact) Numai produse active" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Denumire comercială" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Cantitatea minimă de stoc" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exact) Limbajul produsului" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exact) Digital vs. fizic" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" +"**Autorizate:** uuid, rating, nume, slug, creat, modificat, preț, aleatoriu" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Recuperarea unui singur produs (vedere detaliată)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID sau Slug al produsului" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Creați un produs" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Ștergeți un produs" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 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:305 +#: core/docs/drf/viewsets.py:324 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:329 +msgid "delete a product" +msgstr "Ștergeți un produs" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Nu a fost furnizat niciun termen de căutare." @@ -579,7 +656,7 @@ msgstr "" "Vă rugăm să furnizați fie order_uuid sau order_hr_id - se exclud reciproc!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Metoda order.buy() a generat un tip greșit: {type(instance)!s}" diff --git a/core/locale/ru_RU/LC_MESSAGES/django.mo b/core/locale/ru_RU/LC_MESSAGES/django.mo index f3b8bee1..93103979 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 b011bfd8..2b0a8ecb 100644 --- a/core/locale/ru_RU/LC_MESSAGES/django.po +++ b/core/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -493,37 +493,114 @@ msgstr "" "Удаляет множество товаров из списка желаний, используя предоставленные " "`product_uuids`." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"Примеры: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`." + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Список всех продуктов (простой вид)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(точный) UUID продукта" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(иконки) Название продукта" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(список) Названия категорий, без учета регистра" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(точный) UUID категории" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(список) Имена тегов, нечувствительные к регистру" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Минимальная цена акции" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Максимальная цена акции" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(точно) Только активные продукты" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Торговое название" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Минимальное количество на складе" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(точный) Артикул" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(точно) Цифровые и физические" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Получение одного продукта (подробный просмотр)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID или Slug продукта" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Создать продукт" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Удалить продукт" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Переписать существующий продукт, сохранив нередактируемые поля" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Обновление некоторых полей существующего продукта с сохранением " "нередактируемых полей" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Удалить продукт" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Поисковый запрос не предоставлен." @@ -581,7 +658,7 @@ msgstr "" "варианты!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Неправильный тип получен из метода order.buy(): {type(instance)!s}" diff --git a/core/locale/zh_Hans/LC_MESSAGES/django.mo b/core/locale/zh_Hans/LC_MESSAGES/django.mo index a751bcd5..52373b7f 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 831c1498..1c5d01dc 100644 --- a/core/locale/zh_Hans/LC_MESSAGES/django.po +++ b/core/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -451,35 +451,112 @@ msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 从愿望清单中删除多个产品" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +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" +"• **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`" +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" +"示例 \n" +"color=exact-red`、`size=gt-10`、`features=in-[\"wifi\"、\"bluetooth\"]`、\n" +"`b64-description=icontains-aGVhdC1jb2xk`." + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "列出所有产品(简单视图)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(产品 UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(图示) 产品名称" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(列表) 类别名称,不区分大小写" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(类别 UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(标签名称,不区分大小写" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) 最低股价" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) 最高股价" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(准确)只有活性产品" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) 品牌名称" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) 最低库存量" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(准确) 产品标题" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(准确)数字与实物" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"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:310 msgid "retrieve a single product (detailed view)" msgstr "检索单个产品(详细视图)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "产品 UUID 或 Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "创建产品" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "删除产品" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "重写现有产品,保留不可编辑字段" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "更新现有产品的某些字段,保留不可编辑的字段" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "删除产品" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "未提供搜索条件。" @@ -535,7 +612,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "请提供 order_uuid 或 order_hr_id(互斥)!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy() 方法中的类型有误:{type(instance)!s}" diff --git a/core/management/commands/deepl_translate.py b/core/management/commands/deepl_translate.py index 445b6eb7..43216d6f 100644 --- a/core/management/commands/deepl_translate.py +++ b/core/management/commands/deepl_translate.py @@ -31,20 +31,23 @@ DEEPL_TARGET_LANGUAGES_MAPPING = { # Patterns to identify placeholders PLACEHOLDER_REGEXES = [ - re.compile(r"\{[^}]+"), # {name}, {product_uuid} - re.compile(r"%\([^)]+\)[sd]"), # %(name)s, %(count)d + re.compile(r"\{[^}]+"), # {name}, {product_uuid} + re.compile(r"%\([^)]+\)[sd]"), # %(name)s, %(count)d ] + def placeholderize(text: str) -> tuple[str, list[str]]: """ Replace placeholders with tokens and collect originals. Returns (protected_text, placeholders_list). """ placeholders: list[str] = [] + def _repl(match: re.Match) -> str: idx = len(placeholders) placeholders.append(match.group(0)) return f"__PH_{idx}__" + for rx in PLACEHOLDER_REGEXES: text = rx.sub(_repl, text) return text, placeholders @@ -148,7 +151,11 @@ class Command(BaseCommand): if missing: self.stdout.write(self.style.NOTICE(f"⚠️ {len(missing)} missing in en_GB")) for e in missing: - e.msgstr = input(f"Enter translation for '{e.msgid}': ").strip() + input_msgstr = input(f"Enter translation for '{e.msgid}': ").strip() + if input_msgstr: + e.msgstr = input_msgstr + else: + e.msgstr = e.msgid en_po.save(en_path) self.stdout.write(self.style.SUCCESS("Updated en_GB PO")) @@ -197,9 +204,9 @@ class Command(BaseCommand): maps.append(p_map) data = [ - ('auth_key', auth_key), - ('target_lang', api_code), - ] + [('text', t) for t in protected] + ('auth_key', auth_key), + ('target_lang', api_code), + ] + [('text', t) for t in protected] resp = requests.post('https://api-free.deepl.com/v2/translate', data=data) try: resp.raise_for_status()