diff --git a/blog/locale/en_GB/LC_MESSAGES/django.po b/blog/locale/en_GB/LC_MESSAGES/django.po index 52668025..4663aa1e 100644 --- a/blog/locale/en_GB/LC_MESSAGES/django.po +++ b/blog/locale/en_GB/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" diff --git a/blog/locale/hi_IN/LC_MESSAGES/django.po b/blog/locale/hi_IN/LC_MESSAGES/django.po index f8014342..03fd037e 100644 --- a/blog/locale/hi_IN/LC_MESSAGES/django.po +++ b/blog/locale/hi_IN/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" diff --git a/blog/locale/kk_KZ/LC_MESSAGES/django.po b/blog/locale/kk_KZ/LC_MESSAGES/django.po index f8014342..03fd037e 100644 --- a/blog/locale/kk_KZ/LC_MESSAGES/django.po +++ b/blog/locale/kk_KZ/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" diff --git a/core/locale/ar_AR/LC_MESSAGES/django.mo b/core/locale/ar_AR/LC_MESSAGES/django.mo index fe70422a..28bf2ed2 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 47e0c3d2..313186f5 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -80,7 +80,7 @@ msgstr "الصورة" msgid "images" msgstr "الصور" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "المخزون" @@ -108,11 +108,11 @@ msgstr "معلومات أساسية" msgid "important dates" msgstr "تواريخ مهمة" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "طلب المنتج" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "اطلب المنتجات" @@ -216,141 +216,188 @@ msgstr "" "اشترِ طلبًا كعمل تجاري، باستخدام \"المنتجات\" المتوفرة مع \"معرّف_المنتج\" " "و\"السمات\"." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "سرد كل مجموعات السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "استرداد مجموعة سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "إنشاء مجموعة سمات" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "حذف مجموعة سمات" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "إعادة كتابة مجموعة سمات موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "إعادة كتابة بعض حقول مجموعة سمات موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "سرد جميع السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "استرداد سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "إنشاء سمة" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "حذف سمة" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "إعادة كتابة سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "إعادة كتابة بعض حقول سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "سرد جميع قيم السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "استرداد قيمة سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "إنشاء قيمة السمة" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "حذف قيمة سمة" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "إعادة كتابة قيمة سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "إعادة كتابة بعض حقول قيمة سمة موجودة حفظ غير قابل للتعديل" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "قائمة بجميع الفئات (عرض بسيط)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "استرداد فئة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "إنشاء فئة" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "حذف فئة" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "إعادة كتابة فئة موجودة حفظ غير المواد غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "إعادة كتابة بعض حقول فئة موجودة حفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "قائمة بجميع الفئات (عرض بسيط)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "بالنسبة للمستخدمين من غير الموظفين، يتم إرجاع الطلبات الخاصة بهم فقط." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"البحث في سلسلة فرعية غير حساسة لحالة الأحرف عبر human_readable_id و " +"order_products.product.name و order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "تصفية الطلبات ذات وقت_الشراء >= تاريخ ووقت الشراء هذا ISO 8601" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "تصفية الطلبات ذات وقت_الشراء <= تاريخ ووقت الشراء ISO 8601 هذا" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "تصفية حسب الطلب الدقيق UUID" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "التصفية حسب مُعرِّف الطلب المقروء بشريًا بالضبط" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" +"تصفية حسب البريد الإلكتروني للمستخدم (مطابقة تامة غير حساسة لحالة الأحرف)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "تصفية حسب معرّف المستخدم UUID" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "تصفية حسب حالة الطلب (مطابقة سلسلة فرعية غير حساسة لحالة الأحرف)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"الترتيب حسب واحد من: uuid، معرف_بشري_مقروء، بريد_إلكتروني_مستخدم، مستخدم، " +"حالة، إنشاء، تعديل، وقت_الشراء، عشوائي. البادئة بحرف \"-\" للترتيب التنازلي " +"(على سبيل المثال \"-وقت_الشراء\")." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "استرداد فئة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "إنشاء سمة" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "لا يعمل مع المستخدمين من غير الموظفين." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "حذف سمة" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "إعادة كتابة فئة موجودة حفظ غير المواد غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "إعادة كتابة بعض حقول فئة موجودة حفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "سعر الشراء وقت الطلب" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -359,29 +406,29 @@ msgstr "" "ينهي أمر الشراء. إذا تم استخدام \"فرض_الرصيد\"، يتم إكمال عملية الشراء " "باستخدام رصيد المستخدم؛ إذا تم استخدام \"فرض_الدفع\"، يتم بدء المعاملة." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "شراء طلب شراء بدون إنشاء حساب" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "إنهاء طلب الشراء لمستخدم غير مسجل." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "إضافة منتج إلى الطلب" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "يضيف منتجًا إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "إضافة قائمة بالمنتجات المطلوب طلبها، لن يتم احتساب الكميات" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -389,21 +436,21 @@ msgstr "" "يضيف قائمة من المنتجات إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" " "المتوفرة." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "إزالة منتج من الطلب" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "إزالة منتج من الطلب، لن يتم احتساب الكميات" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -411,75 +458,75 @@ msgstr "" "يزيل قائمة من المنتجات من الطلب باستخدام \"معرّف_المنتج\" و\"السمات\" " "المتوفرة." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "سرد جميع السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "بالنسبة للمستخدمين من غير الموظفين، يتم إرجاع قوائم الرغبات الخاصة بهم فقط." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "استرداد سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "إنشاء سمة" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "لا يعمل مع المستخدمين من غير الموظفين." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "حذف سمة" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "إعادة كتابة سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "إعادة كتابة بعض حقول سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "إضافة منتج إلى الطلب" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "يضيف منتجًا إلى قائمة أمنيات باستخدام 'product_uid' المتوفرة" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "إزالة منتج من قائمة الرغبات" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "يزيل منتجًا من قائمة أمنيات باستخدام 'product_uid' المتوفرة" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "إضافة العديد من المنتجات إلى قائمة الرغبات" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "يضيف العديد من المنتجات إلى قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "إزالة منتج من الطلب" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "يزيل العديد من المنتجات من قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -499,59 +546,55 @@ msgstr "" "'color=exact-red'، 'size=gt-10'، 'features=in-[\"wifi\"،\"bluetooth\"]، 'fatures=in-[\"wifi\",\"bluetooth\"],\n" "\"b64-description=icontains-aGVhdC1jb2xk" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "قائمة بجميع المنتجات (عرض بسيط)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(بالضبط) UUID المنتج" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(أيقونات) اسم المنتج" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(قائمة) أسماء الفئات، غير حساسة لحالة الأحرف" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(بالضبط) معرّف الفئة UUID" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(قائمة) أسماء العلامات، غير حساسة لحالة الأحرف" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) الحد الأدنى لسعر السهم" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) الحد الأقصى لسعر السهم" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(بالضبط) المنتجات النشطة فقط" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(أيكساكت) اسم العلامة التجارية" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(زط) الحد الأدنى لكمية المخزون" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(بالضبط) سبيكة المنتج" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(بالضبط) الرقمية مقابل المادية" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -559,61 +602,66 @@ msgstr "" "قائمة مفصولة بفواصل من الحقول للفرز حسب. البادئة بـ \"-\" للفرز التنازلي. \n" "**مسموح بها:** uuid، تصنيف، اسم، سبيكة، إنشاء، تعديل، سعر، عشوائي" -#: core/docs/drf/viewsets.py:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "استرداد منتج واحد (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "معرف المنتج UUID أو سبيكة المنتج" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "إنشاء منتج" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "إعادة كتابة منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "تحديث بعض حقول منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: core/docs/drf/viewsets.py:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "حذف منتج" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "سرد جميع الملاحظات المسموح بها للمنتج" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "قائمة بجميع العناوين" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "استرجاع عنوان واحد" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "إنشاء عنوان جديد" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "حذف عنوان" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "تحديث عنوان كامل" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "تحديث جزئي للعنوان" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "إدخال عنوان الإكمال التلقائي" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "تطبيق docker compose exec تطبيق docker exec الشعر تشغيل إدارة python.py " @@ -622,10 +670,62 @@ msgstr "" "pl -l pt-br -l ro-ro -l ru-ru -l zh-hans -l zh-ans -a core -a geo -a geo -a " "payments -a vibes_auth -a blog" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "تحديد كمية النتائج، 1 < الحد < 10، الافتراضي: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "سرد جميع الملاحظات (عرض بسيط)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "استرداد تعليق واحد (عرض مفصل)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "إنشاء ملاحظات" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "حذف تعليق" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "إعادة كتابة ملاحظات حالية تحفظ المواد غير القابلة للتعديل" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "إعادة كتابة بعض حقول الملاحظات الحالية التي تحفظ غير القابلة للتعديل" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "سرد جميع العلاقات بين الطلب والمنتج (عرض بسيط)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "استرداد علاقة طلب منتج واحد (عرض تفصيلي)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "إنشاء علاقة جديدة بين الطلب والمنتج" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "استبدال علاقة الطلب-المنتج الحالية" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "تحديث جزئي لعلاقة الطلب والمنتج الحالية" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "حذف علاقة الطلب-المنتج" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "إضافة أو إزالة الملاحظات على العلاقة بين الطلب والمنتج" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "لم يتم توفير مصطلح بحث." @@ -661,7 +761,6 @@ msgstr "إضافة منتج إلى الطلب" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "الطلب {order_uuid} غير موجود" @@ -683,7 +782,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:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "جاء نوع خاطئ من طريقة order.buy(): {type(instance)!s}" @@ -735,7 +834,7 @@ msgstr "الرجاء إرسال السمات كسلسلة منسقة مثل attr msgid "original address string provided by the user" msgstr "سلسلة العنوان الأصلي المقدمة من المستخدم" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} غير موجود: {uuid}" @@ -902,7 +1001,7 @@ msgstr "الرموز الترويجية" msgid "products on sale" msgstr "المنتجات المعروضة للبيع" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "العروض الترويجية" @@ -918,11 +1017,11 @@ msgstr "البائع" msgid "product" msgstr "المنتج" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "المنتجات المفضلة" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "قوائم التمنيات" @@ -930,7 +1029,7 @@ msgstr "قوائم التمنيات" msgid "tagged products" msgstr "المنتجات الموسومة" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "علامات المنتج" @@ -1078,8 +1177,8 @@ msgstr "سمة هذه القيمة" msgid "the specific product associated with this attribute's value" msgstr "المنتج المحدد المرتبط بقيمة هذه السمة" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "المنتج المرتبط" @@ -1191,7 +1290,7 @@ msgstr "توفير اسم تعريفي واضح للمنتج" msgid "product name" msgstr "اسم المنتج" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "إضافة وصف تفصيلي للمنتج" @@ -1290,7 +1389,7 @@ msgstr "الحالة الحالية للطلب في دورة حياته" msgid "order status" msgstr "حالة الطلب" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "بنية JSON للإشعارات التي سيتم عرضها للمستخدمين، في واجهة مستخدم المشرف، يتم " @@ -1332,62 +1431,62 @@ msgstr "الطلب" msgid "a user must have only one pending order at a time" msgstr "يجب أن يكون لدى المستخدم طلب واحد فقط معلق في كل مرة!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "لا يمكنك إضافة منتجات إلى طلب غير معلق إلى طلب غير معلق" -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "لا يمكنك إضافة منتجات غير نشطة للطلب" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "لا يمكنك إضافة منتجات أكثر من المتوفرة في المخزون" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} غير موجود: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "لا يمكنك إزالة المنتجات من طلب غير معلق من طلب غير معلق" -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} غير موجود مع الاستعلام <{query}>" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "الرمز الترويجي غير موجود" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "يمكنك فقط شراء المنتجات المادية مع تحديد عنوان الشحن فقط!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "العنوان غير موجود" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "لا يمكنك الشراء في هذه اللحظة، يرجى المحاولة مرة أخرى بعد بضع دقائق." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "قيمة القوة غير صالحة" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "لا يمكنك شراء طلبية فارغة!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "عدم كفاية الأموال لإكمال الطلب" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1395,188 +1494,196 @@ msgstr "" "لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد" " الإلكتروني للعميل، رقم هاتف العميل" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -"طريقة الدفع غير صالحة: {payment_method} من " -"{available_payment_methods}!" +"طريقة الدفع غير صالحة: {payment_method} من {available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "السعر الذي دفعه العميل لهذا المنتج وقت الشراء" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "سعر الشراء وقت الطلب" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "تعليقات داخلية للمسؤولين حول هذا المنتج المطلوب" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "التعليقات الداخلية" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "إشعارات المستخدم" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "تمثيل JSON لسمات هذا العنصر" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "سمات المنتج المطلوبة" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "الإشارة إلى الطلب الأصلي الذي يحتوي على هذا المنتج" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "ترتيب الوالدين" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "المنتج المحدد المرتبط بخط الطلب هذا" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "كمية هذا المنتج المحدد في الطلب" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "كمية المنتج" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "الحالة الحالية لهذا المنتج بالترتيب" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "حالة خط الإنتاج" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "إجراء خاطئ محدد للتغذية الراجعة: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "لا يمكنك التعليق على طلب لم يتم استلامه" + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "معرّف العلامة الداخلي لعلامة المنتج" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "اسم العلامة" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "اسم سهل الاستخدام لعلامة المنتج" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "اسم عرض العلامة" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "علامة المنتج" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "توفير نص بديل للصورة لإمكانية الوصول" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "النص البديل للصورة" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "تحميل ملف الصورة لهذا المنتج" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "صورة المنتج" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "يحدد الترتيب الذي يتم عرض الصور به" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "أولوية العرض" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "المنتج الذي تمثله هذه الصورة" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "صور المنتج" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "الرمز الفريد الذي يستخدمه المستخدم لاسترداد قيمة الخصم" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "معرّف الرمز الترويجي" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "مبلغ الخصم الثابت المطبق في حالة عدم استخدام النسبة المئوية" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "مبلغ الخصم الثابت" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "النسبة المئوية للخصم المطبق في حالة عدم استخدام مبلغ ثابت" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "النسبة المئوية للخصم" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "الطابع الزمني عند انتهاء صلاحية الرمز الترويجي" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "وقت انتهاء الصلاحية" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "الطابع الزمني الذي يكون هذا الرمز الترويجي صالحاً منه" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "وقت بدء الصلاحية" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "الطابع الزمني للاستخدام" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "المستخدم المعين لهذا الرمز الترويجي إن أمكن" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "المستخدم المعين" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "الرمز الترويجي" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "الرموز الترويجية" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1584,195 +1691,200 @@ msgstr "" "يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين" " أو لا هذا ولا ذاك." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "تم استخدام الرمز الترويجي بالفعل" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "نوع الخصم غير صالح للرمز الترويجي {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "النسبة المئوية للخصم على المنتجات المختارة" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "نسبة الخصم" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "تقديم اسم فريد لهذا العرض الترويجي" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "اسم الترقية" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "وصف الترقية" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "حدد المنتجات المشمولة في هذا العرض الترويجي" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "المنتجات المشمولة" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "الترقية" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "البائع الذي يورد هذا المنتج المخزون" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "البائع المرتبط" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "السعر النهائي للعميل بعد هوامش الربح" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "سعر البيع" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "المنتج المرتبط بإدخال المخزون هذا" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "السعر المدفوع للبائع مقابل هذا المنتج" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "سعر الشراء من البائع" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "الكمية المتوفرة من المنتج في المخزون" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "الكمية في المخزون" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU المعين من قبل البائع لتحديد المنتج" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "وحدة تخزين البائع" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "الملف الرقمي المرتبط بهذا المخزون إن أمكن" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "ملف رقمي" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "إدخالات المخزون" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "المنتجات التي حددها المستخدم على أنها مطلوبة" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "المستخدم الذي يمتلك قائمة الرغبات هذه" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "مالك قائمة الرغبات" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "قائمة الرغبات" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "تنزيل" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "التنزيلات" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "لا يمكنك تنزيل أصل رقمي لطلب غير مكتمل" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "فيلم وثائقي" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "الأفلام الوثائقية" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "لم يتم حلها" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "سطر العنوان للعميل" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "سطر العنوان" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "الشارع" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "المنطقة" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "المدينة" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "المنطقة" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "الرمز البريدي" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "البلد" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "نقطة تحديد الموقع الجغرافي(خط الطول، خط العرض)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "استجابة JSON كاملة من أداة التشفير الجغرافي لهذا العنوان" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "استجابة JSON مخزّنة من خدمة الترميز الجغرافي" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "العنوان" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "العناوين" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "يجب عليك تقديم تعليق، وتقييم، وطلب المنتج uuid لإضافة ملاحظاتك." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "خطأ أثناء إنشاء الرمز الترويجي: {e!s}" @@ -1999,7 +2111,7 @@ msgstr "يمكنك تنزيل الأصل الرقمي مرة واحدة فقط" msgid "favicon not found" msgstr "الرمز المفضل غير موجود" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "خطأ في الترميز الجغرافي: {e}" diff --git a/core/locale/cs_CZ/LC_MESSAGES/django.mo b/core/locale/cs_CZ/LC_MESSAGES/django.mo index ba238ca0..4d53397a 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 e56eea66..5246e0d1 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -82,7 +82,7 @@ msgstr "Obrázek" msgid "images" msgstr "Obrázky" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Stock" @@ -110,11 +110,11 @@ msgstr "Základní informace" msgid "important dates" msgstr "Důležitá data" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Objednat produkt" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Objednat produkty" @@ -219,152 +219,203 @@ msgstr "" "Zakoupit objednávku jako podnik s použitím zadaných `produktů` s " "`product_uuid` a `atributy`." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "Seznam všech skupin atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Získání jedné skupiny atributů (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Vytvoření skupiny atributů" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Odstranění skupiny atributů" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Přepsání existující skupiny atributů s uložením neupravitelných položek" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Přepsání některých polí existující skupiny atributů s uložením " "neupravitelných položek" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "Seznam všech atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Získání jednoho atributu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Vytvoření atributu" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Odstranění atributu" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "Přepsat existující atribut a uložit neupravitelné položky" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Přepsání některých polí existujícího atributu s uložením neupravitelných " "položek" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "Seznam všech hodnot atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Získání jedné hodnoty atributu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Vytvoření hodnoty atributu" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Odstranění hodnoty atributu" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "Přepsání existující hodnoty atributu uložením neupravitelných položek" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Přepsání některých polí existující hodnoty atributu s uložením " "neupravitelných položek" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "Seznam všech kategorií (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Vyhledání jedné kategorie (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Vytvoření kategorie" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Odstranění kategorie" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "Přepsání existující kategorie ukládající neupravitelné položky" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "Seznam všech kategorií (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" "Uživatelům, kteří nejsou zaměstnanci, se vracejí pouze jejich vlastní " "objednávky." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Vyhledávání podřetězců bez ohledu na velikost písmen v položkách " +"human_readable_id, order_products.product.name a " +"order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Filtrování příkazů s buy_time >= toto datum ISO 8601" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Filtrování objednávek s buy_time <= toto ISO 8601 datetime" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filtrování podle přesné objednávky UUID" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Filtrování podle přesného lidsky čitelného ID objednávky" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" +"Filtrování podle e-mailu uživatele (přesná shoda bez rozlišení velkých a " +"malých písmen)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filtrování podle UUID uživatele" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "" +"Filtrování podle stavu objednávky (shoda podřetězce bez rozlišování velkých " +"a malých písmen)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Řazení podle jedné z následujících možností: uuid, human_readable_id, " +"user_email, user, status, created, modified, buy_time, random. Pro sestupné " +"řazení použijte předponu \"-\" (např. \"-buy_time\")." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Vyhledání jedné kategorie (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Vytvoření atributu" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Nefunguje pro uživatele, kteří nejsou zaměstnanci." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Odstranění atributu" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "Přepsání existující kategorie ukládající neupravitelné položky" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Nákupní cena v době objednávky" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -374,30 +425,30 @@ msgstr "" " s použitím zůstatku uživatele; pokud je použito `force_payment`, zahájí se " "transakce." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "zakoupení objednávky bez vytvoření účtu" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "dokončí nákup objednávky pro neregistrovaného uživatele." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Přidání produktu do objednávky" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" "Přidá produkt do objednávky pomocí zadaného `product_uuid` a `attributes`." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "Přidat seznam produktů k objednání, množství se nezapočítává." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -405,22 +456,22 @@ msgstr "" "Přidá seznam produktů do objednávky pomocí zadaného `product_uuid` a " "`attributes`." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Odstranění produktu z objednávky" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" "Odebere produkt z objednávky pomocí zadaného `product_uuid` a `attributes`." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "Odstranění produktu z objednávky, množství se nezapočítává" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -428,78 +479,78 @@ msgstr "" "Odebere seznam produktů z objednávky pomocí zadaného `product_uuid` a " "`attributes`." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "Seznam všech atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Uživatelům, kteří nejsou zaměstnanci, se vrátí pouze jejich vlastní seznamy " "přání." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Získání jednoho atributu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Vytvoření atributu" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Nefunguje pro uživatele, kteří nejsou zaměstnanci." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Odstranění atributu" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "Přepsat existující atribut a uložit neupravitelné položky" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Přepsání některých polí existujícího atributu s uložením neupravitelných " "položek" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Přidání produktu do objednávky" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Přidá produkt do seznamu přání pomocí zadaného `product_uuid`." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Odstranění produktu ze seznamu přání" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Odebere produkt ze seznamu přání pomocí zadaného `product_uuid`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Přidání mnoha produktů do seznamu přání" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Přidá mnoho produktů do seznamu přání pomocí zadaných `product_uuids`." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Odstranění produktu z objednávky" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Odebere mnoho produktů ze seznamu přání pomocí zadaných `product_uuids`." -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -519,59 +570,55 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "Seznam všech produktů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(přesně) UUID produktu" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(icontains) Název produktu" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(seznam) Názvy kategorií, nerozlišuje velká a malá písmena" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(přesně) Kategorie UUID" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(seznam) Názvy značek, nerozlišuje velká a malá písmena" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Minimální cena akcií" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Maximální cena akcií" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(přesně) Pouze aktivní produkty" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Obchodní značka" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimální skladové množství" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(přesně) Product slug" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(přesně) Digitální vs. fyzické" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -579,73 +626,131 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Vyhledání jednoho produktu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "Identifikátor UUID produktu nebo Slug" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Vytvoření produktu" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 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:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Odstranění produktu" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "seznam všech povolených zpětných vazeb pro produkt" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "Seznam všech adres" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Získání jedné adresy" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Vytvoření nové adresy" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Odstranění adresy" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Aktualizace celé adresy" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Částečná aktualizace adresy" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Automatické dokončování zadávání adresy" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Řetězec dotazu na nezpracovaná data, doplňte prosím data z koncového bodu " "geo-IP" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "omezuje množství výsledků, 1 < limit < 10, výchozí: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "seznam všech ohlasů (jednoduché zobrazení)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "načtení jedné zpětné vazby (podrobné zobrazení)." + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "vytvořit zpětnou vazbu" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "odstranit zpětnou vazbu" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "přepsat existující zpětnou vazbu a uložit neupravitelné položky." + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" +"Přepsat některá pole existující kategorie a uložit neupravitelné položky" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "seznam všech vztahů objednávka-produkt (jednoduché zobrazení)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "načtení jednoho vztahu zakázka-produkt (podrobné zobrazení)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "vytvořit nový vztah objednávka-produkt" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "nahradit existující vztah objednávka-produkt" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "částečně aktualizovat existující vztah objednávka-produkt" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "odstranit vztah objednávka-produkt" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "přidat nebo odebrat zpětnou vazbu na vztah objednávka-produkt." + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Nebyl zadán žádný vyhledávací termín." @@ -680,7 +785,6 @@ msgstr "Přidání produktu do objednávky" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Objednávka {order_uuid} nebyla nalezena" @@ -702,7 +806,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:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Z metody order.buy() pochází nesprávný typ: {type(instance)!s}" @@ -756,7 +860,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Původní řetězec adresy zadaný uživatelem" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} neexistuje: {uuid}" @@ -924,7 +1028,7 @@ msgstr "Propagační kódy" msgid "products on sale" msgstr "Produkty v prodeji" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Propagační akce" @@ -940,11 +1044,11 @@ msgstr "Prodejce" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Produkty uvedené na seznamu přání" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Seznamy přání" @@ -952,7 +1056,7 @@ msgstr "Seznamy přání" msgid "tagged products" msgstr "Produkty s příznakem" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Štítky produktu" @@ -1099,8 +1203,8 @@ msgstr "Atribut této hodnoty" msgid "the specific product associated with this attribute's value" msgstr "Konkrétní produkt spojený s hodnotou tohoto atributu" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Související produkt" @@ -1212,7 +1316,7 @@ msgstr "Uveďte jasný identifikační název výrobku" msgid "product name" msgstr "Název produktu" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Přidejte podrobný popis produktu" @@ -1313,7 +1417,7 @@ msgstr "Aktuální stav zakázky v jejím životním cyklu" msgid "order status" msgstr "Stav objednávky" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "JSON struktura oznámení pro zobrazení uživatelům, v uživatelském rozhraní " @@ -1355,64 +1459,64 @@ msgstr "Objednávka" msgid "a user must have only one pending order at a time" msgstr "Uživatel smí mít vždy pouze jednu čekající objednávku!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Do objednávky, která není v procesu vyřizování, nelze přidat produkty." -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "Do objednávky nelze přidat neaktivní produkty" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "Nelze přidat více produktů, než je dostupné na skladě" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} neexistuje: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "Nelze odebrat produkty z objednávky, která není nevyřízená." -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} neexistuje s dotazem <{query}>" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Promo kód neexistuje" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "Fyzické produkty můžete zakoupit pouze se zadanou dodací adresou!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "Adresa neexistuje" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "V tuto chvíli nemůžete nakupovat, zkuste to prosím znovu za několik minut." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Neplatná hodnota síly" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "Nelze zakoupit prázdnou objednávku!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Nedostatek finančních prostředků na dokončení objednávky" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1420,186 +1524,195 @@ msgstr "" "bez registrace nelze nakupovat, uveďte prosím následující údaje: jméno " "zákazníka, e-mail zákazníka, telefonní číslo zákazníka." -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Neplatný způsob platby: {payment_method} z {available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "Cena, kterou zákazník zaplatil za tento produkt v době nákupu." -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Nákupní cena v době objednávky" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "Interní komentáře pro administrátory k tomuto objednanému produktu" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Interní připomínky" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "Oznámení uživatele" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "JSON reprezentace atributů této položky" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Objednané atributy produktu" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Odkaz na nadřazenou objednávku, která obsahuje tento produkt" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Objednávka rodičů" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "Konkrétní produkt spojený s touto objednávkou" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Množství tohoto konkrétního produktu v objednávce" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Množství produktu" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Aktuální stav tohoto produktu v objednávce" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Stav produktové řady" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "špatně zadaná akce pro zpětnou vazbu: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "nelze poskytnout zpětnou vazbu na objednávku, která nebyla přijata" + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Interní identifikátor značky produktu" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Název štítku" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "Uživatelsky přívětivý název pro značku produktu" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Zobrazení názvu štítku" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Štítek produktu" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "Poskytněte alternativní text k obrázku kvůli přístupnosti." -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Text alt obrázku" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Nahrát soubor s obrázkem tohoto produktu" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Obrázek produktu" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Určuje pořadí, v jakém se obrázky zobrazují." -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Priorita zobrazení" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "Výrobek, který tento obrázek představuje" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Obrázky produktů" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "Jedinečný kód, který uživatel použije k uplatnění slevy." -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Identifikátor propagačního kódu" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "Pevná výše slevy, pokud není použito procento" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Pevná výše slevy" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentuální sleva uplatněná v případě nevyužití pevné částky" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Procentuální sleva" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Časové razítko ukončení platnosti promokódu" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "Doba ukončení platnosti" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Časové razítko, od kterého je tento promokód platný" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Čas zahájení platnosti" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Časové razítko použití promokódu, prázdné, pokud ještě nebyl použit." -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Časové razítko použití" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "Uživatel přiřazený k tomuto promokódu, je-li to relevantní" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Přiřazený uživatel" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Propagační kód" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Propagační kódy" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1607,195 +1720,201 @@ msgstr "" "Měl by být definován pouze jeden typ slevy (částka nebo procento), nikoli " "však oba typy slev nebo žádný z nich." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "Promo kód byl již použit" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Neplatný typ slevy pro promocode {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Procentuální sleva na vybrané produkty" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Procento slevy" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Uveďte jedinečný název této propagační akce" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Název akce" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Popis propagace" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Vyberte, které produkty jsou zahrnuty do této akce" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Zahrnuté produkty" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Propagace" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "Prodejce dodávající tento výrobek na sklad" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Přidružený prodejce" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Konečná cena pro zákazníka po přirážkách" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Prodejní cena" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "Produkt spojený s touto skladovou položkou" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "Cena zaplacená prodejci za tento výrobek" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Kupní cena prodejce" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Dostupné množství produktu na skladě" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Množství na skladě" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU přidělený prodejcem pro identifikaci výrobku" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "SKU prodejce" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "Digitální soubor spojený s touto zásobou, je-li to vhodné" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Digitální soubor" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Zápisy do zásob" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Výrobky, které uživatel označil jako požadované" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "Uživatel, který vlastní tento seznam přání" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Majitel seznamu přání" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Seznam přání" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Stáhnout" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Ke stažení na" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "Digitální aktivum pro nedokončenou objednávku nelze stáhnout." -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Dokumentární film" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Dokumentární filmy" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Nevyřešené" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Adresní řádek pro zákazníka" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Adresní řádek" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Ulice" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "Okres" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "Město" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Region" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Poštovní směrovací číslo" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "Země" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokace Bod(Zeměpisná délka, Zeměpisná šířka)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Úplná odpověď JSON z geokodéru pro tuto adresu" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Uložená odpověď JSON ze služby geokódování" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Adresa" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Adresy" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"pro přidání zpětné vazby musíte uvést komentář, hodnocení a uuid produktu." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Chyba při vytváření promokódu: {e!s}" @@ -2029,7 +2148,7 @@ msgstr "Digitální aktivum můžete stáhnout pouze jednou" msgid "favicon not found" msgstr "favicon nebyl nalezen" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Chyba v zeměpisném kódování: {e}" diff --git a/core/locale/da_DK/LC_MESSAGES/django.mo b/core/locale/da_DK/LC_MESSAGES/django.mo index 3d0c0fb7..2a1fa314 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 de82910e..d0e0ff16 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -81,7 +81,7 @@ msgstr "Billede" msgid "images" msgstr "Billeder" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Lager" @@ -109,11 +109,11 @@ msgstr "Grundlæggende information" msgid "important dates" msgstr "Vigtige datoer" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Bestil produkt" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Bestil produkter" @@ -217,155 +217,202 @@ msgstr "" "Køb en ordre som en virksomhed ved hjælp af de angivne `produkter` med " "`produkt_uuid` og `attributter`." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "Liste over alle attributgrupper (simpel visning)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Hent en enkelt attributgruppe (detaljeret visning)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Opret en attributgruppe" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Slet en attributgruppe" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Omskriv en eksisterende attributgruppe, der gemmer ikke-redigerbare " "attributter" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende attributgruppe og gem ikke-" "redigerbare felter" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "Liste over alle attributter (simpel visning)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Hent en enkelt attribut (detaljeret visning)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Opret en attribut" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Slet en attribut" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "Omskriv en eksisterende attribut, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende attribut og gem ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "Liste over alle attributværdier (simpel visning)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Hent en enkelt attributværdi (detaljeret visning)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Opret en attributværdi" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Slet en attributværdi" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Omskriv en eksisterende attributværdi, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende attributværdi og gem ikke-redigerbare" " felter" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "Liste over alle kategorier (enkel visning)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Hent en enkelt kategori (detaljeret visning)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Opret en kategori" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Slet en kategori" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "Omskriv en eksisterende kategori, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "Liste over alle kategorier (enkel visning)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" "For ikke-ansatte brugere er det kun deres egne ordrer, der returneres." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Substringsøgning uden brug af store og små bogstaver på tværs af " +"human_readable_id, order_products.product.name og " +"order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Filtrer ordrer med buy_time >= denne ISO 8601 datetime" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Filtrer ordrer med buy_time <= denne ISO 8601 datetime" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filtrer efter nøjagtig ordre-UUID" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Filtrer efter nøjagtigt menneskeligt læsbart ordre-ID" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "Filtrer efter brugerens e-mail (case-insensitive exact match)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filtrer efter brugerens UUID" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "Filtrer efter ordrestatus (case-insensitive substring match)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Bestil efter en af: uuid, human_readable_id, user_email, user, status, " +"created, modified, buy_time, random. Præfiks med '-' for faldende rækkefølge" +" (f.eks. '-buy_time')." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Hent en enkelt kategori (detaljeret visning)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Opret en attribut" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Virker ikke for ikke-ansatte brugere." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Slet en attribut" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "Omskriv en eksisterende kategori, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Købspris på bestillingstidspunktet" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -375,19 +422,19 @@ msgstr "" "ved hjælp af brugerens saldo; hvis `force_payment` bruges, igangsættes en " "transaktion." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "Køb en ordre uden at oprette en konto" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "afslutter ordrekøbet for en ikke-registreret bruger." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Tilføj et produkt til ordren" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -395,11 +442,11 @@ msgstr "" "Tilføjer et produkt til en ordre ved hjælp af de angivne `product_uuid` og " "`attributes`." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "Tilføj en liste med produkter til bestilling, antal tæller ikke med" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -407,11 +454,11 @@ msgstr "" "Tilføjer en liste af produkter til en ordre ved hjælp af de angivne " "`product_uuid` og `attributes`." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Fjern et produkt fra ordren" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -419,11 +466,11 @@ msgstr "" "Fjerner et produkt fra en ordre ved hjælp af de angivne `product_uuid` og " "`attributes`." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "Fjern et produkt fra ordren, mængderne tæller ikke med" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -431,83 +478,83 @@ msgstr "" "Fjerner en liste af produkter fra en ordre ved hjælp af de angivne " "`product_uuid` og `attributes`." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "Liste over alle attributter (simpel visning)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "For ikke-ansatte brugere er det kun deres egne ønskelister, der returneres." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Hent en enkelt attribut (detaljeret visning)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Opret en attribut" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Virker ikke for ikke-ansatte brugere." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Slet en attribut" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "Omskriv en eksisterende attribut, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende attribut og gem ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Tilføj et produkt til ordren" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Tilføjer et produkt til en ønskeliste ved hjælp af den angivne " "`product_uuid`." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Fjern et produkt fra ønskelisten" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Fjerner et produkt fra en ønskeliste ved hjælp af den angivne " "`product_uuid`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Tilføj mange produkter til ønskelisten" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Tilføjer mange produkter til en ønskeliste ved hjælp af de angivne " "`product_uuids`." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Fjern et produkt fra ordren" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Fjerner mange produkter fra en ønskeliste ved hjælp af de angivne " "`product_uuids`." -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -527,59 +574,55 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "Liste over alle produkter (enkel visning)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(præcis) Produkt-UUID" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(icontains) Produktnavn" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(liste) Kategorinavne, skelner ikke mellem store og små bogstaver" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(præcis) UUID for kategori" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(liste) Tag-navne, skelner ikke mellem store og små bogstaver" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum aktiekurs" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Maksimal aktiekurs" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(præcis) Kun aktive produkter" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Mærkenavn" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum lagermængde" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(nøjagtig) Produktsug" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(præcis) Digital vs. fysisk" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -587,70 +630,129 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Hent et enkelt produkt (detaljeret visning)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Opret et produkt" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Omskriv et eksisterende produkt og bevar ikke-redigerbare felter" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Slet et produkt" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "viser alle tilladte tilbagemeldinger for et produkt" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "Angiv alle adresser" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Hent en enkelt adresse" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Opret en ny adresse" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Slet en adresse" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Opdater en hel adresse" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Delvis opdatering af en adresse" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Automatisk udfyldning af adresseinput" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "Rå dataforespørgselsstreng, tilføj venligst data fra geo-IP-slutpunkt" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "begrænser mængden af resultater, 1 < grænse < 10, standard: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "Vis alle tilbagemeldinger (enkel visning)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "Hent en enkelt feedback (detaljeret visning)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "skab en feedback" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "Slet en tilbagemelding" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "omskriv en eksisterende feedback, der gemmer ikke-redigerbare filer" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" +"Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " +"felter" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "liste alle ordre-produkt-relationer (simpel visning)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "Hent en enkelt ordre-produkt-relation (detaljeret visning)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "Opret en ny ordre-produkt-relation" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "erstatte en eksisterende ordre-produkt-relation" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "delvist opdatere en eksisterende ordre-produkt-relation" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "slette en ordre-produkt-relation" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "tilføje eller fjerne feedback på en ordre-produkt-relation" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Der er ikke angivet noget søgeord." @@ -685,7 +787,6 @@ msgstr "Tilføj et produkt til ordren" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Ordre {order_uuid} ikke fundet" @@ -707,7 +808,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:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Forkert type kom fra metoden order.buy(): {type(instance)!s}" @@ -761,7 +862,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Original adressestreng leveret af brugeren" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} findes ikke: {uuid}" @@ -933,7 +1034,7 @@ msgstr "Promokoder" msgid "products on sale" msgstr "Produkter til salg" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Kampagner" @@ -949,11 +1050,11 @@ msgstr "Leverandør" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Produkter på ønskelisten" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Ønskelister" @@ -961,7 +1062,7 @@ msgstr "Ønskelister" msgid "tagged products" msgstr "Mærkede produkter" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Produktmærker" @@ -1108,8 +1209,8 @@ msgstr "Attribut for denne værdi" msgid "the specific product associated with this attribute's value" msgstr "Det specifikke produkt, der er knyttet til denne attributs værdi" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Tilknyttet produkt" @@ -1221,7 +1322,7 @@ msgstr "Giv produktet et klart identificerende navn" msgid "product name" msgstr "Produktets navn" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Tilføj en detaljeret beskrivelse af produktet" @@ -1322,7 +1423,7 @@ msgstr "Ordrens aktuelle status i dens livscyklus" msgid "order status" msgstr "Bestillingsstatus" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "JSON-struktur af meddelelser, der skal vises til brugerne, i admin UI bruges" @@ -1364,64 +1465,64 @@ msgstr "Bestil" msgid "a user must have only one pending order at a time" msgstr "En bruger må kun have én afventende ordre ad gangen!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "Du kan ikke tilføje produkter til en ordre, der ikke er i gang." -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "Du kan ikke tilføje inaktive produkter til en ordre" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "Du kan ikke tilføje flere produkter, end der er på lager" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} findes ikke: {product_uuid}." -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende " "ordre." -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} findes ikke med forespørgsel <{query}>." -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Promokode findes ikke" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "Du kan kun købe fysiske produkter med angivet leveringsadresse!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "Adressen findes ikke" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "Du kan ikke købe i øjeblikket, prøv venligst igen om et par minutter." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Ugyldig kraftværdi" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "Du kan ikke købe en tom ordre!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Utilstrækkelige midler til at gennemføre ordren" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1429,187 +1530,198 @@ msgstr "" "du kan ikke købe uden registrering, angiv venligst følgende oplysninger: " "kundens navn, kundens e-mail, kundens telefonnummer" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Ugyldig betalingsmetode: {payment_method} fra {available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "Den pris, som kunden har betalt for dette produkt på købstidspunktet" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Købspris på bestillingstidspunktet" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "Interne kommentarer til administratorer om dette bestilte produkt" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Interne kommentarer" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "Notifikationer til brugere" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "JSON-repræsentation af dette elements attributter" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Bestilte produktattributter" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Henvisning til den overordnede ordre, der indeholder dette produkt" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Forældreordre" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "Det specifikke produkt, der er knyttet til denne ordrelinje" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Mængde af dette specifikke produkt i ordren" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Produktmængde" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Aktuel status for dette produkt i bestillingen" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Status for produktlinje" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "forkert handling angivet for feedback: {action}." + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "" +"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende " +"ordre." + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Intern tag-identifikator for produkttagget" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Tag-navn" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "Brugervenligt navn til produktmærket" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Navn på tag-visning" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Produktmærke" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "Giv alternativ tekst til billedet af hensyn til tilgængeligheden" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Billedets alt-tekst" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Upload billedfilen til dette produkt" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Produktbillede" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Bestemmer den rækkefølge, billederne vises i" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Skærm-prioritet" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "Det produkt, som dette billede repræsenterer" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Produktbilleder" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "Unik kode, der bruges af en bruger til at indløse en rabat" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Identifikator for kampagnekode" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "Fast rabatbeløb anvendes, hvis procent ikke bruges" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Fast rabatbeløb" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentvis rabat, hvis det faste beløb ikke bruges" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Procentvis rabat" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Tidsstempel, når promokoden udløber" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "Slut gyldighedstid" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Tidsstempel, hvorfra denne promokode er gyldig" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Start gyldighedstid" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Tidsstempel, hvor promokoden blev brugt, blank, hvis den ikke er brugt endnu" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Tidsstempel for brug" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "Bruger tildelt denne promokode, hvis relevant" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Tildelt bruger" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Kampagnekode" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Kampagnekoder" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1617,195 +1729,202 @@ msgstr "" "Der skal kun defineres én type rabat (beløb eller procent), men ikke begge " "eller ingen af dem." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "Promokoden er allerede blevet brugt" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ugyldig rabattype for promokode {self.uuid}." -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Procentvis rabat for de valgte produkter" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Rabatprocent" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Giv et unikt navn til denne kampagne" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Navn på kampagne" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Beskrivelse af kampagnen" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Vælg, hvilke produkter der er inkluderet i denne kampagne" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Inkluderede produkter" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Forfremmelse" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "Den leverandør, der leverer dette produkt, lagerfører" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Tilknyttet leverandør" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Endelig pris til kunden efter tillæg" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Salgspris" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "Det produkt, der er knyttet til denne lagerpost" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "Den pris, der er betalt til sælgeren for dette produkt" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Leverandørens købspris" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Tilgængelig mængde af produktet på lager" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Antal på lager" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "Leverandørtildelt SKU til identifikation af produktet" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "Leverandørens SKU" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "Digital fil knyttet til dette lager, hvis relevant" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Digital fil" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Lagerposteringer" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Produkter, som brugeren har markeret som ønskede" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "Bruger, der ejer denne ønskeliste" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Ønskelistens ejer" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Ønskeliste" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Download" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Downloads" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "Du kan ikke downloade et digitalt aktiv for en ikke-færdiggjort ordre" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Dokumentarfilm" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Dokumentarfilm" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Uafklaret" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Adresselinje til kunden" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Adresselinje" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Gade" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "Distrikt" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "By" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Region" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Postnummer" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "Land" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokaliseringspunkt (længdegrad, breddegrad)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Fuldt JSON-svar fra geokoderen for denne adresse" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Gemt JSON-svar fra geokodningstjenesten" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Adresse" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Adresser" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"Du skal angive en kommentar, en vurdering og et produkt-uid for at tilføje " +"feedback." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Fejl under oprettelse af promokode: {e!s}" @@ -2039,7 +2158,7 @@ msgstr "Du kan kun downloade det digitale aktiv én gang" msgid "favicon not found" msgstr "Favicon ikke fundet" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Fejl i geokodning: {e}" diff --git a/core/locale/de_DE/LC_MESSAGES/django.mo b/core/locale/de_DE/LC_MESSAGES/django.mo index 988f7a9e..c5ace726 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 028f3ea3..bcfe25cb 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -83,7 +83,7 @@ msgstr "Bild" msgid "images" msgstr "Bilder" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Lagerbestand" @@ -111,11 +111,11 @@ msgstr "Grundlegende Informationen" msgid "important dates" msgstr "Wichtige Termine" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Produkt bestellen" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Produkte bestellen" @@ -219,160 +219,211 @@ msgstr "" "Kauf einer Bestellung als Unternehmen unter Verwendung der angegebenen " "\"Produkte\" mit \"product_uuid\" und \"Attributen\"." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "Alle Attributgruppen auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Abrufen einer einzelnen Attributgruppe (Detailansicht)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Erstellen einer Attributgruppe" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Löschen einer Attributgruppe" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Umschreiben einer bestehenden Attributgruppe mit Speicherung von Nicht-" "Editierbarkeit" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Umschreiben einiger Felder einer bestehenden Attributgruppe, wobei nicht " "editierbare Felder gespeichert werden" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "Alle Attribute auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Ein einzelnes Attribut abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Ein Attribut erstellen" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Ein Attribut löschen" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributs, wobei nicht editierbare Daten " "gespeichert werden" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare" " Daten zu speichern" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "Alle Attributwerte auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Abrufen eines einzelnen Attributwertes (Detailansicht)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Einen Attributwert erstellen" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Löschen eines Attributwertes" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributwerts mit Speicherung von Nicht-" "Editierbarkeit" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Umschreiben einiger Felder eines vorhandenen Attributwerts, wobei nicht " "bearbeitbare Daten gespeichert werden" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "Alle Kategorien auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Eine einzelne Kategorie abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Eine Kategorie erstellen" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Eine Kategorie löschen" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" " Daten zu speichern" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "Alle Kategorien auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" "Bei Nicht-Mitarbeitern werden nur die eigenen Bestellungen zurückgeschickt." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Groß- und Kleinschreibung unempfindliche Teilstringsuche über " +"human_readable_id, order_products.product.name und " +"order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Aufträge mit Kaufzeitpunkt >= dieser ISO 8601-Datumszeit filtern" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Aufträge mit Kaufzeitpunkt <= dieser ISO 8601-Datumszeit filtern" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filter nach exakter UUID der Bestellung" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Filtern nach exakter, von Menschen lesbarer Bestell-ID" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" +"Filter nach der E-Mail des Benutzers (Groß-/Kleinschreibung nicht " +"berücksichtigend, exakte Übereinstimmung)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filter nach der UUID des Benutzers" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "" +"Filter nach Bestellstatus (Groß-/Kleinschreibung nicht berücksichtigende " +"Teilstring-Übereinstimmung)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Sortierung nach einem von: uuid, human_readable_id, user_email, user, " +"status, created, modified, buy_time, random. Präfix mit '-' für absteigend " +"(z. B. '-buy_time')." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Eine einzelne Kategorie abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Ein Attribut erstellen" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Funktioniert nicht für Benutzer, die nicht zum Personal gehören." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Ein Attribut löschen" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" " Daten zu speichern" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Einkaufspreis zum Zeitpunkt der Bestellung" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -382,21 +433,21 @@ msgstr "" "wird der Kauf mit dem Guthaben des Benutzers abgeschlossen; bei Verwendung " "von \"force_payment\" wird eine Transaktion ausgelöst." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "eine Bestellung kaufen, ohne ein Konto anzulegen" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "" "schließt den Kauf einer Bestellung für einen nicht registrierten Benutzer " "ab." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -404,13 +455,13 @@ msgstr "" "Fügt ein Produkt unter Verwendung der angegebenen `product_uuid` und " "`attributes` zu einer Bestellung hinzu." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "" "Fügen Sie eine Liste der zu bestellenden Produkte hinzu, Mengen werden nicht" " gezählt" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -418,11 +469,11 @@ msgstr "" "Fügt einer Bestellung eine Liste von Produkten unter Verwendung der " "angegebenen `product_uuid` und `attributes` hinzu." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -430,12 +481,12 @@ msgstr "" "Entfernt ein Produkt aus einer Bestellung unter Verwendung der angegebenen " "`product_uuid` und `attributes`." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "" "Ein Produkt aus der Bestellung entfernen, die Mengen werden nicht gezählt" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -443,85 +494,85 @@ msgstr "" "Entfernt eine Liste von Produkten aus einer Bestellung unter Verwendung der " "angegebenen `product_uuid` und `attributes`." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "Alle Attribute auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Bei Nicht-Mitarbeitern werden nur ihre eigenen Wunschlisten zurückgegeben." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Ein einzelnes Attribut abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Ein Attribut erstellen" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Funktioniert nicht für Benutzer, die nicht zum Personal gehören." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Ein Attribut löschen" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributs, wobei nicht editierbare Daten " "gespeichert werden" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare" " Daten zu speichern" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Fügt ein Produkt mit der angegebenen `product_uuid` zu einer Wunschliste " "hinzu" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Ein Produkt von der Wunschliste entfernen" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Entfernt ein Produkt aus einer Wunschliste unter Verwendung der angegebenen " "`product_uuid`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Viele Produkte auf den Wunschzettel setzen" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Fügt einer Wunschliste viele Produkte unter Verwendung der angegebenen " "`product_uuids` hinzu" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Entfernt viele Produkte aus einer Wunschliste unter Verwendung der " "angegebenen `product_uuids`." -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -541,61 +592,57 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "Alle Produkte auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(genaue) Produkt-UUID" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(icontains) Produktname" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "" "(Liste) Kategorienamen, Groß- und Kleinschreibung wird nicht berücksichtigt" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(genau) Kategorie UUID" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "" "(Liste) Tag-Namen, Groß- und Kleinschreibung wird nicht berücksichtigt" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Mindestaktienkurs" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Maximaler Aktienkurs" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(genau) Nur aktive Produkte" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Markenname" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Mindestlagermenge" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(genau) Produktausschnitt" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(genau) Digital vs. physisch" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -603,65 +650,70 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Ein einzelnes Produkt abrufen (Detailansicht)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "Produkt UUID oder Slug" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Ein Produkt erstellen" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer" " Felder" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Ein Produkt löschen" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "listet alle zulässigen Rückmeldungen für ein Produkt auf" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "Alle Adressen auflisten" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Eine einzelne Adresse abrufen" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Eine neue Adresse erstellen" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Eine Adresse löschen" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Eine ganze Adresse aktualisieren" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Teilweise Aktualisierung einer Adresse" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Autovervollständigung der Adresseingabe" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "docker compose exec app poetry run python manage.py deepl_translate -l en-gb" @@ -669,10 +721,66 @@ msgstr "" "it-it -l ja-jp -l kk-kz -l nl-nl -l pl -l pt-br -l ro-ro -l ru-ru -l zh-hans" " -a core -a geo -a payments -a vibes_auth -a blog" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "begrenzt die Anzahl der Ergebnisse, 1 < Limit < 10, Standard: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "alle Rückmeldungen auflisten (einfache Ansicht)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "eine einzelne Rückmeldung abrufen (detaillierte Ansicht)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "ein Feedback erstellen" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "eine Rückmeldung löschen" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "" +"Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "alle Bestell-Produkt-Beziehungen auflisten (einfache Ansicht)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "eine einzelne Auftrag-Produkt-Relation abrufen (Detailansicht)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "eine neue Auftrag-Produkt-Beziehung erstellen" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "eine bestehende Auftrag-Produkt-Relation ersetzen" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "eine bestehende Auftrag-Produkt-Beziehung teilweise aktualisieren" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "eine Auftrag-Produkt-Beziehung löschen" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "" +"Feedback zu einer Bestellung-Produkt-Beziehung hinzufügen oder entfernen" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Kein Suchbegriff angegeben." @@ -707,7 +815,6 @@ msgstr "Ein Produkt zur Bestellung hinzufügen" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Bestellung {order_uuid} nicht gefunden" @@ -731,7 +838,7 @@ msgstr "" "sich gegenseitig aus!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Von der Methode order.buy() kam der falsche Typ: {type(instance)!s}" @@ -784,7 +891,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Vom Benutzer angegebene Originaladresse" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} existiert nicht: {uuid}" @@ -955,7 +1062,7 @@ msgstr "Promocodes" msgid "products on sale" msgstr "Zum Verkauf stehende Produkte" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Werbeaktionen" @@ -971,11 +1078,11 @@ msgstr "Anbieter" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Auf dem Wunschzettel stehende Produkte" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Wunschzettel" @@ -983,7 +1090,7 @@ msgstr "Wunschzettel" msgid "tagged products" msgstr "Markierte Produkte" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Produkt-Tags" @@ -1131,8 +1238,8 @@ msgid "the specific product associated with this attribute's value" msgstr "" "Das spezifische Produkt, das mit dem Wert dieses Attributs verbunden ist" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Zugehöriges Produkt" @@ -1248,7 +1355,7 @@ msgstr "" msgid "product name" msgstr "Name des Produkts" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Fügen Sie eine detaillierte Beschreibung des Produkts hinzu" @@ -1351,7 +1458,7 @@ msgstr "Aktueller Status des Auftrags in seinem Lebenszyklus" msgid "order status" msgstr "Status der Bestellung" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "JSON-Struktur der Benachrichtigungen, die den Benutzern angezeigt werden " @@ -1393,69 +1500,69 @@ msgstr "Bestellung" msgid "a user must have only one pending order at a time" msgstr "Ein Benutzer darf immer nur einen schwebenden Auftrag haben!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Sie können keine Produkte zu einem Auftrag hinzufügen, der nicht in " "Bearbeitung ist." -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "Sie können keine inaktiven Produkte zur Bestellung hinzufügen" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "Sie können nicht mehr Produkte hinzufügen, als auf Lager sind" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} existiert nicht: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Sie können keine Produkte aus einer Bestellung entfernen, die nicht in " "Bearbeitung ist." -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} existiert nicht mit Abfrage <{query}>" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Promocode existiert nicht" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "" "Sie können nur physische Produkte mit angegebener Lieferadresse kaufen!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "Adresse ist nicht vorhanden" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Sie können im Moment nicht kaufen, bitte versuchen Sie es in ein paar " "Minuten erneut." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Ungültiger Force-Wert" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "Sie können keine leere Bestellung kaufen!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Unzureichende Mittel für die Ausführung des Auftrags" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1463,195 +1570,206 @@ msgstr "" "Sie können nicht ohne Registrierung kaufen, bitte geben Sie die folgenden " "Informationen an: Kundenname, Kunden-E-Mail, Kunden-Telefonnummer" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Ungültige Zahlungsmethode: {payment_method} von {available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "" "Der Preis, den der Kunde zum Zeitpunkt des Kaufs für dieses Produkt bezahlt " "hat" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Einkaufspreis zum Zeitpunkt der Bestellung" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "Interne Kommentare für Administratoren zu diesem bestellten Produkt" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Interne Kommentare" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "Benutzerbenachrichtigungen" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "JSON-Darstellung der Attribute dieses Artikels" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Bestellte Produktattribute" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Verweis auf den übergeordneten Auftrag, der dieses Produkt enthält" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Übergeordneter Auftrag" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "Das spezifische Produkt, das mit dieser Auftragszeile verbunden ist" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Menge dieses spezifischen Produkts in der Bestellung" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Produktmenge" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Aktueller Status dieses Produkts im Auftrag" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Status der Produktlinie" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "falsche Aktion für die Rückmeldung angegeben: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "" +"Sie können keine Produkte aus einer Bestellung entfernen, die nicht in " +"Bearbeitung ist." + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Interner Tag-Identifikator für das Produkt-Tag" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Tag name" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "Benutzerfreundlicher Name für den Produktanhänger" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Tag-Anzeigename" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Produkt-Tag" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "" "Geben Sie einen alternativen Text für das Bild an, um die Barrierefreiheit " "zu gewährleisten." -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Bild-Alt-Text" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Laden Sie die Bilddatei für dieses Produkt hoch" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Produktbild" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Legt die Reihenfolge fest, in der die Bilder angezeigt werden" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Priorität anzeigen" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "Das Produkt, das dieses Bild darstellt" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Produktbilder" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "" "Einzigartiger Code, den ein Nutzer zum Einlösen eines Rabatts verwendet" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Kennung des Promo-Codes" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "" "Fester Rabattbetrag, der angewandt wird, wenn kein Prozentsatz verwendet " "wird" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Fester Rabattbetrag" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "Prozentualer Rabatt, wenn der Festbetrag nicht verwendet wird" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Prozentualer Rabatt" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Zeitstempel, wann der Promocode abläuft" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "Ende der Gültigkeitsdauer" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Zeitstempel, ab dem dieser Promocode gültig ist" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Beginn der Gültigkeitsdauer" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Zeitstempel, wann der Promocode verwendet wurde, leer, wenn noch nicht " "verwendet" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Zeitstempel der Verwendung" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "Diesem Promocode zugewiesener Benutzer, falls zutreffend" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Zugewiesener Benutzer" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Promo-Code" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Promo-Codes" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1659,198 +1777,205 @@ msgstr "" "Es sollte nur eine Art von Rabatt definiert werden (Betrag oder " "Prozentsatz), aber nicht beides oder keines von beiden." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "Promocode wurde bereits verwendet" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ungültiger Rabatttyp für Promocode {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Prozentualer Rabatt für die ausgewählten Produkte" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Prozentsatz der Ermäßigung" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Geben Sie einen eindeutigen Namen für diese Aktion an" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Name der Aktion" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Wählen Sie aus, welche Produkte in dieser Aktion enthalten sind" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Enthaltene Produkte" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Förderung" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "Der Verkäufer, der dieses Produkt liefert, hat folgende Bestände" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Zugehöriger Anbieter" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Endpreis für den Kunden nach Aufschlägen" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Verkaufspreis" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "Das mit diesem Bestandseintrag verbundene Produkt" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "Der an den Verkäufer gezahlte Preis für dieses Produkt" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Einkaufspreis des Verkäufers" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Verfügbare Menge des Produkts auf Lager" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Vorrätige Menge" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "Vom Hersteller zugewiesene SKU zur Identifizierung des Produkts" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "SKU des Verkäufers" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "" "Digitale Datei, die mit diesem Bestand verbunden ist, falls zutreffend" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Digitale Datei" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Bestandseinträge" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Produkte, die der Benutzer als gewünscht markiert hat" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "Benutzer, dem diese Wunschliste gehört" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Besitzer der Wishlist" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Wunschzettel" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Herunterladen" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Herunterladen" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Sie können kein digitales Asset für eine nicht abgeschlossene Bestellung " "herunterladen" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Dokumentarfilm" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Dokumentarfilme" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Ungelöst" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Adresszeile für den Kunden" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Adresszeile" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Straße" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "Bezirk" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "Stadt" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Region" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Postleitzahl" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "Land" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Längengrad, Breitengrad)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Vollständige JSON-Antwort vom Geocoder für diese Adresse" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Gespeicherte JSON-Antwort vom Geokodierungsdienst" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Adresse" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Adressen" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"Sie müssen einen Kommentar, eine Bewertung und eine Produktnummer angeben, " +"um eine Bewertung abzugeben." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Fehler bei der Erstellung des Promocodes: {e!s}" @@ -2086,7 +2211,7 @@ msgstr "Sie können das digitale Asset nur einmal herunterladen" msgid "favicon not found" msgstr "Favicon nicht gefunden" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geokodierungsfehler: {e}" diff --git a/core/locale/en_GB/LC_MESSAGES/django.mo b/core/locale/en_GB/LC_MESSAGES/django.mo index 51fbdb61..c05dd836 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 2ba52ff4..a6a4c4f6 100644 --- a/core/locale/en_GB/LC_MESSAGES/django.po +++ b/core/locale/en_GB/LC_MESSAGES/django.po @@ -3,12 +3,11 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -86,7 +85,7 @@ msgstr "Image" msgid "images" msgstr "Images" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Stock" @@ -114,11 +113,11 @@ msgstr "Basic Info" msgid "important dates" msgstr "Important Dates" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Order Product" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Order Products" @@ -222,143 +221,189 @@ msgstr "" "Purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "List all attribute groups (simple view)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Retrieve a single attribute group (detailed view)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Create an attribute group" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Delete an attribute group" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Rewrite some fields of an existing attribute group saving non-editables" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "List all attribute values (simple view)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Retrieve a single attribute value (detailed view)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Create an attribute value" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Delete an attribute value" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Rewrite some fields of an existing attribute value saving non-editables" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Create a category" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Delete a category" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "For non-staff users, only their own orders are returned." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Filter orders with buy_time >= this ISO 8601 datetime" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Filter orders with buy_time <= this ISO 8601 datetime" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filter by exact order UUID" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Filter by exact human-readable order ID" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "Filter by user's email (case-insensitive exact match)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filter by user's UUID" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "Filter by order status (case-insensitive substring match)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Purchase price at order time" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -368,19 +413,19 @@ msgstr "" "completed using the user's balance; If `force_payment` is used, a " "transaction is initiated." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizes the order purchase for a non-registered user." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -388,11 +433,11 @@ msgstr "" "Adds a product to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "Add a list of products to order, quantities will not count" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -400,11 +445,11 @@ msgstr "" "Adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -412,11 +457,11 @@ msgstr "" "Removes a product from an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "Remove a product from order, quantities will not count" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -424,73 +469,73 @@ msgstr "" "Removes a list of products from an order using the provided `product_uuid` " "and `attributes`." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "For non-staff users, only their own wishlists are returned." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Adds a product to an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Remove a product from the wishlist" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Removes a product from an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Add many products to the wishlist" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "Adds many products to an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -510,59 +555,55 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(exact) Product UUID" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(icontains) Product name" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(list) Category names, case-insensitive" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(exact) Category UUID" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(list) Tag names, case-insensitive" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum stock price" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Maximum stock price" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(exact) Only active products" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Brand name" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum stock quantity" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(exact) Product slug" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. physical" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -570,69 +611,126 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Delete a product" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "lists all permitted feedbacks for a product" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "List all addresses" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Retrieve a single address" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Create a new address" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Delete an address" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Update an entire address" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Partially update an address" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Autocomplete address input" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "Raw data query string, please append with data from geo-IP endpoint" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limits the results amount, 1 < limit < 10, default: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "list all feedbacks (simple view)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "retrieve a single feedback (detailed view)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "create a feedback" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "delete a feedback" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "rewrite an existing feedback saving non-editables" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "rewrite some fields of an existing feedback saving non-editables" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "list all order–product relations (simple view)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "retrieve a single order–product relation (detailed view)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "create a new order–product relation" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "replace an existing order–product relation" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "partially update an existing order–product relation" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "delete an order–product relation" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "add or remove feedback on an order–product relation" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "No search term provided." @@ -667,7 +765,6 @@ msgstr "Add a product to the order" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Order {order_uuid} not found" @@ -689,7 +786,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:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" @@ -743,7 +840,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" @@ -910,7 +1007,7 @@ msgstr "Promocodes" msgid "products on sale" msgstr "Products on sale" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Promotions" @@ -926,11 +1023,11 @@ msgstr "Vendor" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Wishlisted products" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Wishlists" @@ -938,7 +1035,7 @@ msgstr "Wishlists" msgid "tagged products" msgstr "Tagged products" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Product tags" @@ -1084,8 +1181,8 @@ msgstr "Attribute of this value" msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Associated product" @@ -1197,7 +1294,7 @@ msgstr "Provide a clear identifying name for the product" msgid "product name" msgstr "Product name" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" @@ -1296,7 +1393,7 @@ msgstr "Current status of the order in its lifecycle" msgid "order status" msgstr "Order status" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "JSON structure of notifications to display to users, in admin UI the table-" @@ -1338,63 +1435,63 @@ msgstr "Order" msgid "a user must have only one pending order at a time" msgstr "A user must have only one pending order at a time!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "You cannot add products to an order that is not a pending one" -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} does not exist: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "You cannot remove products from an order that is not a pending one" -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "You can only buy physical products with shipping address specified!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "Address does not exist" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "You can not purchase at this moment, please try again in a few minutes." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Invalid force value" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1402,186 +1499,195 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Invalid payment method: {payment_method} from {available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "The price paid by the customer for this product at purchase time" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Internal comments" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "User notifications" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Parent order" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Product quantity" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Product line status" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "wrong action specified for feedback: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "you cannot feedback an order which is not received" + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Tag name" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Tag display name" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Product tag" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Image alt text" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Product image" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Display priority" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "The product that this image represents" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Product images" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "Unique code used by a user to redeem a discount" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Percentage discount" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "End validity time" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Start validity time" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Timestamp when the promocode was used, blank if not used yet" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Usage timestamp" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Assigned user" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Promo code" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1589,195 +1695,201 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "Promocode has been used already" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Discount percentage" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Promotion name" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Included products" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Promotion" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Associated vendor" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Selling price" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Quantity in stock" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "Vendor's SKU" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Digital file" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Stock entries" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Wishlist" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Download" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Downloads" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "You can not download a digital asset for a non-finished order" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Documentary" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Unresolved" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Address line for the customer" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Address line" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Street" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "District" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "City" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Region" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Postal code" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "Country" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Address" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Adresses" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"you must provide a comment, rating, and order product uuid to add feedback." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Error during promocode creation: {e!s}" @@ -2010,11 +2122,14 @@ msgstr "You can only download the digital asset once" msgid "favicon not found" msgstr "favicon not found" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geocoding error: {e}" +#~ msgid "(exact) Product slug" +#~ msgstr "(exact) Product slug" + #~ msgid "invalid payment method" #~ msgstr "Invalid payment method" diff --git a/core/locale/en_US/LC_MESSAGES/django.mo b/core/locale/en_US/LC_MESSAGES/django.mo index 966d6535..8b31d42a 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 ca83c8fd..6f7a2c39 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -81,7 +81,7 @@ msgstr "Image" msgid "images" msgstr "Images" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Stock" @@ -109,11 +109,11 @@ msgstr "Basic Info" msgid "important dates" msgstr "Important dates" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Order Product" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Order Products" @@ -217,143 +217,189 @@ msgstr "" "Purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "List all attribute groups (simple view)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Retrieve a single attribute group (detailed view)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Create an attribute group" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Delete an attribute group" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Rewrite some fields of an existing attribute group saving non-editables" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "List all attribute values (simple view)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Retrieve a single attribute value (detailed view)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Create an attribute value" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Delete an attribute value" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Rewrite some fields of an existing attribute value saving non-editables" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Create a category" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Delete a category" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "For non-staff users, only their own orders are returned." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Filter orders with buy_time >= this ISO 8601 datetime" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Filter orders with buy_time <= this ISO 8601 datetime" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filter by exact order UUID" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Filter by exact human-readable order ID" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "Filter by user's email (case-insensitive exact match)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filter by user's UUID" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "Filter by order status (case-insensitive substring match)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Purchase price at order time" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -363,19 +409,19 @@ msgstr "" "completed using the user's balance; If `force_payment` is used, a " "transaction is initiated." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizes the order purchase for a non-registered user." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -383,11 +429,11 @@ msgstr "" "Adds a product to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "Add a list of products to order, quantities will not count" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -395,11 +441,11 @@ msgstr "" "Adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -407,11 +453,11 @@ msgstr "" "Removes a product from an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "Remove a product from order, quantities will not count" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -419,73 +465,73 @@ msgstr "" "Removes a list of products from an order using the provided `product_uuid` " "and `attributes`." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "For non-staff users, only their own wishlists are returned." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Adds a product to an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Remove a product from the wishlist" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Removes a product from an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Add many products to the wishlist" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "Adds many products to an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -505,59 +551,55 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(exact) Product UUID" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(icontains) Product name" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(list) Category names, case-insensitive" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(exact) Category UUID" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(list) Tag names, case-insensitive" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum stock price" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Maximum stock price" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(exact) Only active products" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Brand name" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum stock quantity" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(exact) Product slug" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. physical" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -565,69 +607,126 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Delete a product" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "lists all permitted feedbacks for a product" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "List all addresses" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Retrieve a single address" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Create a new address" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Delete an address" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Update an entire address" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Partially update an address" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Autocomplete address input" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "Raw data query string, please append with data from geo-IP endpoint" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limits the results amount, 1 < limit < 10, default: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "list all feedbacks (simple view)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "retrieve a single feedback (detailed view)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "create a feedback" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "delete a feedback" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "rewrite an existing feedback saving non-editables" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "rewrite some fields of an existing feedback saving non-editables" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "list all order–product relations (simple view)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "retrieve a single order–product relation (detailed view)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "create a new order–product relation" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "replace an existing order–product relation" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "partially update an existing order–product relation" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "delete an order–product relation" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "add or remove feedback on an order–product relation" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "No search term provided." @@ -662,7 +761,6 @@ msgstr "Add a product to the order" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Order {order_uuid} not found" @@ -684,7 +782,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:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" @@ -738,7 +836,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" @@ -905,7 +1003,7 @@ msgstr "Promocodes" msgid "products on sale" msgstr "Products on sale" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Promotions" @@ -921,11 +1019,11 @@ msgstr "Vendor" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Wishlisted products" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Wishlists" @@ -933,7 +1031,7 @@ msgstr "Wishlists" msgid "tagged products" msgstr "Tagged products" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Product tags" @@ -1079,8 +1177,8 @@ msgstr "Attribute of this value" msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Associated product" @@ -1192,7 +1290,7 @@ msgstr "Provide a clear identifying name for the product" msgid "product name" msgstr "Product name" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" @@ -1291,7 +1389,7 @@ msgstr "Current status of the order in its lifecycle" msgid "order status" msgstr "Order status" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "JSON structure of notifications to display to users, in admin UI the table-" @@ -1333,63 +1431,63 @@ msgstr "Order" msgid "a user must have only one pending order at a time" msgstr "A user must have only one pending order at a time!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "You cannot add products to an order that is not a pending one" -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} does not exist: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "You cannot remove products from an order that is not a pending one" -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "You can only buy physical products with shipping address specified!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "Address does not exist" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "You can not purchase at this moment, please try again in a few minutes." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Invalid force value" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1397,186 +1495,195 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Invalid payment method: {payment_method} from {available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "The price paid by the customer for this product at purchase time" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Internal comments" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "User notifications" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Parent order" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Product quantity" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Product line status" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "wrong action specified for feedback: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "you cannot feedback an order which is not received" + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Tag name" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Tag display name" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Product tag" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Image alt text" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Product image" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Display priority" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "The product that this image represents" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Product images" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "Unique code used by a user to redeem a discount" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Percentage discount" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "End validity time" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Start validity time" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Timestamp when the promocode was used, blank if not used yet" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Usage timestamp" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Assigned user" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Promo code" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1584,195 +1691,201 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "Promocode has been used already" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Discount percentage" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Promotion name" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Included products" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Promotion" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Associated vendor" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Selling price" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Quantity in stock" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "Vendor's SKU" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Digital file" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Stock entries" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Wishlist" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Download" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Downloads" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "You can not download a digital asset for a non-finished order" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Documentary" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Unresolved" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Address line for the customer" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Address line" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Street" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "District" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "City" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Region" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Postal code" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "Country" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Address" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Adresses" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"you must provide a comment, rating, and order product uuid to add feedback." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Error during promocode creation: {e!s}" @@ -2005,7 +2118,7 @@ msgstr "You can only download the digital asset once" msgid "favicon not found" msgstr "favicon not found" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geocoding error: {e}" diff --git a/core/locale/es_ES/LC_MESSAGES/django.mo b/core/locale/es_ES/LC_MESSAGES/django.mo index 4cc785cf..f74ecf99 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 71248a2f..c2f88958 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -83,7 +83,7 @@ msgstr "Imagen" msgid "images" msgstr "Imágenes" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Stock" @@ -111,11 +111,11 @@ msgstr "Información básica" msgid "important dates" msgstr "Fechas importantes" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Pedir un producto" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Pedir productos" @@ -220,153 +220,204 @@ msgstr "" "Compra un pedido como empresa, utilizando los `productos` proporcionados con" " `product_uuid` y `attributes`." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "Lista de todos los grupos de atributos (vista simple)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperar un único grupo de atributos (vista detallada)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Crear un grupo de atributos" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Eliminar un grupo de atributos" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescribir un grupo de atributos existente guardando los no editables" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Reescribir algunos campos de un grupo de atributos existente guardando los " "no editables" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "Listar todos los atributos (vista simple)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperar un único atributo (vista detallada)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Crear un atributo" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Borrar un atributo" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "Reescribir un atributo existente guardando los no editables" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Reescribir algunos campos de un atributo existente guardando los no " "editables" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "Listar todos los valores de atributos (vista simple)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperar un único valor de atributo (vista detallada)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Crear un valor de atributo" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Borrar un valor de atributo" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescribir un valor de atributo existente guardando los no editables" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Reescribir algunos campos de un valor de atributo existente guardando los no" " editables" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "Lista de todas las categorías (vista simple)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Recuperar una sola categoría (vista detallada)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Crear una categoría" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Eliminar una categoría" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "Reescribir una categoría existente guardando los no editables" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "Lista de todas las categorías (vista simple)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" "Para los usuarios que no forman parte del personal, sólo se devuelven sus " "propios pedidos." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Búsqueda de subcadenas sin distinción entre mayúsculas y minúsculas en " +"human_readable_id, order_products.product.name y " +"order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Filtrar los pedidos con buy_time >= esta fecha ISO 8601" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Filtrar pedidos con hora de compra <= esta fecha ISO 8601" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filtrar por UUID de pedido exacto" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Filtrar por ID de pedido exacto legible por el ser humano" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" +"Filtrar por correo electrónico del usuario (coincidencia exacta insensible a" +" mayúsculas y minúsculas)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filtrar por UUID de usuario" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "" +"Filtrar por estado del pedido (coincidencia de subcadenas insensible a " +"mayúsculas y minúsculas)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Ordenar por: uuid, human_readable_id, user_email, user, status, created, " +"modified, buy_time, random. Utilice el prefijo '-' para orden descendente " +"(por ejemplo, '-tiempo_compra')." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Recuperar una sola categoría (vista detallada)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Crear un atributo" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "No funciona para los usuarios que no son personal." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Borrar un atributo" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "Reescribir una categoría existente guardando los no editables" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Precio de compra en el momento del pedido" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -376,19 +427,19 @@ msgstr "" "finaliza utilizando el saldo del usuario; Si se utiliza `force_payment`, se " "inicia una transacción." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "comprar un pedido sin crear una cuenta" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "finaliza la compra del pedido para un usuario no registrado." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Añadir un producto al pedido" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -396,11 +447,11 @@ msgstr "" "Añade un producto a un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "Añadir una lista de productos a la orden, las cantidades no contarán" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -408,11 +459,11 @@ msgstr "" "Añade una lista de productos a un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Eliminar un producto del pedido" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -420,11 +471,11 @@ msgstr "" "Elimina un producto de un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "Eliminar un producto del pedido, las cantidades no contarán" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -432,84 +483,84 @@ msgstr "" "Elimina una lista de productos de un pedido utilizando el `product_uuid` y " "los `attributes` proporcionados." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "Listar todos los atributos (vista simple)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Para los usuarios que no forman parte del personal, sólo se devuelven sus " "propias listas de deseos." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperar un único atributo (vista detallada)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Crear un atributo" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "No funciona para los usuarios que no son personal." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Borrar un atributo" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "Reescribir un atributo existente guardando los no editables" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Reescribir algunos campos de un atributo existente guardando los no " "editables" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Añadir un producto al pedido" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Añade un producto a una lista de deseos utilizando el `product_uuid` " "proporcionado" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Eliminar un producto de la lista de deseos" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Elimina un producto de una lista de deseos utilizando el `product_uuid` " "proporcionado." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Añadir muchos productos a la lista de deseos" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Añade varios productos a una lista de deseos utilizando los `product_uuids` " "proporcionados." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Eliminar un producto del pedido" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Elimina varios productos de una lista de deseos utilizando los " "`product_uuids` proporcionados." -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -529,61 +580,57 @@ msgstr "" "`color=rojo exacto`, `tamaño=gt-10`, `características=en-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "Listar todos los productos (vista simple)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "UUID (exacto) del producto" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(icontains) Nombre del producto" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 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:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(exacto) Categoría UUID" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 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:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Precio mínimo de las acciones" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Precio máximo de las acciones" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(exacto) Sólo productos activos" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Marca" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Cantidad mínima de existencias" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(exacto) Babosa del producto" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(exacto) Digital frente a físico" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -591,72 +638,131 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Recuperar un solo producto (vista detallada)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "UUID o babosa del producto" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Crear un producto" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Reescribir un producto existente conservando los campos no editables" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Eliminar un producto" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "enumera todas las opiniones permitidas sobre un producto" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "Enumerar todas las direcciones" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Recuperar una única dirección" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Crear una nueva dirección" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Borrar una dirección" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Actualizar una dirección completa" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Actualizar parcialmente una dirección" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Autocompletar direcciones" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Cadena de consulta de datos sin procesar, adjunte los datos del punto final " "geo-IP" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita la cantidad de resultados, 1 < límite < 10, por defecto: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "lista de todas las reacciones (vista simple)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "recuperar una sola respuesta (vista detallada)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "crear una retroalimentación" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "eliminar un comentario" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "reescribir una respuesta existente guardando los no editables" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" +"Reescribir algunos campos de una categoría existente guardando los no " +"editables" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "listar todas las relaciones pedido-producto (vista simple)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "recuperar una única relación pedido-producto (vista detallada)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "crear una nueva relación pedido-producto" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "sustituir una relación pedido-producto existente" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "actualizar parcialmente una relación pedido-producto existente" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "suprimir una relación pedido-producto" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "añadir o eliminar comentarios en una relación pedido-producto" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "No se proporciona ningún término de búsqueda." @@ -691,7 +797,6 @@ msgstr "Añadir un producto al pedido" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Pedido {order_uuid} no encontrado" @@ -713,7 +818,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:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}" @@ -768,7 +873,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Cadena de dirección original proporcionada por el usuario" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} no existe: {uuid}" @@ -939,7 +1044,7 @@ msgstr "Códigos promocionales" msgid "products on sale" msgstr "Productos a la venta" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Promociones" @@ -955,11 +1060,11 @@ msgstr "Vendedor" msgid "product" msgstr "Producto" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Productos deseados" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Listas de deseos" @@ -967,7 +1072,7 @@ msgstr "Listas de deseos" msgid "tagged products" msgstr "Productos con etiqueta" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Etiquetas del producto" @@ -1114,8 +1219,8 @@ msgstr "Atributo de este valor" msgid "the specific product associated with this attribute's value" msgstr "El producto específico asociado al valor de este atributo" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Producto asociado" @@ -1227,7 +1332,7 @@ msgstr "Proporcionar un nombre que identifique claramente el producto" msgid "product name" msgstr "Nombre del producto" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Añada una descripción detallada del producto" @@ -1330,7 +1435,7 @@ msgstr "Estado actual del pedido en su ciclo de vida" msgid "order status" msgstr "Estado del pedido" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "Estructura JSON de las notificaciones para mostrar a los usuarios, en la " @@ -1372,65 +1477,65 @@ msgstr "Pida" msgid "a user must have only one pending order at a time" msgstr "Un usuario sólo puede tener una orden pendiente a la vez." -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "No puede añadir productos a un pedido que no esté pendiente" -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "No se pueden añadir productos inactivos al pedido" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "No puede añadir más productos de los disponibles en stock" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} no existe: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "No puede eliminar productos de un pedido que no esté pendiente" -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} no existe con la consulta <{query}>" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Promocode no existe" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "" "Sólo puede comprar productos físicos con la dirección de envío especificada." -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "La dirección no existe" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "No puede comprar en este momento, por favor inténtelo de nuevo en unos " "minutos." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Valor de fuerza no válido" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "No se puede comprar un pedido vacío." -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Fondos insuficientes para completar el pedido" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1438,190 +1543,199 @@ msgstr "" "no puede comprar sin registrarse, facilite la siguiente información: nombre " "del cliente, correo electrónico del cliente, número de teléfono del cliente" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Forma de pago no válida: ¡{payment_method} de {available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "" "El precio pagado por el cliente por este producto en el momento de la compra" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Precio de compra en el momento del pedido" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarios internos para los administradores sobre este producto solicitado" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Comentarios internos" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "Notificaciones a los usuarios" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "Representación JSON de los atributos de este elemento" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Atributos ordenados del producto" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Referencia al pedido principal que contiene este producto" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Orden de los padres" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "El producto específico asociado a esta línea de pedido" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Cantidad de este producto específico en el pedido" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Cantidad de productos" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Estado actual de este producto en el pedido" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Estado de la línea de productos" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "acción incorrecta especificada para la retroalimentación: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "no se puede comentar un pedido no recibido" + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Identificador interno de la etiqueta del producto" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Nombre de la etiqueta" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "Nombre fácil de usar para la etiqueta del producto" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Nombre de la etiqueta" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Etiqueta del producto" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "" "Proporcione un texto alternativo para la imagen en aras de la accesibilidad" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Texto alternativo de la imagen" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Cargar el archivo de imagen para este producto" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Imagen del producto" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Determina el orden de visualización de las imágenes" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Prioridad de visualización" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "El producto que representa esta imagen" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Imágenes de productos" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "Código único utilizado por un usuario para canjear un descuento" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "Se aplica un descuento fijo si no se utiliza el porcentaje" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Importe fijo del descuento" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "Porcentaje de descuento aplicado si no se utiliza el importe fijo" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Porcentaje de descuento" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Fecha de caducidad del promocode" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "Hora de fin de validez" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Fecha a partir de la cual es válido este promocode" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Hora de inicio de validez" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Fecha en la que se utilizó el promocode, en blanco si aún no se ha utilizado" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Marca de tiempo de uso" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "Usuario asignado a este promocode si procede" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Usuario asignado" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Promo code" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1629,195 +1743,202 @@ msgstr "" "Sólo debe definirse un tipo de descuento (importe o porcentaje), pero no " "ambos ni ninguno." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "El código promocional ya ha sido utilizado" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo de descuento no válido para promocode {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Porcentaje de descuento para los productos seleccionados" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Porcentaje de descuento" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Proporcione un nombre único para esta promoción" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Nombre de la promoción" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Descripción de la promoción" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Seleccione los productos incluidos en esta promoción" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Productos incluidos" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Promoción" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "El vendedor que suministra este producto dispone de" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Proveedor asociado" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Precio final al cliente después de márgenes" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Precio de venta" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "El producto asociado a esta entrada en stock" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "El precio pagado al vendedor por este producto" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Precio de compra al vendedor" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Cantidad disponible del producto en stock" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Cantidad en stock" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU asignada por el proveedor para identificar el producto" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "SKU del vendedor" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "Archivo digital asociado a esta acción, si procede" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Archivo digital" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Entradas en existencias" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Productos que el usuario ha marcado como deseados" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "Usuario propietario de esta lista de deseos" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Propietario de Wishlist" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Lista de deseos" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Descargar" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Descargas" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "No puede descargar un activo digital para un pedido no finalizado" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Documental" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Sin resolver" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Dirección del cliente" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Dirección" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Calle" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "Distrito" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "Ciudad" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Región" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Promo code" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "País" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocalización Punto(Longitud, Latitud)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Respuesta JSON completa del geocodificador para esta dirección" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Respuesta JSON almacenada del servicio de geocodificación" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Dirección" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Direcciones" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"debe proporcionar un comentario, una valoración y el uuid del producto " +"solicitado para añadir comentarios." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Error durante la creación del promocode: {e!s}" @@ -2052,7 +2173,7 @@ msgstr "Sólo puede descargar el activo digital una vez" msgid "favicon not found" msgstr "favicon no encontrado" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Error de geocodificación: {e}" diff --git a/core/locale/fr_FR/LC_MESSAGES/django.mo b/core/locale/fr_FR/LC_MESSAGES/django.mo index 78c51994..6e56deaa 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 5267eed1..04aa0106 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -83,7 +83,7 @@ msgstr "Image" msgid "images" msgstr "Images" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Stock" @@ -111,11 +111,11 @@ msgstr "Informations de base" msgid "important dates" msgstr "Important Dates" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Commander un produit" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Commander des produits" @@ -220,158 +220,208 @@ msgstr "" "Acheter une commande en tant qu'entreprise, en utilisant les `produits` " "fournis avec `product_uuid` et `attributs`." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "Liste de tous les groupes d'attributs (vue simple)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Récupérer un seul groupe d'attributs (vue détaillée)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Créer un groupe d'attributs" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Supprimer un groupe d'attributs" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Réécrire un groupe d'attributs existant en sauvegardant les éléments non " "modifiables" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Réécrire certains champs d'un groupe d'attributs existant en sauvegardant " "les non-éditables" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "Liste de tous les attributs (vue simple)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Récupérer un seul attribut (vue détaillée)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Créer un attribut" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Supprimer un attribut" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Réécrire un attribut existant en sauvegardant les éléments non modifiables" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Réécrire certains champs d'un attribut existant en sauvegardant les éléments" " non modifiables" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "Liste de toutes les valeurs d'attributs (vue simple)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Récupérer une seule valeur d'attribut (vue détaillée)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Créer une valeur d'attribut" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Supprimer une valeur d'attribut" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Réécrire une valeur d'attribut existante en sauvegardant les éléments non " "modifiables" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Réécrire certains champs d'une valeur d'attribut existante en sauvegardant " "les éléments non modifiables" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "Liste de toutes les catégories (vue simple)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Récupérer une seule catégorie (vue détaillée)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Créer une catégorie" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Supprimer une catégorie" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "Réécrire une catégorie existante en sauvegardant les non-éditables" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "Liste de toutes les catégories (vue simple)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" "Pour les utilisateurs non fonctionnaires, seules leurs propres commandes " "sont renvoyées." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Recherche insensible à la casse dans human_readable_id, " +"order_products.product.name, et order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Filtrer les commandes dont l'heure d'achat est >= cette date ISO 8601" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Filtrer les commandes avec buy_time <= this ISO 8601 datetime" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filtre sur l'UUID exact de l'ordre" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Filtre sur l'identifiant exact de la commande, lisible par l'homme" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" +"Filtre sur l'adresse électronique de l'utilisateur (correspondance exacte " +"insensible à la casse)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filtrer par UUID de l'utilisateur" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "" +"Filtre sur l'état de la commande (correspondance insensible aux majuscules " +"et aux minuscules)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Ordonner par l'un des éléments suivants : uuid, human_readable_id, " +"user_email, user, status, created, modified, buy_time, random. Préfixer avec" +" '-' pour l'ordre décroissant (par exemple '-buy_time')." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Récupérer une seule catégorie (vue détaillée)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Créer un attribut" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Ne fonctionne pas pour les utilisateurs non fonctionnaires." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Supprimer un attribut" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "Réécrire une catégorie existante en sauvegardant les non-éditables" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Prix d'achat au moment de la commande" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -381,19 +431,19 @@ msgstr "" " complété en utilisant le solde de l'utilisateur ; Si `force_payment` est " "utilisé, une transaction est initiée." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "acheter une commande sans créer de compte" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "finalise l'achat d'une commande pour un utilisateur non enregistré." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Ajouter un produit à la commande" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -401,13 +451,13 @@ msgstr "" "Ajoute un produit à une commande en utilisant le `product_uuid` et les " "`attributs` fournis." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "" "Ajouter une liste de produits à la commande, les quantités ne seront pas " "prises en compte" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -415,11 +465,11 @@ msgstr "" "Ajoute une liste de produits à une commande en utilisant le `product_uuid` " "et les `attributs` fournis." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Supprimer un produit de la commande" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -427,13 +477,13 @@ msgstr "" "Supprime un produit d'une commande en utilisant le `product_uuid` et les " "`attributs` fournis." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "" "Retirer un produit de la commande, les quantités ne seront pas prises en " "compte" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -441,85 +491,85 @@ msgstr "" "Supprime une liste de produits d'une commande en utilisant le `product_uuid`" " et les `attributs` fournis." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "Liste de tous les attributs (vue simple)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Pour les utilisateurs non fonctionnaires, seules leurs propres listes de " "souhaits sont renvoyées." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Récupérer un seul attribut (vue détaillée)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Créer un attribut" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Ne fonctionne pas pour les utilisateurs non fonctionnaires." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Supprimer un attribut" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Réécrire un attribut existant en sauvegardant les éléments non modifiables" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Réécrire certains champs d'un attribut existant en sauvegardant les éléments" " non modifiables" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Ajouter un produit à la commande" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Ajoute un produit à une liste de souhaits en utilisant le `product_uuid` " "fourni" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Supprimer un produit de la liste de souhaits" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Supprime un produit d'une liste de souhaits en utilisant l'identifiant " "`product_uuid` fourni." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Ajouter plusieurs produits à la liste de souhaits" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Ajoute plusieurs produits à une liste de souhaits en utilisant les " "`product_uuids` fournis" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Supprimer un produit de la commande" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Supprime plusieurs produits d'une liste de souhaits en utilisant les " "`product_uuids` fournis" -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -539,59 +589,55 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "Liste de tous les produits (vue simple)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "UUID (exact) du produit" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(icontains) Nom du produit" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(liste) Noms de catégories, insensibles à la casse" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "UUID (exact) de la catégorie" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(liste) Noms d'étiquettes, insensibles à la casse" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Prix minimum de l'action" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Prix maximum de l'action" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(exact) Uniquement les produits actifs" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Nom de marque" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantité minimale en stock" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "UUID ou Slug du produit" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(exact) Numérique ou physique" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -599,72 +645,134 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Récupérer un seul produit (vue détaillée)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "UUID ou Slug du produit" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Créer un produit" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 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:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Supprimer un produit" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "liste tous les commentaires autorisés pour un produit" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "Liste de toutes les adresses" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Récupérer une seule adresse" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Créer une nouvelle adresse" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Supprimer une adresse" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Mise à jour d'une adresse entière" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Mise à jour partielle d'une adresse" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Saisie automatique des adresses" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Chaîne de requête de données brutes, à compléter avec les données du point " "d'extrémité géo-IP" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limite la quantité de résultats, 1 < limite < 10, par défaut : 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "liste de tous les commentaires (vue simple)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "récupérer un seul retour d'information (vue détaillée)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "créer un retour d'information" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "supprimer un feedback" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "" +"réécrire un feedback existant en sauvegardant les éléments non modifiables" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" +"Réécrire certains champs d'une catégorie existante en sauvegardant les non-" +"éditables" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "lister toutes les relations commande-produit (vue simple)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "récupérer une seule relation commande-produit (vue détaillée)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "créer une nouvelle relation commande-produit" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "remplacer une relation commande-produit existante" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "mettre à jour partiellement une relation commande-produit existante" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "supprimer une relation commande-produit" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "" +"ajouter ou supprimer un retour d'information sur une relation commande-" +"produit" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Aucun terme de recherche n'est fourni." @@ -699,7 +807,6 @@ msgstr "Ajouter un produit à la commande" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "L'ordre {order_uuid} n'a pas été trouvé" @@ -723,7 +830,7 @@ msgstr "" "mutuellement !" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 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}" @@ -778,7 +885,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Chaîne d'adresse originale fournie par l'utilisateur" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} n'existe pas : {uuid}" @@ -948,7 +1055,7 @@ msgstr "Promocodes" msgid "products on sale" msgstr "Produits en vente" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Promotions" @@ -964,11 +1071,11 @@ msgstr "Vendeur" msgid "product" msgstr "Produit" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Produits en liste de souhaits" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Liste de souhaits" @@ -976,7 +1083,7 @@ msgstr "Liste de souhaits" msgid "tagged products" msgstr "Produits marqués" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Étiquettes du produit" @@ -1124,8 +1231,8 @@ msgstr "Attribut de cette valeur" msgid "the specific product associated with this attribute's value" msgstr "Le produit spécifique associé à la valeur de cet attribut" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Produit associé" @@ -1238,7 +1345,7 @@ msgstr "Fournir un nom d'identification clair pour le produit" msgid "product name" msgstr "Nom du produit" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Ajouter une description détaillée du produit" @@ -1340,7 +1447,7 @@ msgstr "Statut actuel de la commande dans son cycle de vie" msgid "order status" msgstr "Statut de la commande" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "Structure JSON des notifications à afficher aux utilisateurs ; dans " @@ -1382,71 +1489,71 @@ msgstr "Commande" msgid "a user must have only one pending order at a time" msgstr "Un utilisateur ne peut avoir qu'un seul ordre en cours à la fois !" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Vous ne pouvez pas ajouter de produits à une commande qui n'est pas en " "cours." -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "Vous ne pouvez pas ajouter des produits inactifs à la commande" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "" "Vous ne pouvez pas ajouter plus de produits que ceux disponibles en stock" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} n'existe pas : {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Vous ne pouvez pas retirer des produits d'une commande qui n'est pas en " "cours." -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} n'existe pas avec la requête <{query}>" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Le code promotionnel n'existe pas" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "" "Vous ne pouvez acheter que des produits physiques dont l'adresse de " "livraison est spécifiée !" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "L'adresse n'existe pas" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Vous ne pouvez pas acheter en ce moment, veuillez réessayer dans quelques " "minutes." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Valeur de force non valide" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "Vous ne pouvez pas acheter une commande vide !" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Insuffisance de fonds pour compléter la commande" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1455,7 +1562,7 @@ msgstr "" "informations suivantes : nom du client, courriel du client, numéro de " "téléphone du client" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1463,185 +1570,196 @@ msgstr "" "Méthode de paiement non valide : {payment_method} de " "{available_payment_methods} !" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "Le prix payé par le client pour ce produit au moment de l'achat" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Prix d'achat au moment de la commande" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "" "Commentaires internes pour les administrateurs sur ce produit commandé" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Commentaires internes" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "Notifications aux utilisateurs" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "Représentation JSON des attributs de cet élément" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Attributs du produit ordonnés" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Référence à l'ordre parent qui contient ce produit" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Ordonnance parentale" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "Le produit spécifique associé à cette ligne de commande" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Quantité de ce produit spécifique dans la commande" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Quantité de produits" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Statut actuel de ce produit dans la commande" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Statut de la ligne de produits" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "mauvaise action spécifiée pour le retour d'information : {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "" +"Vous ne pouvez pas retirer des produits d'une commande qui n'est pas en " +"cours." + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Identifiant interne de l'étiquette du produit" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Nom du jour" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "Nom convivial pour l'étiquette du produit" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Nom d'affichage de l'étiquette" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Étiquette du produit" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "Fournir un texte alternatif pour l'image afin d'en faciliter l'accès" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Texte alt de l'image" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Télécharger le fichier image pour ce produit" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Image du produit" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Détermine l'ordre d'affichage des images" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Priorité à l'affichage" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "Le produit que cette image représente" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Images du produit" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "" "Code unique utilisé par un utilisateur pour bénéficier d'une réduction" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Identifiant du code promotionnel" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "" "Montant fixe de la remise appliqué si le pourcentage n'est pas utilisé" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Montant de l'escompte fixe" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Pourcentage de réduction appliqué si le montant fixe n'est pas utilisé" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Pourcentage de réduction" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Date d'expiration du code promotionnel" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "Heure de fin de validité" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Date à partir de laquelle ce code promotionnel est valable" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Heure de début de validité" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Date à laquelle le code promotionnel a été utilisé, vide s'il n'a pas encore" " été utilisé." -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Horodatage de l'utilisation" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "Utilisateur assigné à ce code promo, le cas échéant" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Utilisateur assigné" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Code promo" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Codes promotionnels" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1649,197 +1767,204 @@ msgstr "" "Un seul type de remise doit être défini (montant ou pourcentage), mais pas " "les deux ni aucun des deux." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "Le code promotionnel a déjà été utilisé" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Type de réduction non valide pour le code promo {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Pourcentage de réduction pour les produits sélectionnés" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Pourcentage de réduction" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Donnez un nom unique à cette promotion" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Nom de la promotion" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Sélectionnez les produits inclus dans cette promotion" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Produits inclus" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Promotion" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "Le vendeur qui fournit ce stock de produits" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Vendeur associé" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Prix final pour le client après majoration" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Prix de vente" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "Le produit associé à cette entrée de stock" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "Le prix payé au vendeur pour ce produit" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Prix d'achat du vendeur" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Quantité disponible du produit en stock" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Quantité en stock" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU attribué par le fournisseur pour identifier le produit" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "UGS du vendeur" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "Fichier numérique associé à ce stock, le cas échéant" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Fichier numérique" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Entrées de stock" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Produits que l'utilisateur a marqués comme souhaités" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "Utilisateur qui possède cette liste de souhaits" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Propriétaire de la liste de souhaits" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Liste de souhaits" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Télécharger" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Téléchargements" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Vous ne pouvez pas télécharger un bien numérique pour une commande non " "terminée." -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Documentaire" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Documentaires" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Non résolu" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Ligne d'adresse du client" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Ligne d'adresse" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Rue" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "District" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "Ville" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Région" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Code postal" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "Pays" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Point de géolocalisation (longitude, latitude)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Réponse JSON complète du géocodeur pour cette adresse" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Réponse JSON stockée du service de géocodage" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Adresse" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Adresses" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"vous devez fournir un commentaire, une note et l'uuid du produit commandé " +"pour ajouter un commentaire." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Erreur lors de la création du promocode : {e!s}" @@ -2077,7 +2202,7 @@ msgstr "Vous ne pouvez télécharger le bien numérique qu'une seule fois" msgid "favicon not found" msgstr "favicon introuvable" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Erreur de géocodage : {e}" diff --git a/core/locale/hi_IN/LC_MESSAGES/django.po b/core/locale/hi_IN/LC_MESSAGES/django.po index 8b4925db..3bb48af1 100644 --- a/core/locale/hi_IN/LC_MESSAGES/django.po +++ b/core/locale/hi_IN/LC_MESSAGES/django.po @@ -3,12 +3,11 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -82,7 +81,7 @@ msgstr "" msgid "images" msgstr "" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "" @@ -110,11 +109,11 @@ msgstr "" msgid "important dates" msgstr "" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "" @@ -214,259 +213,300 @@ msgid "" "`product_uuid` and `attributes`." msgstr "" -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "rewrite some fields of an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "rewrite some fields of an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, order_products." +"product.name, and order_products.product.partnumber" +msgstr "" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created, " +"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" +"buy_time')." +msgstr "" + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -483,127 +523,180 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "" @@ -638,7 +731,6 @@ msgstr "" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "" @@ -660,7 +752,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" @@ -712,7 +804,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" @@ -875,7 +967,7 @@ msgstr "" msgid "products on sale" msgstr "" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "" @@ -891,11 +983,11 @@ msgstr "" msgid "product" msgstr "" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "" @@ -903,7 +995,7 @@ msgstr "" msgid "tagged products" msgstr "" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "" @@ -1049,7 +1141,7 @@ msgstr "" msgid "the specific product associated with this attribute's value" msgstr "" -#: core/models.py:145 core/models.py:840 core/models.py:954 core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 core/models.py:1147 msgid "associated product" msgstr "" @@ -1161,7 +1253,7 @@ msgstr "" msgid "product name" msgstr "" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "" @@ -1257,7 +1349,7 @@ msgstr "" msgid "order status" msgstr "" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" @@ -1297,440 +1389,454 @@ msgstr "" msgid "a user must have only one pending order at a time" msgstr "" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "" -#: core/models.py:586 core/models.py:606 core/models.py:630 core/models.py:1194 -#: core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 core/models.py:1218 +#: core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "" -#: core/models.py:913 -msgid "internal tag identifier for the product tag" -msgstr "" - -#: core/models.py:914 -msgid "tag name" -msgstr "" - #: core/models.py:918 -msgid "user-friendly name for the product tag" +#, python-brace-format +msgid "wrong action specified for feedback: {action}" msgstr "" -#: core/models.py:919 -msgid "tag display name" -msgstr "" - -#: core/models.py:927 -msgid "product tag" -msgstr "" - -#: core/models.py:936 -msgid "provide alternative text for the image for accessibility" +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" msgstr "" #: core/models.py:937 +msgid "internal tag identifier for the product tag" +msgstr "" + +#: core/models.py:938 +msgid "tag name" +msgstr "" + +#: core/models.py:942 +msgid "user-friendly name for the product tag" +msgstr "" + +#: core/models.py:943 +msgid "tag display name" +msgstr "" + +#: core/models.py:951 +msgid "product tag" +msgstr "" + +#: core/models.py:960 +msgid "provide alternative text for the image for accessibility" +msgstr "" + +#: core/models.py:961 msgid "image alt text" msgstr "" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "" @@ -1952,7 +2058,7 @@ msgstr "" msgid "favicon not found" msgstr "" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "" diff --git a/core/locale/it_IT/LC_MESSAGES/django.mo b/core/locale/it_IT/LC_MESSAGES/django.mo index cc449044..a38574ba 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 f1062655..f88fc363 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -83,7 +83,7 @@ msgstr "Immagine" msgid "images" msgstr "Immagini" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Stock" @@ -111,11 +111,11 @@ msgstr "Informazioni di base" msgid "important dates" msgstr "Date importanti" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Ordina il prodotto" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Ordinare i prodotti" @@ -220,159 +220,210 @@ msgstr "" "Acquistare un ordine come azienda, utilizzando i `prodotti` forniti con " "`product_uuid` e `attributi`." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "Elenco di tutti i gruppi di attributi (vista semplice)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperare un singolo gruppo di attributi (vista dettagliata)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Creare un gruppo di attributi" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Cancellare un gruppo di attributi" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Riscrivere un gruppo di attributi esistente salvando i non modificabili" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Riscrivere alcuni campi di un gruppo di attributi esistente salvando quelli " "non modificabili" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "Elenco di tutti gli attributi (vista semplice)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperare un singolo attributo (vista dettagliata)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Creare un attributo" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Cancellare un attributo" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Riscrivere un attributo esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Riscrivere alcuni campi di un attributo esistente salvando i campi non " "modificabili" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "Elenco di tutti i valori degli attributi (vista semplice)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperare il valore di un singolo attributo (vista dettagliata)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Creare un valore di attributo" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Cancellare il valore di un attributo" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Riscrivere il valore di un attributo esistente salvando gli elementi non " "modificabili" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Riscrivere alcuni campi di un valore di attributo esistente salvando i " "valori non modificabili" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "Elenco di tutte le categorie (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Recuperare una singola categoria (vista dettagliata)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Creare una categoria" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Eliminare una categoria" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" " modificabili" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "Elenco di tutte le categorie (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" "Per gli utenti che non fanno parte del personale, vengono restituiti solo i " "loro ordini." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Ricerca di sottostringhe senza distinzione di maiuscole e minuscole tra " +"human_readable_id, order_products.product.name e " +"order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Filtra gli ordini con buy_time >= questa data ISO 8601" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Filtra gli ordini con buy_time <= questa data ISO 8601" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filtrare per UUID dell'ordine esatto" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Filtrare in base all'ID esatto dell'ordine leggibile dall'uomo" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" +"Filtro per e-mail dell'utente (corrispondenza esatta senza distinzione tra " +"maiuscole e minuscole)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filtrare per UUID dell'utente" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "" +"Filtrare per stato dell'ordine (corrispondenza di sottostringhe senza " +"distinzione tra maiuscole e minuscole)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Ordinare per uno dei seguenti criteri: uuid, human_readable_id, user_email, " +"user, status, created, modified, buy_time, random. Prefisso con '-' per la " +"decrescita (ad esempio, '-buy_time')." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Recuperare una singola categoria (vista dettagliata)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Creare un attributo" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Non funziona per gli utenti che non fanno parte del personale." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Cancellare un attributo" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" " modificabili" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Prezzo di acquisto al momento dell'ordine" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -382,19 +433,19 @@ msgstr "" "l'acquisto viene completato utilizzando il saldo dell'utente; se si utilizza" " `forza_pagamento`, viene avviata una transazione." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "acquistare un ordine senza creare un account" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizza l'acquisto dell'ordine per un utente non registrato." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Aggiungere un prodotto all'ordine" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -402,13 +453,13 @@ msgstr "" "Aggiunge un prodotto a un ordine utilizzando il `product_uuid` e gli " "`attributi` forniti." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "" "Aggiungete un elenco di prodotti da ordinare, le quantità non vengono " "conteggiate" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -416,11 +467,11 @@ msgstr "" "Aggiunge un elenco di prodotti a un ordine, utilizzando il `product_uuid` e " "gli `attributi` forniti." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Rimuovere un prodotto dall'ordine" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -428,12 +479,12 @@ msgstr "" "Rimuove un prodotto da un ordine utilizzando il `product_uuid` e gli " "`attributi` forniti." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "" "Rimuovete un prodotto dall'ordine, le quantità non verranno conteggiate" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -441,84 +492,84 @@ msgstr "" "Rimuove un elenco di prodotti da un ordine utilizzando il `product_uuid` e " "gli `attributi` forniti." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "Elenco di tutti gli attributi (vista semplice)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Per gli utenti che non fanno parte del personale, vengono restituite solo le" " loro liste dei desideri." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperare un singolo attributo (vista dettagliata)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Creare un attributo" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Non funziona per gli utenti che non fanno parte del personale." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Cancellare un attributo" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Riscrivere un attributo esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Riscrivere alcuni campi di un attributo esistente salvando i campi non " "modificabili" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Aggiungere un prodotto all'ordine" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Aggiunge un prodotto a una lista dei desideri utilizzando il `product_uuid` " "fornito." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Rimuovere un prodotto dalla lista dei desideri" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Rimuove un prodotto da una wishlist utilizzando il `product_uuid` fornito." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Aggiungere molti prodotti alla lista dei desideri" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Aggiunge molti prodotti a una lista dei desideri utilizzando i " "`product_uuids` forniti." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Rimuove molti prodotti da una lista di desideri utilizzando i " "`product_uuids` forniti." -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -538,60 +589,56 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "Elenco di tutti i prodotti (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(esatto) UUID del prodotto" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(icontains) Nome del prodotto" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "" "(elenco) Nomi di categoria, senza distinzione tra maiuscole e minuscole" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(esatto) UUID della categoria" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(elenco) Nomi di tag, senza distinzione tra maiuscole e minuscole" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Prezzo minimo delle azioni" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Prezzo massimo del titolo" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(esatto) Solo prodotti attivi" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Nome del marchio" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantità minima di scorte" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(esatto) Prodotto slug" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(esatto) Digitale e fisico" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -599,72 +646,132 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Recuperare un singolo prodotto (vista dettagliata)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "UUID o Slug del prodotto" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Creare un prodotto" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Riscrivere un prodotto esistente, preservando i campi non modificabili" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Eliminare un prodotto" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "elenca tutti i feedback consentiti per un prodotto" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "Elenco di tutti gli indirizzi" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Recuperare un singolo indirizzo" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Creare un nuovo indirizzo" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Cancellare un indirizzo" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Aggiornare un intero indirizzo" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Aggiornare parzialmente un indirizzo" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Inserimento automatico dell'indirizzo" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Stringa di query dei dati grezzi, da aggiungere ai dati dell'endpoint geo-IP" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita la quantità di risultati, 1 < limite < 10, default: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "elencare tutti i feedback (vista semplice)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "recuperare un singolo feedback (vista dettagliata)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "creare un feedback" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "eliminare un feedback" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "" +"Riscrivere una categoria esistente salvando gli elementi non modificabili" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "elencare tutte le relazioni ordine-prodotto (vista semplice)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "recuperare una singola relazione ordine-prodotto (vista dettagliata)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "creare una nuova relazione ordine-prodotto" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "sostituire una relazione ordine-prodotto esistente" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "aggiornare parzialmente una relazione ordine-prodotto esistente" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "eliminare una relazione ordine-prodotto" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "aggiungere o rimuovere un feedback su una relazione ordine-prodotto" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Non è stato fornito alcun termine di ricerca." @@ -699,7 +806,6 @@ msgstr "Aggiungere un prodotto all'ordine" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Ordine {order_uuid} non trovato" @@ -722,7 +828,7 @@ msgstr "" "Si prega di fornire order_uuid o order_hr_id, che si escludono a vicenda!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}" @@ -777,7 +883,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Stringa di indirizzo originale fornita dall'utente" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} non esiste: {uuid}" @@ -946,7 +1052,7 @@ msgstr "Codici promozionali" msgid "products on sale" msgstr "Prodotti in vendita" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Promozioni" @@ -962,11 +1068,11 @@ msgstr "Venditore" msgid "product" msgstr "Prodotto" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Prodotti desiderati" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Liste dei desideri" @@ -974,7 +1080,7 @@ msgstr "Liste dei desideri" msgid "tagged products" msgstr "Prodotti contrassegnati" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Tag del prodotto" @@ -1121,8 +1227,8 @@ msgstr "Attributo di questo valore" msgid "the specific product associated with this attribute's value" msgstr "Il prodotto specifico associato al valore di questo attributo" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Prodotto associato" @@ -1235,7 +1341,7 @@ msgstr "Fornire un nome identificativo chiaro per il prodotto" msgid "product name" msgstr "Nome del prodotto" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Aggiungere una descrizione dettagliata del prodotto" @@ -1335,7 +1441,7 @@ msgstr "Stato attuale dell'ordine nel suo ciclo di vita" msgid "order status" msgstr "Stato dell'ordine" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "Struttura JSON delle notifiche da mostrare agli utenti; nell'interfaccia " @@ -1377,67 +1483,67 @@ msgstr "Ordine" msgid "a user must have only one pending order at a time" msgstr "Un utente può avere un solo ordine pendente alla volta!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Non è possibile aggiungere prodotti a un ordine che non sia in sospeso." -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "Non è possibile aggiungere all'ordine prodotti inattivi" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "" "Non è possibile aggiungere più prodotti di quelli disponibili in magazzino" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} non esiste: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "Non è possibile rimuovere i prodotti da un ordine che non è in corso." -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} non esiste con la query <{query}>." -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Il codice promozionale non esiste" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "" "È possibile acquistare solo prodotti fisici con indirizzo di spedizione " "specificato!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "L'indirizzo non esiste" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "In questo momento non è possibile acquistare, riprovare tra qualche minuto." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Valore di forza non valido" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "Non è possibile acquistare un ordine vuoto!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Fondi insufficienti per completare l'ordine" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1446,7 +1552,7 @@ msgstr "" "seguenti informazioni: nome del cliente, e-mail del cliente, numero di " "telefono del cliente" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1454,184 +1560,193 @@ msgstr "" "Metodo di pagamento non valido: {payment_method} da " "{available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "" "Il prezzo pagato dal cliente per questo prodotto al momento dell'acquisto." -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Prezzo di acquisto al momento dell'ordine" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "Commenti interni per gli amministratori su questo prodotto ordinato" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Commenti interni" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "Notifiche degli utenti" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "Rappresentazione JSON degli attributi di questo elemento" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Attributi del prodotto ordinati" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Riferimento all'ordine padre che contiene questo prodotto" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Ordine dei genitori" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "Il prodotto specifico associato a questa riga d'ordine" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Quantità di questo prodotto specifico nell'ordine" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Quantità di prodotto" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Stato attuale di questo prodotto nell'ordine" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Stato della linea di prodotti" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "azione errata specificata per il feedback: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "non è possibile dare un riscontro a un ordine non ricevuto" + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Identificatore interno dell'etichetta del prodotto" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Nome del tag" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "Nome intuitivo per l'etichetta del prodotto" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Nome del tag" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Etichetta del prodotto" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "" "Fornire un testo alternativo per l'immagine ai fini dell'accessibilità." -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Testo alt dell'immagine" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Caricare il file immagine per questo prodotto" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Immagine del prodotto" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Determina l'ordine di visualizzazione delle immagini" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Priorità del display" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "Il prodotto che questa immagine rappresenta" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Immagini del prodotto" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "Codice univoco utilizzato da un utente per riscattare uno sconto" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Identificatore del codice promozionale" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "" "Importo fisso dello sconto applicato se non si utilizza la percentuale" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Importo fisso dello sconto" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "Sconto percentuale applicato se l'importo fisso non viene utilizzato" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Sconto percentuale" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Data di scadenza del codice promozionale" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "Tempo di validità finale" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Data a partire dalla quale il codice promozionale è valido" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Ora di inizio validità" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Timestamp in cui è stato utilizzato il codice promozionale, vuoto se non " "ancora utilizzato" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Timestamp d'uso" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "Utente assegnato a questo codice promozionale, se applicabile" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Utente assegnato" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Codice promozionale" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Codici promozionali" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1639,195 +1754,202 @@ msgstr "" "È necessario definire un solo tipo di sconto (importo o percentuale), ma non" " entrambi o nessuno." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "Il codice promozionale è già stato utilizzato" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo di sconto non valido per il codice promozionale {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Percentuale di sconto per i prodotti selezionati" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Percentuale di sconto" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Fornite un nome unico per questa promozione" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Nome della promozione" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Descrizione della promozione" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Selezionare i prodotti inclusi in questa promozione" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Prodotti inclusi" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Promozione" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "Il venditore che fornisce questo stock di prodotti" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Venditore associato" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Prezzo finale al cliente dopo i ricarichi" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Prezzo di vendita" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "Il prodotto associato a questa voce di magazzino" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "Il prezzo pagato al venditore per questo prodotto" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Prezzo di acquisto del fornitore" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Quantità disponibile del prodotto in magazzino" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Quantità in magazzino" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU assegnato dal fornitore per identificare il prodotto" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "SKU del venditore" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "File digitale associato a questo stock, se applicabile" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "File digitale" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Voci di magazzino" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Prodotti che l'utente ha contrassegnato come desiderati" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "Utente che possiede questa wishlist" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Proprietario della lista dei desideri" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Lista dei desideri" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Scaricare" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Scaricamento" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "Non è possibile scaricare un bene digitale per un ordine non finito." -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Documentario" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Documentari" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Non risolto" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Indirizzo del cliente" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Linea di indirizzo" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Via" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "Distretto" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "Città" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Regione" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Codice postale" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "Paese" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Punto di geolocalizzazione(Longitudine, Latitudine)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Risposta JSON completa di geocoder per questo indirizzo" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Risposta JSON memorizzata dal servizio di geocodifica" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Indirizzo" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Indirizzi" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"per aggiungere un feedback è necessario fornire un commento, una valutazione" +" e l'uuid del prodotto dell'ordine." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Errore durante la creazione del codice promozionale: {e!s}" @@ -2063,7 +2185,7 @@ msgstr "È possibile scaricare l'asset digitale una sola volta" msgid "favicon not found" msgstr "favicon non trovata" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Errore di geocodifica: {e}" diff --git a/core/locale/ja_JP/LC_MESSAGES/django.mo b/core/locale/ja_JP/LC_MESSAGES/django.mo index 33a1017d..e01ae29a 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 0f3e8cf9..7646b5e2 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -79,7 +79,7 @@ msgstr "画像" msgid "images" msgstr "画像" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "在庫" @@ -107,11 +107,11 @@ msgstr "基本情報" msgid "important dates" msgstr "重要な日程" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "商品のご注文" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "商品のご注文" @@ -213,141 +213,184 @@ msgid "" "`product_uuid` and `attributes`." msgstr "提供された `product` と `product_uuid` と `attributes` を使用して、ビジネスとして注文を購入する。" -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "すべての属性グループをリストアップ(シンプルビュー)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "単一の属性グループを取得する(詳細表示)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "属性グループの作成" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "属性グループの削除" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "既存の属性グループを書き換えて、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "すべての属性をリストアップ(シンプルな表示)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "単一の属性を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "属性を作成する" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "属性を削除する" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "既存の属性を書き換える。" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "すべての属性値をリストアップ(シンプルビュー)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "単一の属性値を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "属性値の作成" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "属性値の削除" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "既存の属性値を書き換える。" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "全カテゴリーを一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "単一のカテゴリーを取得する(詳細表示)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "カテゴリーを作成する" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "カテゴリーの削除" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "既存のカテゴリーを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "編集不可を保存している既存のカテゴリのいくつかのフィールドを書き換える" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "全カテゴリーを一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "スタッフ以外のユーザーについては、自分の注文のみが返却される。" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"human_readable_id、order_products.product.name、order_products.product.partnumberの大文字小文字を区別しない部分文字列検索" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "buy_time >= このISO 8601の日時を持つ注文をフィルタリングする。" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "buy_time <= このISO 8601の日付時間の注文をフィルタリングする。" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "正確な順序UUIDによるフィルタリング" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "人間が読み取れる正確な注文IDによるフィルタリング" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "ユーザーのEメールによるフィルタリング(大文字・小文字を区別しない完全一致)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "ユーザーのUUIDによるフィルタリング" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "注文ステータスによるフィルタリング(大文字と小文字を区別しない部分文字列マッチ)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"uuid、human_readable_id、user_email、user、status、created、modified、buy_time、randomのいずれかによる順序。降順の場合は'-'をプレフィックスとしてつける(例:'-buy_time')。" + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "単一のカテゴリーを取得する(詳細表示)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "属性を作成する" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "スタッフ以外のユーザーには使えない。" -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "属性を削除する" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "既存のカテゴリーを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "編集不可を保存している既存のカテゴリのいくつかのフィールドを書き換える" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "注文時の購入価格" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -356,120 +399,120 @@ msgstr "" "注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用して購入が完了します。 `force_payment` " "が使用された場合、トランザクションが開始されます。" -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "アカウントを作成せずに注文を購入する" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "は、未登録ユーザーの注文購入を確定します。" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "注文に商品を追加する" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "数量はカウントされません。" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "指定された `product_uuid` と `attributes` を使用して、注文に商品のリストを追加する。" -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "注文から商品を削除する" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "指定された `product_uuid` と `attributes` を使用して、注文から商品を削除する。" -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "注文から商品を削除すると、数量はカウントされません。" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "指定された `product_uuid` と `attributes` を用いて、注文から商品のリストを削除する。" -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "すべての属性をリストアップ(シンプルな表示)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "スタッフ以外のユーザーには、自分のウィッシュリストのみが返されます。" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "単一の属性を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "属性を作成する" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "スタッフ以外のユーザーには使えない。" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "属性を削除する" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "既存の属性を書き換える。" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "注文に商品を追加する" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "指定された `product_uuid` を使ってウィッシュリストに商品を追加する。" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "ウィッシュリストから商品を削除する" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "ウィッシュリストに多くの商品を追加する" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "注文から商品を削除する" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -489,59 +532,55 @@ msgstr "" "color=exact-red`、`size=gt-10`、`features=in-[\"wifi\", \"bluetooth\"]`、\n" "b64-description=icontains-aGVhdC1jb2xk`。" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "全商品を一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(正確には)製品UUID" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(アイコン) 製品名" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(リスト)カテゴリー名、大文字と小文字は区別しない" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(正確には)カテゴリーUUID" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(リスト) タグ名、大文字と小文字は区別されない" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(最低株価" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(最大株価" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(正確には)アクティブ製品のみ" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(商品名" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(最低在庫量" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(正確には)製品スラッグ" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(正確には)デジタルとフィジカル" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -549,61 +588,66 @@ msgstr "" "カンマ区切りの並べ替えフィールドのリスト。降順の場合は `-` をプレフィックスとしてつける。 \n" "**許可:** uuid, rating, name, slug, created, modified, price, random" -#: core/docs/drf/viewsets.py:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "単一の製品を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "製品UUIDまたはスラグ" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "製品を作る" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "編集不可能なフィールドを保持したまま、既存の製品を書き換える。" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新する。" -#: core/docs/drf/viewsets.py:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "製品を削除する" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "製品に対して許可されたすべてのフィードバックを一覧表示します。" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "全住所のリスト" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "単一アドレスの取得" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "新しいアドレスを作成する" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "アドレスの削除" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "アドレス全体の更新" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "アドレスの一部更新" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "オートコンプリート住所入力" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "docker compose exec app poetry run python manage.py deepl_translate -l en-gb" @@ -611,10 +655,62 @@ msgstr "" "it-it -l ja-jp -l kk-kz -l n-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" "hans -a core -a geo -a payments -a vibes_auth -a blog" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "結果を制限する, 1 < limit < 10, デフォルト: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "すべてのフィードバックを表示する(シンプルな表示)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "単一のフィードバックを取得する(詳細表示)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "フィードバックを作成する" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "フィードバックを削除する" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "既存のフィードバックを書き換える。" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "既存のフィードバックのいくつかのフィールドを書き換えて、編集不可能なものを保存する。" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "すべての注文と商品の関係をリストアップする(シンプルビュー)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "単一の注文と商品の関係を取得する(詳細表示)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "新しい注文と商品の関係を作る" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "既存の注文と商品の関係を置き換える" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "既存の注文と商品の関係を部分的に更新する" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "注文と商品の関係を削除する" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "注文と商品の関係に関するフィードバックを追加または削除する。" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "検索語はありません。" @@ -649,7 +745,6 @@ msgstr "注文に商品を追加する" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "注文{order_uuid}が見つかりません" @@ -671,7 +766,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "order_uuidまたはorder_hr_idを入力してください!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy()メソッドから間違った型が来た:{type(instance)!s}。" @@ -723,7 +818,7 @@ msgstr "属性は、attr1=value1,attr2=value2のような形式の文字列と msgid "original address string provided by the user" msgstr "ユーザーが提供したオリジナルのアドレス文字列" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} は存在しません:{uuid} は存在しません。" @@ -887,7 +982,7 @@ msgstr "プロモコード" msgid "products on sale" msgstr "販売商品" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "プロモーション" @@ -903,11 +998,11 @@ msgstr "ベンダー" msgid "product" msgstr "製品" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "ウィッシュリスト掲載商品" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "ウィッシュリスト" @@ -915,7 +1010,7 @@ msgstr "ウィッシュリスト" msgid "tagged products" msgstr "タグ別アーカイブ" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "商品タグ" @@ -1061,8 +1156,8 @@ msgstr "この値の属性" msgid "the specific product associated with this attribute's value" msgstr "この属性の値に関連する特定の製品" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "関連製品" @@ -1174,7 +1269,7 @@ msgstr "製品の明確な識別名を提供する" msgid "product name" msgstr "商品名" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "商品の詳細説明を追加する" @@ -1271,7 +1366,7 @@ msgstr "ライフサイクルにおける現在の注文状況" msgid "order status" msgstr "注文状況" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" @@ -1311,440 +1406,454 @@ msgstr "オーダー" msgid "a user must have only one pending order at a time" msgstr "ユーザーは一度に1つの未決注文しか持つことができません!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "保留中の注文以外の注文に商品を追加することはできません。" -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "アクティブでない商品を注文に追加することはできません。" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "在庫以上の商品を追加することはできません。" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name}が存在しません:{product_uuid}が存在しません。" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "保留中の注文以外の注文から商品を削除することはできません。" -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "クエリ<{query}>で{name}が存在しません。" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "プロモコードが存在しない" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "配送先住所が指定された現物商品のみ購入可能!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "アドレスが存在しない" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "現在ご購入いただけません。数分後にもう一度お試しください。" -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "無効なフォース値" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "空注文はできません!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "注文を完了するための資金不足" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お客様のお名前、お客様のEメール、お客様の電話番号" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "支払方法が無効です:{available_payment_methods}からの{payment_method}が無効です!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "この商品の購入時に顧客が支払った価格" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "注文時の購入価格" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "この注文商品に関する管理者への内部コメント" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "社内コメント" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "ユーザー通知" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "このアイテムの属性のJSON表現" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "製品属性の順序" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "この商品を含む親注文への参照" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "親注文" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "この注文ラインに関連する特定の製品" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "注文に含まれる特定の商品の数量" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "製品数量" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "この商品の現在のご注文状況" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "製品ラインの状況" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "フィードバックに指定されたアクションが間違っています:{action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "受信していない注文をフィードバックすることはできません。" + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "商品タグの内部タグ識別子" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "タグ名" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "商品タグのユーザーフレンドリーな名前" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "タグ表示名" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "商品タグ" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "アクセシビリティのために、画像に代替テキストを提供する。" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "画像のaltテキスト" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "この商品の画像ファイルをアップロードする" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "商品画像" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "画像の表示順を決める" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "表示優先度" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "この画像が表す製品" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "商品画像" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "ユーザーが割引を利用する際に使用する固有のコード" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "プロモコード識別子" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "パーセントを使用しない場合に適用される固定割引額" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "固定割引額" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "定額を使用しない場合に適用される割引率" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "割引率" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "プロモコードの有効期限が切れるタイムスタンプ" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "終了有効時間" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "このプロモコードが有効なタイムスタンプ" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "開始有効時間" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "プロモコードが使用されたタイムスタンプ、未使用の場合は空白" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "使用タイムスタンプ" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "該当する場合、このプロモコードに割り当てられたユーザー" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "担当ユーザー" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "プロモコード" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "プロモコード" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちらも定義してはならない。" -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "プロモコードはすでに使用されています" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "プロモコード {self.uuid} の割引タイプが無効です。" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "選択した商品の割引率" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "割引率" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "このプロモーションのユニークな名前を入力してください。" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "プロモーション名" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "プロモーション内容" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "キャンペーン対象商品をお選びください。" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "含まれる製品" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "プロモーション" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "この製品の在庫を供給しているベンダー" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "関連ベンダー" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "マークアップ後の顧客への最終価格" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "販売価格" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "このストックエントリーに関連する製品" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "この製品に対してベンダーに支払われた価格" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "ベンダーの購入価格" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "在庫数" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "在庫数" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "製品を識別するためにベンダーが割り当てたSKU" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "ベンダーのSKU" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "この銘柄に関連するデジタルファイル(該当する場合" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "デジタルファイル" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "ストックエントリー" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "ユーザーが欲しいとマークした商品" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "このウィッシュリストを所有しているユーザー" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "ウィッシュリストのオーナー" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "ウィッシュリスト" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "ダウンロード" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "ダウンロード" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "未完成の注文のデジタル資産をダウンロードすることはできません。" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "ドキュメンタリー" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "ドキュメンタリー" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "未解決" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "お客様の住所" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "住所" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "ストリート" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "地区" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "都市" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "地域" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "郵便番号" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "国名" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "ジオロケーションポイント(経度、緯度)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "この住所に対するジオコーダーからの完全なJSON応答" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "ジオコーディング・サービスからの保存されたJSONレスポンス" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "住所" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "住所" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "フィードバックを追加するには、コメント、評価、および注文商品の uuid を入力する必要があります。" + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "プロモコード作成中にエラーが発生しました:{e!s}です。" @@ -1966,7 +2075,7 @@ msgstr "デジタルアセットのダウンロードは1回限りです。" msgid "favicon not found" msgstr "ファビコンが見つかりません" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "ジオコーディングエラー:{e}" diff --git a/core/locale/kk_KZ/LC_MESSAGES/django.po b/core/locale/kk_KZ/LC_MESSAGES/django.po index 8b4925db..3bb48af1 100644 --- a/core/locale/kk_KZ/LC_MESSAGES/django.po +++ b/core/locale/kk_KZ/LC_MESSAGES/django.po @@ -3,12 +3,11 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -82,7 +81,7 @@ msgstr "" msgid "images" msgstr "" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "" @@ -110,11 +109,11 @@ msgstr "" msgid "important dates" msgstr "" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "" @@ -214,259 +213,300 @@ msgid "" "`product_uuid` and `attributes`." msgstr "" -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "rewrite some fields of an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "rewrite some fields of an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, order_products." +"product.name, and order_products.product.partnumber" +msgstr "" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created, " +"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" +"buy_time')." +msgstr "" + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -483,127 +523,180 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "" @@ -638,7 +731,6 @@ msgstr "" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "" @@ -660,7 +752,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" @@ -712,7 +804,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" @@ -875,7 +967,7 @@ msgstr "" msgid "products on sale" msgstr "" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "" @@ -891,11 +983,11 @@ msgstr "" msgid "product" msgstr "" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "" @@ -903,7 +995,7 @@ msgstr "" msgid "tagged products" msgstr "" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "" @@ -1049,7 +1141,7 @@ msgstr "" msgid "the specific product associated with this attribute's value" msgstr "" -#: core/models.py:145 core/models.py:840 core/models.py:954 core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 core/models.py:1147 msgid "associated product" msgstr "" @@ -1161,7 +1253,7 @@ msgstr "" msgid "product name" msgstr "" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "" @@ -1257,7 +1349,7 @@ msgstr "" msgid "order status" msgstr "" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" @@ -1297,440 +1389,454 @@ msgstr "" msgid "a user must have only one pending order at a time" msgstr "" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "" -#: core/models.py:586 core/models.py:606 core/models.py:630 core/models.py:1194 -#: core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 core/models.py:1218 +#: core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "" -#: core/models.py:913 -msgid "internal tag identifier for the product tag" -msgstr "" - -#: core/models.py:914 -msgid "tag name" -msgstr "" - #: core/models.py:918 -msgid "user-friendly name for the product tag" +#, python-brace-format +msgid "wrong action specified for feedback: {action}" msgstr "" -#: core/models.py:919 -msgid "tag display name" -msgstr "" - -#: core/models.py:927 -msgid "product tag" -msgstr "" - -#: core/models.py:936 -msgid "provide alternative text for the image for accessibility" +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" msgstr "" #: core/models.py:937 +msgid "internal tag identifier for the product tag" +msgstr "" + +#: core/models.py:938 +msgid "tag name" +msgstr "" + +#: core/models.py:942 +msgid "user-friendly name for the product tag" +msgstr "" + +#: core/models.py:943 +msgid "tag display name" +msgstr "" + +#: core/models.py:951 +msgid "product tag" +msgstr "" + +#: core/models.py:960 +msgid "provide alternative text for the image for accessibility" +msgstr "" + +#: core/models.py:961 msgid "image alt text" msgstr "" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "" @@ -1952,7 +2058,7 @@ msgstr "" msgid "favicon not found" msgstr "" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "" diff --git a/core/locale/nl_NL/LC_MESSAGES/django.mo b/core/locale/nl_NL/LC_MESSAGES/django.mo index 347a3d31..1b7d9925 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 eb534c88..3395a42a 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -81,7 +81,7 @@ msgstr "Afbeelding" msgid "images" msgstr "Afbeeldingen" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Voorraad" @@ -109,11 +109,11 @@ msgstr "Basisinformatie" msgid "important dates" msgstr "Belangrijke data" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Product bestellen" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Producten bestellen" @@ -218,158 +218,205 @@ msgstr "" "Koop een bestelling in als een bedrijf, met behulp van de meegeleverde " "`producten` met `product_uuid` en `attributen`." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "Alle attribuutgroepen weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Een enkele groep kenmerken ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Een attribuutgroep maken" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Een attribuutgroep verwijderen" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Een bestaande attribuutgroep herschrijven en niet-wijzigbare attributen " "opslaan" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Enkele velden van een bestaande attribuutgroep herschrijven door niet-" "wijzigbare velden op te slaan" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "Alle attributen weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Een enkel kenmerk ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Een attribuut maken" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Een attribuut verwijderen" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Een bestaand attribuut herschrijven en niet-wijzigbare attributen opslaan" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaand attribuut door niet-wijzigbare " "velden op te slaan" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "Alle attribuutwaarden weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Een waarde voor een enkel kenmerk ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Een attribuutwaarde maken" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Een attribuutwaarde verwijderen" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Een bestaande attribuutwaarde herschrijven waarbij niet-wijzigbare " "attributen worden opgeslagen" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande attribuutwaarde door niet-" "wijzigbare velden op te slaan" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "Alle categorieën weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Een enkele categorie ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Een categorie maken" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Een categorie verwijderen" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "Een bestaande categorie herschrijven en niet-wijzigbare items opslaan" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "Alle categorieën weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" "Voor niet-personeelsleden worden alleen hun eigen bestellingen " "geretourneerd." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Hoofdlettergevoelig substring zoeken in human_readable_id, " +"order_products.product.name en order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Filter orders met buy_time >= deze ISO 8601 datetime" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Filter orders met buy_time <= deze ISO 8601 datetime" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filter op exacte volgorde UUID" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Filter op exacte, door mensen leesbare bestel-ID" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" +"Filter op e-mail van gebruiker (hoofdlettergevoelige exacte overeenkomst)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filter op UUID van gebruiker" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "Filter op bestelstatus (hoofdlettergevoelige substringmatch)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Sorteer op een van: uuid, human_readable_id, user_email, gebruiker, status, " +"gemaakt, gewijzigd, buy_time, willekeurig. Voorvoegsel met '-' voor aflopend" +" (bijv. '-buy_time')." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Een enkele categorie ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Een attribuut maken" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Werkt niet voor gebruikers die geen personeel zijn." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Een attribuut verwijderen" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "Een bestaande categorie herschrijven en niet-wijzigbare items opslaan" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Aankoopprijs bij bestelling" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -379,21 +426,21 @@ msgstr "" "wordt de aankoop afgerond met het saldo van de gebruiker; als " "`force_payment` wordt gebruikt, wordt een transactie gestart." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "een bestelling kopen zonder een account aan te maken" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "" "Rondt de aankoop van de bestelling af voor een niet-geregistreerde " "gebruiker." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Een product aan de bestelling toevoegen" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -401,13 +448,13 @@ msgstr "" "Voegt een product toe aan een bestelling met de opgegeven `product_uuid` en " "`attributen`." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "" "Voeg een lijst met producten toe om te bestellen, hoeveelheden tellen niet " "mee" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -415,11 +462,11 @@ msgstr "" "Voegt een lijst met producten toe aan een bestelling met behulp van de " "opgegeven `product_uuid` en `attributen`." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Een product uit de bestelling verwijderen" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -427,11 +474,11 @@ msgstr "" "Verwijdert een product uit een bestelling met behulp van de opgegeven " "`product_uuid` en `attributen`." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "Verwijder een product uit de bestelling, hoeveelheden tellen niet mee" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -439,85 +486,85 @@ msgstr "" "Verwijdert een lijst met producten uit een bestelling met behulp van de " "opgegeven `product_uuid` en `attributen`." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "Alle attributen weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Voor niet-personeelsleden worden alleen hun eigen verlanglijstjes " "geretourneerd." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Een enkel kenmerk ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Een attribuut maken" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Werkt niet voor gebruikers die geen personeel zijn." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Een attribuut verwijderen" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Een bestaand attribuut herschrijven en niet-wijzigbare attributen opslaan" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaand attribuut door niet-wijzigbare " "velden op te slaan" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Een product aan de bestelling toevoegen" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Voegt een product toe aan een verlanglijstje met behulp van de opgegeven " "`product_uuid`." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Een product uit het verlanglijstje verwijderen" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Verwijdert een product van een verlanglijstje met behulp van de opgegeven " "`product_uuid`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Veel producten toevoegen aan het verlanglijstje" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Voegt veel producten toe aan een verlanglijstje met behulp van de opgegeven " "`product_uuids`." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Een product uit de bestelling verwijderen" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Verwijdert een groot aantal producten uit een verlanglijstje met behulp van " "de opgegeven `product_uuids`." -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -537,59 +584,55 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "Alle producten weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(exacte) UUID van product" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(pictogrammen) Productnaam" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(lijst) Categorienamen, hoofdlettergevoelig" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(exacte) UUID van categorie" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(lijst) Labelnamen, hoofdlettergevoelig" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Minimale aandelenprijs" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Maximale aandelenprijs" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(exact) Alleen actieve producten" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Merknaam" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimumvoorraad" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(exacte) productnaam" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(exact) Digitaal vs. fysiek" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -597,73 +640,135 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Een enkel product ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "Product UUID of Slug" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Een product maken" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 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:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Een product verwijderen" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "somt alle toegestane feedbacks voor een product op" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "Vermeld alle adressen" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Een enkel adres ophalen" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Een nieuw adres maken" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Een adres verwijderen" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Een heel adres bijwerken" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Een adres gedeeltelijk bijwerken" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Automatische adresinvoer" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Ruwe gegevensquerystring, gelieve aan te vullen met gegevens van geo-IP " "eindpunt" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "beperkt de hoeveelheid resultaten, 1 < limiet < 10, standaard: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "alle feedbacks weergeven (eenvoudige weergave)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "een enkele feedback ophalen (gedetailleerde weergave)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "een feedback creëren" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "een feedback verwijderen" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "" +"een bestaande feedback herschrijven waarbij niet-wijzigbare gegevens worden " +"opgeslagen" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" +"Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " +"velden op te slaan" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "alle order-productrelaties weergeven (eenvoudige weergave)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "" +"een enkele bestelling-productrelatie ophalen (gedetailleerde weergave)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "een nieuwe bestelling-product relatie maken" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "een bestaande order-productrelatie vervangen" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "een bestaande order-productrelatie gedeeltelijk bijwerken" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "een order-productrelatie verwijderen" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "feedback toevoegen of verwijderen op een order-productrelatie" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Geen zoekterm opgegeven." @@ -698,7 +803,6 @@ msgstr "Een product aan de bestelling toevoegen" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Order {order_uuid} niet gevonden" @@ -720,7 +824,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:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Verkeerd type kwam uit order.buy() methode: {type(instance)!s}" @@ -773,7 +877,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Originele adresstring geleverd door de gebruiker" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} bestaat niet: {uuid}" @@ -943,7 +1047,7 @@ msgstr "Promocodes" msgid "products on sale" msgstr "Producten te koop" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Promoties" @@ -959,11 +1063,11 @@ msgstr "Verkoper" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Gewenste producten" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Verlanglijst" @@ -971,7 +1075,7 @@ msgstr "Verlanglijst" msgid "tagged products" msgstr "Getagde producten" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Product tags" @@ -1119,8 +1223,8 @@ msgstr "Attribuut van deze waarde" msgid "the specific product associated with this attribute's value" msgstr "Het specifieke product geassocieerd met de waarde van dit kenmerk" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Bijbehorend product" @@ -1232,7 +1336,7 @@ msgstr "Zorg voor een duidelijke identificerende naam voor het product" msgid "product name" msgstr "Naam product" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Voeg een gedetailleerde beschrijving van het product toe" @@ -1334,7 +1438,7 @@ msgstr "Huidige status van de order in zijn levenscyclus" msgid "order status" msgstr "Bestelstatus" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "JSON-structuur van meldingen om weer te geven aan gebruikers, in admin UI " @@ -1376,67 +1480,67 @@ msgstr "Bestel" msgid "a user must have only one pending order at a time" msgstr "Een gebruiker mag maar één lopende order tegelijk hebben!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "" "U kunt geen producten toevoegen aan een bestelling die niet in behandeling " "is." -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "U kunt geen inactieve producten toevoegen aan uw bestelling" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "Je kunt niet meer producten toevoegen dan er op voorraad zijn" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} bestaat niet: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "U kunt geen producten verwijderen uit een bestelling die niet in behandeling" " is." -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} bestaat niet met query <{query}>" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Promocode bestaat niet" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "Je kunt alleen fysieke producten kopen met opgegeven verzendadres!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "Adres bestaat niet" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "U kunt op dit moment niet kopen. Probeer het over een paar minuten nog eens." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Ongeldige krachtwaarde" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "Je kunt geen lege bestelling kopen!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Onvoldoende fondsen om de bestelling te voltooien" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1444,7 +1548,7 @@ msgstr "" "u niet kunt kopen zonder registratie, geef dan de volgende informatie: " "klantnaam, e-mail klant, telefoonnummer klant" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1452,184 +1556,195 @@ msgstr "" "Ongeldige betalingsmethode: {payment_method} van " "{available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "De prijs die de klant bij aankoop voor dit product heeft betaald" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Aankoopprijs bij bestelling" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "Interne opmerkingen voor beheerders over dit bestelde product" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Interne opmerkingen" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "Meldingen van gebruikers" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "JSON weergave van de attributen van dit item" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Geordende producteigenschappen" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Verwijzing naar de bovenliggende bestelling die dit product bevat" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Ouderlijk bevel" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "Het specifieke product dat bij deze bestelregel hoort" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Hoeveelheid van dit specifieke product in de bestelling" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Hoeveelheid product" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Huidige status van dit product in de bestelling" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Status productlijn" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "verkeerde actie opgegeven voor feedback: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "" +"U kunt geen producten verwijderen uit een bestelling die niet in behandeling" +" is." + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Interne tagidentifier voor de producttag" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Tag naam" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "Gebruiksvriendelijke naam voor de producttag" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Tag weergavenaam" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Productlabel" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "Geef alternatieve tekst voor de afbeelding voor toegankelijkheid" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Alt-tekst afbeelding" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Upload het afbeeldingsbestand voor dit product" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Product afbeelding" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Bepaalt de volgorde waarin afbeeldingen worden weergegeven" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Prioriteit weergeven" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "Het product dat deze afbeelding vertegenwoordigt" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Product afbeeldingen" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "Unieke code die een gebruiker gebruikt om een korting te verzilveren" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Promo code identificatie" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "" "Vast kortingsbedrag dat wordt toegepast als percentage niet wordt gebruikt" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Vast kortingsbedrag" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Kortingspercentage dat wordt toegepast als het vaste bedrag niet wordt " "gebruikt" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Kortingspercentage" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Tijdstempel wanneer de promocode verloopt" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "Geldigheidsduur einde" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Tijdstempel vanaf wanneer deze promocode geldig is" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Begin geldigheidsduur" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Tijdstempel wanneer de promocode werd gebruikt, leeg indien nog niet " "gebruikt" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Gebruik tijdstempel" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "Gebruiker toegewezen aan deze promocode indien van toepassing" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Toegewezen gebruiker" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Kortingscode" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Actiecodes" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1637,196 +1752,203 @@ msgstr "" "Er moet slechts één type korting worden gedefinieerd (bedrag of percentage)," " maar niet beide of geen van beide." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "Promocode is al gebruikt" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ongeldig kortingstype voor promocode {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Kortingspercentage voor de geselecteerde producten" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Kortingspercentage" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Geef deze promotie een unieke naam" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Naam promotie" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Promotie beschrijving" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Selecteer welke producten onder deze promotie vallen" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Meegeleverde producten" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Promotie" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "De verkoper die dit product levert" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Geassocieerde verkoper" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Eindprijs voor de klant na winstmarges" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Verkoopprijs" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "Het product dat bij deze voorraadvermelding hoort" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "De prijs die voor dit product aan de verkoper is betaald" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Aankoopprijs verkoper" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Beschikbare hoeveelheid van het product in voorraad" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Hoeveelheid op voorraad" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "Door de verkoper toegewezen SKU om het product te identificeren" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "Verkoper SKU" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "Digitaal bestand gekoppeld aan deze voorraad indien van toepassing" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Digitaal bestand" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Voorraadboekingen" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Producten die de gebruiker als gewenst heeft gemarkeerd" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "Gebruiker die eigenaar is van deze verlanglijst" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Eigenaar verlanglijstje" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Verlanglijst" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Downloaden" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Downloads" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "" "U kunt geen digitale activa downloaden voor een niet-afgeronde bestelling" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Documentaire" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Documentaires" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Onopgelost" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Adresregel voor de klant" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Adresregel" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Straat" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "District" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "Stad" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Regio" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Postcode" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "Land" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocatie Punt (lengtegraad, breedtegraad)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Volledig JSON-antwoord van geocoder voor dit adres" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Opgeslagen JSON-antwoord van de geocoderingsservice" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Adres" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Adressen" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"Om feedback toe te voegen, moet je een opmerking, beoordeling en " +"productidentificatie opgeven." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Fout tijdens aanmaken promocode: {e!s}" @@ -2062,7 +2184,7 @@ msgstr "U kunt het digitale goed maar één keer downloaden" msgid "favicon not found" msgstr "favicon niet gevonden" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Fout bij geocodering: {e}" diff --git a/core/locale/pl_PL/LC_MESSAGES/django.mo b/core/locale/pl_PL/LC_MESSAGES/django.mo index d845ae90..6463c9bc 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 b505b9bf..ae8418bd 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -83,7 +83,7 @@ msgstr "Obraz" msgid "images" msgstr "Obrazy" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Stan magazynowy" @@ -111,11 +111,11 @@ msgstr "Podstawowe informacje" msgid "important dates" msgstr "Ważne daty" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Zamów produkt" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Zamawianie produktów" @@ -219,158 +219,210 @@ msgstr "" "Kup zamówienie jako firma, używając dostarczonych `products` z " "`product_uuid` i `attributes`." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "Lista wszystkich grup atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Pobieranie pojedynczej grupy atrybutów (widok szczegółowy)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Tworzenie grupy atrybutów" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Usuwanie grupy atrybutów" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Przepisanie istniejącej grupy atrybutów z zachowaniem atrybutów " "nieedytowalnych" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Przepisanie niektórych pól istniejącej grupy atrybutów z zachowaniem " "atrybutów nieedytowalnych" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "Lista wszystkich atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Pobieranie pojedynczego atrybutu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Utwórz atrybut" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Usuwanie atrybutu" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Przepisanie istniejącego atrybutu z zachowaniem atrybutów nieedytowalnych" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Przepisanie niektórych pól istniejącego atrybutu z zachowaniem atrybutów " "nieedytowalnych" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "Lista wszystkich wartości atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Pobieranie wartości pojedynczego atrybutu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Tworzenie wartości atrybutu" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Usuwanie wartości atrybutu" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Przepisanie istniejącej wartości atrybutu z zachowaniem atrybutów " "nieedytowalnych" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej wartości atrybutu, zapisując wartości " "nieedytowalne" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "Lista wszystkich kategorii (widok prosty)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Pobieranie pojedynczej kategorii (widok szczegółowy)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Utwórz kategorię" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Usuwanie kategorii" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "Przepisz istniejącą kategorię, zapisując nieedytowalne elementy" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "Lista wszystkich kategorii (widok prosty)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" "W przypadku użytkowników niebędących pracownikami zwracane są tylko ich " "własne zamówienia." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Wyszukiwanie podciągów z uwzględnieniem wielkości liter w human_readable_id," +" order_products.product.name i order_products.product.partnumber." + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Filtruj zamówienia z buy_time >= ta data ISO 8601" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Filtruj zamówienia z buy_time <= ten ISO 8601 datetime" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filtruj według dokładnego identyfikatora UUID zamówienia" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "" +"Filtrowanie według dokładnego, czytelnego dla człowieka identyfikatora " +"zamówienia" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" +"Filtrowanie według adresu e-mail użytkownika (dokładne dopasowanie z " +"uwzględnieniem wielkości liter)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filtrowanie według identyfikatora UUID użytkownika" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "" +"Filtrowanie według statusu zamówienia (dopasowanie podciągu z uwzględnieniem" +" wielkości liter)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Kolejność według jednego z: uuid, human_readable_id, user_email, user, " +"status, created, modified, buy_time, random. Prefiks z \"-\" dla malejącego " +"(np. \"-buy_time\")." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Pobieranie pojedynczej kategorii (widok szczegółowy)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Utwórz atrybut" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Nie działa dla użytkowników spoza personelu." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Usuwanie atrybutu" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "Przepisz istniejącą kategorię, zapisując nieedytowalne elementy" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Cena zakupu w momencie zamówienia" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -380,19 +432,19 @@ msgstr "" "finalizowany przy użyciu salda użytkownika; Jeśli użyto `force_payment`, " "transakcja jest inicjowana." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "zakup zamówienia bez tworzenia konta" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizuje zakup zamówienia dla niezarejestrowanego użytkownika." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Dodawanie produktu do zamówienia" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -400,11 +452,11 @@ msgstr "" "Dodaje produkt do zamówienia przy użyciu podanych `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "Dodaj listę produktów do zamówienia, ilości nie będą liczone." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -412,11 +464,11 @@ msgstr "" "Dodaje listę produktów do zamówienia przy użyciu podanych `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Usunięcie produktu z zamówienia" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -424,11 +476,11 @@ msgstr "" "Usuwa produkt z zamówienia przy użyciu podanego `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "Usuń produkt z zamówienia, ilości nie będą liczone" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -436,81 +488,81 @@ msgstr "" "Usuwa listę produktów z zamówienia przy użyciu podanych `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "Lista wszystkich atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "W przypadku użytkowników niebędących pracownikami zwracane są tylko ich " "własne listy życzeń." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Pobieranie pojedynczego atrybutu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Utwórz atrybut" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Nie działa dla użytkowników spoza personelu." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Usuwanie atrybutu" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Przepisanie istniejącego atrybutu z zachowaniem atrybutów nieedytowalnych" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Przepisanie niektórych pól istniejącego atrybutu z zachowaniem atrybutów " "nieedytowalnych" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Dodawanie produktu do zamówienia" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Dodaje produkt do listy życzeń używając podanego `product_uuid`" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Usunięcie produktu z listy życzeń" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Usuwa produkt z listy życzeń przy użyciu podanego identyfikatora " "`product_uuid`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Dodaj wiele produktów do listy życzeń" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Dodaje wiele produktów do listy życzeń przy użyciu podanych `product_uuids`" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Usunięcie produktu z zamówienia" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Usuwa wiele produktów z listy życzeń przy użyciu podanych `product_uuids`" -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -530,59 +582,55 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "Lista wszystkich produktów (widok prosty)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(dokładny) UUID produktu" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(ikony) Nazwa produktu" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(lista) Nazwy kategorii, wielkość liter nie ma znaczenia" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(dokładny) UUID kategorii" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(lista) Nazwy tagów, wielkość liter nie ma znaczenia" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Minimalna cena akcji" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Maksymalna cena akcji" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(dokładnie) Tylko aktywne produkty" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Nazwa marki" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimalna ilość zapasów" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(dokładny) Ślimak produktu" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(dokładnie) Cyfrowe vs. fizyczne" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -590,72 +638,133 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Pobieranie pojedynczego produktu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "UUID produktu lub Slug" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Tworzenie produktu" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Przepisz istniejący produkt, zachowując nieedytowalne pola" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Usuń produkt" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "wyświetla wszystkie dozwolone informacje zwrotne dotyczące produktu" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "Lista wszystkich adresów" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Pobieranie pojedynczego adresu" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Utwórz nowy adres" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Usuwanie adresu" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Aktualizacja całego adresu" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Częściowa aktualizacja adresu" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Wprowadzanie adresu w trybie autouzupełniania" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Ciąg zapytania danych nieprzetworzonych, należy dołączyć dane z punktu " "końcowego geo-IP" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "ogranicza ilość wyników, 1 < limit < 10, domyślnie: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "lista wszystkich opinii (widok prosty)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "pobieranie pojedynczej informacji zwrotnej (widok szczegółowy)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "utworzyć informację zwrotną" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "usuwanie opinii" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "" +"przepisanie istniejącej informacji zwrotnej z zachowaniem elementów " +"nieedytowalnych" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" +"Przepisz niektóre pola istniejącej kategorii, zapisując elementy " +"nieedytowalne" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "lista wszystkich relacji zamówienie-produkt (widok prosty)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "pobranie pojedynczej relacji zamówienie-produkt (widok szczegółowy)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "utworzyć nową relację zamówienie-produkt" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "zastąpić istniejącą relację zamówienie-produkt" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "częściowa aktualizacja istniejącej relacji zamówienie-produkt" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "usunąć relację zamówienie-produkt" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "dodawanie lub usuwanie opinii na temat relacji zamówienie-produkt" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Nie podano wyszukiwanego hasła." @@ -690,7 +799,6 @@ msgstr "Dodawanie produktu do zamówienia" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Nie znaleziono zamówienia {order_uuid}" @@ -712,7 +820,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:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Nieprawidłowy typ pochodzi z metody order.buy(): {type(instance)!s}" @@ -766,7 +874,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Oryginalny ciąg adresu podany przez użytkownika" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nie istnieje: {uuid}" @@ -934,7 +1042,7 @@ msgstr "Promocodes" msgid "products on sale" msgstr "Produkty w sprzedaży" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Promocje" @@ -950,11 +1058,11 @@ msgstr "Sprzedawca" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Produkty z listy życzeń" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Listy życzeń" @@ -962,7 +1070,7 @@ msgstr "Listy życzeń" msgid "tagged products" msgstr "Produkty Tagged" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Tagi produktu" @@ -1108,8 +1216,8 @@ msgstr "Atrybut tej wartości" msgid "the specific product associated with this attribute's value" msgstr "Konkretny produkt powiązany z wartością tego atrybutu" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Produkt powiązany" @@ -1221,7 +1329,7 @@ msgstr "Wyraźna nazwa identyfikująca produkt" msgid "product name" msgstr "Nazwa produktu" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Dodaj szczegółowy opis produktu" @@ -1322,7 +1430,7 @@ msgstr "Aktualny status zamówienia w jego cyklu życia" msgid "order status" msgstr "Status zamówienia" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "Struktura JSON powiadomień do wyświetlenia użytkownikom, w interfejsie " @@ -1365,67 +1473,67 @@ msgid "a user must have only one pending order at a time" msgstr "" "Użytkownik może mieć tylko jedno oczekujące zlecenie w danym momencie!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Nie można dodać produktów do zamówienia, które nie jest zamówieniem " "oczekującym." -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "Nie można dodać nieaktywnych produktów do zamówienia" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "Nie można dodać więcej produktów niż jest dostępnych w magazynie" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} nie istnieje: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Nie można usunąć produktów z zamówienia, które nie jest zamówieniem " "oczekującym." -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nie istnieje z zapytaniem <{query}>." -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Kod promocyjny nie istnieje" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "Możesz kupować tylko produkty fizyczne z podanym adresem wysyłki!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "Adres nie istnieje" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "W tej chwili nie możesz dokonać zakupu, spróbuj ponownie za kilka minut." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Nieprawidłowa wartość siły" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "Nie można kupić pustego zamówienia!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Niewystarczające środki do zrealizowania zamówienia" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1434,7 +1542,7 @@ msgstr "" "informacje: imię i nazwisko klienta, adres e-mail klienta, numer telefonu " "klienta." -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1442,184 +1550,195 @@ msgstr "" "Nieprawidłowa metoda płatności: {payment_method} z " "{available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "Cena zapłacona przez klienta za ten produkt w momencie zakupu." -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Cena zakupu w momencie zamówienia" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "" "Wewnętrzne komentarze dla administratorów dotyczące tego zamówionego " "produktu" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Uwagi wewnętrzne" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "Powiadomienia użytkownika" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "Reprezentacja JSON atrybutów tego elementu" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Zamówione atrybuty produktu" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Odniesienie do zamówienia nadrzędnego zawierającego ten produkt" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Zamówienie nadrzędne" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "Konkretny produkt powiązany z tą linią zamówienia" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Ilość tego konkretnego produktu w zamówieniu" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Ilość produktu" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Aktualny status tego produktu w zamówieniu" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Status linii produktów" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "nieprawidłowe działanie określone dla informacji zwrotnej: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "" +"Nie można usunąć produktów z zamówienia, które nie jest zamówieniem " +"oczekującym." + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Wewnętrzny identyfikator tagu produktu" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Nazwa tagu" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "Przyjazna dla użytkownika nazwa etykiety produktu" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Wyświetlana nazwa znacznika" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Etykieta produktu" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "" "Zapewnienie alternatywnego tekstu dla obrazu w celu ułatwienia dostępu" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Tekst alternatywny obrazu" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Prześlij plik obrazu dla tego produktu" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Obraz produktu" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Określa kolejność wyświetlania obrazów" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Priorytet wyświetlania" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "Produkt, który przedstawia ten obraz" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Zdjęcia produktów" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "Unikalny kod używany przez użytkownika do realizacji rabatu." -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Identyfikator kodu promocyjnego" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "Stała kwota rabatu stosowana, jeśli procent nie jest używany" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Stała kwota rabatu" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "Rabat procentowy stosowany w przypadku niewykorzystania stałej kwoty" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Rabat procentowy" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Znacznik czasu wygaśnięcia kodu promocyjnego" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "Końcowy czas ważności" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Znacznik czasu, od którego ten kod promocyjny jest ważny" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Czas rozpoczęcia ważności" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Znacznik czasu użycia kodu promocyjnego, pusty, jeśli nie został jeszcze " "użyty." -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Znacznik czasu użycia" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "Użytkownik przypisany do tego kodu promocyjnego, jeśli dotyczy" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Przypisany użytkownik" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Kod promocyjny" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Kody promocyjne" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1627,195 +1746,202 @@ msgstr "" "Należy zdefiniować tylko jeden rodzaj rabatu (kwotowy lub procentowy), ale " "nie oba lub żaden z nich." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "Kod promocyjny został już wykorzystany" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Nieprawidłowy typ rabatu dla kodu promocyjnego {self.uuid}." -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Rabat procentowy na wybrane produkty" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Procent rabatu" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Podaj unikalną nazwę tej promocji" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Nazwa promocji" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Opis promocji" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Wybierz produkty objęte promocją" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Dołączone produkty" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Promocja" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "Sprzedawca dostarczający ten produkt" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Powiązany sprzedawca" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Ostateczna cena dla klienta po uwzględnieniu marży" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Cena sprzedaży" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "Produkt powiązany z tym wpisem magazynowym" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "Cena zapłacona sprzedawcy za ten produkt" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Cena zakupu przez sprzedawcę" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Dostępna ilość produktu w magazynie" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Ilość w magazynie" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "Jednostki SKU przypisane przez dostawcę w celu identyfikacji produktu" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "SKU sprzedawcy" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "Plik cyfrowy powiązany z tymi zapasami, jeśli dotyczy" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Plik cyfrowy" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Zapisy magazynowe" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Produkty, które użytkownik oznaczył jako poszukiwane" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "Użytkownik posiadający tę listę życzeń" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Właściciel listy życzeń" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Lista życzeń" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Pobierz" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Pliki do pobrania" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "Nie można pobrać zasobu cyfrowego dla nieukończonego zamówienia." -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Film dokumentalny" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Filmy dokumentalne" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Nierozwiązany" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Linia adresu dla klienta" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Linia adresowa" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "ul." -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "Okręg" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "Miasto" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Region" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Kod pocztowy" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "Kraj" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Pełna odpowiedź JSON z geokodera dla tego adresu" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Przechowywana odpowiedź JSON z usługi geokodowania" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Adres" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Adresy" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"Aby dodać opinię, należy podać komentarz, ocenę i identyfikator produktu " +"zamówienia." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Błąd podczas tworzenia kodu promocyjnego: {e!s}" @@ -2051,7 +2177,7 @@ msgstr "Zasób cyfrowy można pobrać tylko raz" msgid "favicon not found" msgstr "nie znaleziono favicon" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Błąd geokodowania: {e}" diff --git a/core/locale/pt_BR/LC_MESSAGES/django.mo b/core/locale/pt_BR/LC_MESSAGES/django.mo index 0e2318d3..3277f04b 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 05c7f150..dc0fcf6c 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -83,7 +83,7 @@ msgstr "Imagem" msgid "images" msgstr "Imagens" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Estoque" @@ -111,11 +111,11 @@ msgstr "Informações básicas" msgid "important dates" msgstr "Datas importantes" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Pedido de produto" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Solicitar produtos" @@ -220,149 +220,200 @@ msgstr "" "Compre um pedido como uma empresa, usando os `products` fornecidos com " "`product_uuid` e `attributes`." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "Listar todos os grupos de atributos (visualização simples)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperar um único grupo de atributos (visualização detalhada)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Criar um grupo de atributos" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Excluir um grupo de atributos" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescrever um grupo de atributos existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Reescreva alguns campos de um grupo de atributos existente salvando os não " "editáveis" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "Listar todos os atributos (visualização simples)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperar um único atributo (visualização detalhada)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Criar um atributo" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Excluir um atributo" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "Reescreva um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Reescreva alguns campos de um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "Listar todos os valores de atributos (visualização simples)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperar um único valor de atributo (visualização detalhada)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Criar um valor de atributo" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Excluir um valor de atributo" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescreva um valor de atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Reescreva alguns campos de um valor de atributo existente salvando os não " "editáveis" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "Listar todas as categorias (visualização simples)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Recuperar uma única categoria (visualização detalhada)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Criar uma categoria" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Excluir uma categoria" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "Reescrever uma categoria existente salvando itens não editáveis" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "Listar todas as categorias (visualização simples)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" "Para usuários não funcionários, apenas seus próprios pedidos são devolvidos." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Pesquisa de substring sem distinção entre maiúsculas e minúsculas em " +"human_readable_id, order_products.product.name e " +"order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Filtrar pedidos com buy_time >= este datetime ISO 8601" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Filtrar pedidos com buy_time <= este datetime ISO 8601" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filtrar por UUID de ordem exata" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Filtrar por ID exata do pedido legível por humanos" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" +"Filtrar por e-mail do usuário (correspondência exata sem distinção entre " +"maiúsculas e minúsculas)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filtrar por UUID do usuário" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "" +"Filtrar por status do pedido (correspondência de substring sem distinção " +"entre maiúsculas e minúsculas)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Ordene por uma das seguintes opções: uuid, human_readable_id, user_email, " +"user, status, created, modified, buy_time, random. Prefixe com '-' para " +"ordem decrescente (por exemplo, '-buy_time')." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Recuperar uma única categoria (visualização detalhada)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Criar um atributo" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Não funciona para usuários que não são da equipe." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Excluir um atributo" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "Reescrever uma categoria existente salvando itens não editáveis" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Preço de compra no momento do pedido" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -372,19 +423,19 @@ msgstr "" "concluída usando o saldo do usuário; se `force_payment` for usado, uma " "transação será iniciada." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "comprar um pedido sem criar uma conta" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "finaliza a compra do pedido para um usuário não registrado." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Adicionar um produto ao pedido" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -392,13 +443,13 @@ msgstr "" "Adiciona um produto a um pedido usando o `product_uuid` e os `attributes` " "fornecidos." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "" "Adicionar uma lista de produtos ao pedido, as quantidades não serão " "contabilizadas" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -406,11 +457,11 @@ msgstr "" "Adiciona uma lista de produtos a um pedido usando o `product_uuid` e os " "`attributes` fornecidos." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Remover um produto do pedido" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -418,11 +469,11 @@ msgstr "" "Remove um produto de um pedido usando o `product_uuid` e os `attributes` " "fornecidos." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "Remover um produto do pedido, as quantidades não serão contabilizadas" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -430,81 +481,81 @@ msgstr "" "Remove uma lista de produtos de um pedido usando o `product_uuid` e os " "`attributes` fornecidos." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "Listar todos os atributos (visualização simples)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Para usuários que não pertencem à equipe, apenas suas próprias listas de " "desejos são retornadas." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperar um único atributo (visualização detalhada)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Criar um atributo" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Não funciona para usuários que não são da equipe." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Excluir um atributo" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "Reescreva um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Reescreva alguns campos de um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Adicionar um produto ao pedido" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Adiciona um produto a uma lista de desejos usando o `product_uuid` fornecido" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Remover um produto da lista de desejos" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Remove um produto de uma lista de desejos usando o `product_uuid` fornecido" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Adicionar muitos produtos à lista de desejos" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Adiciona vários produtos a uma lista de desejos usando os `product_uuids` " "fornecidos" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Remover um produto do pedido" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Remove vários produtos de uma lista de desejos usando os `product_uuids` " "fornecidos" -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -524,60 +575,56 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "Listar todos os produtos (visualização simples)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "UUID (exato) do produto" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(icontains) Nome do produto" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 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:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(exato) UUID da categoria" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 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:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Preço mínimo das ações" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Preço máximo da ação" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(exato) Somente produtos ativos" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Nome da marca" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantidade mínima em estoque" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(exato) Slug do produto" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(exato) Digital vs. físico" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -585,72 +632,130 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Recuperar um único produto (visualização detalhada)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "UUID ou Slug do produto" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Criar um produto" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 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:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Excluir um produto" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "lista todos os feedbacks permitidos para um produto" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "Listar todos os endereços" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Recuperar um único endereço" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Criar um novo endereço" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Excluir um endereço" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Atualizar um endereço inteiro" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Atualizar parcialmente um endereço" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Entrada de endereço com preenchimento automático" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Cadeia de consulta de dados brutos, anexe os dados do ponto de extremidade " "de IP geográfico" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita a quantidade de resultados, 1 < limite < 10, padrão: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "listar todos os feedbacks (visualização simples)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "recuperar um único feedback (visualização detalhada)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "criar um feedback" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "excluir um feedback" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "reescrever um feedback existente salvando itens não editáveis" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" +"Reescreva alguns campos de uma categoria existente salvando os não editáveis" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "listar todas as relações pedido-produto (visualização simples)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "recuperar uma única relação pedido-produto (visão detalhada)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "criar uma nova relação pedido-produto" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "substituir uma relação pedido-produto existente" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "atualizar parcialmente uma relação pedido-produto existente" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "excluir uma relação pedido-produto" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "adicionar ou remover feedback em uma relação pedido-produto" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Nenhum termo de pesquisa foi fornecido." @@ -685,7 +790,6 @@ msgstr "Adicionar um produto ao pedido" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Pedido {order_uuid} não encontrado" @@ -707,7 +811,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:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "O tipo errado veio do método order.buy(): {type(instance)!s}" @@ -760,7 +864,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Cadeia de endereços original fornecida pelo usuário" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} não existe: {uuid}" @@ -928,7 +1032,7 @@ msgstr "Códigos promocionais" msgid "products on sale" msgstr "Produtos à venda" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Promoções" @@ -944,11 +1048,11 @@ msgstr "Vendor" msgid "product" msgstr "Produto" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Produtos da lista de desejos" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Listas de desejos" @@ -956,7 +1060,7 @@ msgstr "Listas de desejos" msgid "tagged products" msgstr "Produtos marcados" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Etiquetas do produto" @@ -1103,8 +1207,8 @@ msgstr "Atributo desse valor" msgid "the specific product associated with this attribute's value" msgstr "O produto específico associado ao valor desse atributo" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Produto associado" @@ -1216,7 +1320,7 @@ msgstr "Fornecer um nome de identificação claro para o produto" msgid "product name" msgstr "Nome do produto" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Adicione uma descrição detalhada do produto" @@ -1318,7 +1422,7 @@ msgstr "Status atual do pedido em seu ciclo de vida" msgid "order status" msgstr "Status do pedido" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "Estrutura JSON de notificações a serem exibidas aos usuários; na interface " @@ -1360,66 +1464,66 @@ msgstr "Pedido" msgid "a user must have only one pending order at a time" msgstr "Um usuário deve ter apenas uma ordem pendente por vez!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "Não é possível adicionar produtos a um pedido que não esteja pendente" -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "Não é possível adicionar produtos inativos ao pedido" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "" "Não é possível adicionar mais produtos do que os disponíveis em estoque" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} não existe: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "Não é possível remover produtos de um pedido que não esteja pendente" -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} não existe com a consulta <{query}>" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "O código promocional não existe" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "" "Você só pode comprar produtos físicos com o endereço de entrega " "especificado!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "O endereço não existe" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Não é possível comprar neste momento, tente novamente em alguns minutos." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Valor de força inválido" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "Você não pode comprar um pedido vazio!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Fundos insuficientes para concluir o pedido" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1427,7 +1531,7 @@ msgstr "" "Não é possível comprar sem registro, forneça as seguintes informações: nome " "do cliente, e-mail do cliente, número de telefone do cliente" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1435,184 +1539,193 @@ msgstr "" "Método de pagamento inválido: {payment_method} de " "{available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "O preço pago pelo cliente por esse produto no momento da compra" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Preço de compra no momento do pedido" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "" "Comentários internos para administradores sobre este produto encomendado" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Comentários internos" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "Notificações do usuário" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "Representação JSON dos atributos desse item" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Atributos ordenados do produto" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Referência ao pedido pai que contém esse produto" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Ordem dos pais" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "O produto específico associado a essa linha de pedido" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Quantidade desse produto específico no pedido" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Quantidade do produto" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Status atual desse produto no pedido" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Status da linha de produtos" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "ação incorreta especificada para feedback: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "você não pode dar feedback a um pedido que não foi recebido" + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Identificador de tag interno para a tag do produto" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Nome da etiqueta" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "Nome de fácil utilização para a etiqueta do produto" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Nome de exibição da tag" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Etiqueta do produto" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "" "Forneça um texto alternativo para a imagem para fins de acessibilidade" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Texto alternativo da imagem" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Faça o upload do arquivo de imagem para este produto" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Imagem do produto" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Determina a ordem em que as imagens são exibidas" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Prioridade de exibição" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "O produto que esta imagem representa" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Imagens do produto" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "Código exclusivo usado por um usuário para resgatar um desconto" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Identificador de código promocional" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "Valor de desconto fixo aplicado se a porcentagem não for usada" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Valor do desconto fixo" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "Desconto percentual aplicado se o valor fixo não for usado" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Desconto percentual" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Registro de data e hora em que o código promocional expira" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "Tempo de validade final" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "" "Registro de data e hora a partir do qual esse código promocional é válido" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Hora de início da validade" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Registro de data e hora em que o código promocional foi usado, em branco se " "ainda não tiver sido usado" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Registro de data e hora de uso" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "Usuário atribuído a esse código promocional, se aplicável" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Usuário atribuído" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Código promocional" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Códigos promocionais" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1620,197 +1733,204 @@ msgstr "" "Apenas um tipo de desconto deve ser definido (valor ou porcentagem), mas não" " ambos ou nenhum." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "O código promocional já foi usado" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo de desconto inválido para o código promocional {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Desconto percentual para os produtos selecionados" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Porcentagem de desconto" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Forneça um nome exclusivo para essa promoção" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Nome da promoção" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Descrição da promoção" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Selecione quais produtos estão incluídos nessa promoção" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Produtos incluídos" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Promoção" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "O fornecedor que fornece esse estoque de produtos" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Fornecedor associado" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Preço final para o cliente após as marcações" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Preço de venda" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "O produto associado a essa entrada em estoque" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "O preço pago ao fornecedor por esse produto" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Preço de compra do fornecedor" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Quantidade disponível do produto em estoque" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Quantidade em estoque" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuído pelo fornecedor para identificar o produto" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "SKU do fornecedor" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "Arquivo digital associado a esse estoque, se aplicável" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Arquivo digital" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Entradas de estoque" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Produtos que o usuário marcou como desejados" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "Usuário que possui esta lista de desejos" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Proprietário da lista de desejos" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Lista de desejos" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Baixar" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Downloads" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Não é possível fazer download de um ativo digital para um pedido não " "concluído" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Documentário" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Documentários" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Não resolvido" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Linha de endereço do cliente" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Linha de endereço" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Rua" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "Distrito" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "Cidade" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Região" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Código postal" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "País" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Ponto de geolocalização (Longitude, Latitude)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Resposta JSON completa do geocodificador para este endereço" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Resposta JSON armazenada do serviço de geocodificação" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Endereço" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Endereços" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"Você deve fornecer um comentário, uma classificação e o uuid do produto do " +"pedido para adicionar feedback." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Erro durante a criação do código promocional: {e!s}" @@ -2043,7 +2163,7 @@ msgstr "Você só pode fazer o download do ativo digital uma vez" msgid "favicon not found" msgstr "favicon não encontrado" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Erro de geocodificação: {e}" diff --git a/core/locale/ro_RO/LC_MESSAGES/django.mo b/core/locale/ro_RO/LC_MESSAGES/django.mo index 8be419ed..f3bcb963 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 ed46f60f..2cbf9650 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -83,7 +83,7 @@ msgstr "Imagine" msgid "images" msgstr "Imagini" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Stoc" @@ -111,11 +111,11 @@ msgstr "Informații de bază" msgid "important dates" msgstr "Date importante" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Comanda Produs" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Comandați produse" @@ -221,156 +221,206 @@ msgstr "" "Achiziționați o comandă ca o afacere, utilizând `products` cu `product_uuid`" " și `attributes` furnizate." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "Lista tuturor grupurilor de atribute (vizualizare simplă)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperarea unui singur grup de atribute (vedere detaliată)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Crearea unui grup de atribute" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Ștergerea unui grup de atribute" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Rescrierea unui grup de atribute existent cu salvarea elementelor " "needitabile" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Rescrierea unor câmpuri ale unui grup de atribute existent, cu salvarea " "elementelor needitabile" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "Lista tuturor atributelor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperarea unui singur atribut (vedere detaliată)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Crearea unui atribut" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Ștergerea unui atribut" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "Rescrierea unui atribut existent cu salvarea elementelor needitabile" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unui atribut existent salvând elementele " "needitabile" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "Lista tuturor valorilor atributelor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperarea valorii unui singur atribut (vedere detaliată)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Crearea unei valori de atribut" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Ștergerea unei valori de atribut" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Rescrierea unei valori de atribut existente care salvează non-editabile" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Rescrierea unor câmpuri ale unei valori de atribut existente salvând " "elementele needitabile" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "Lista tuturor categoriilor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Recuperarea unei singure categorii (vedere detaliată)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Creați o categorie" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Ștergeți o categorie" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "Rescrieți o categorie existentă salvând non-editabile" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "Lista tuturor categoriilor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" "Pentru utilizatorii care nu fac parte din personal, sunt returnate doar " "comenzile proprii." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Căutare de substring insensibilă la majuscule în human_readable_id, " +"order_products.product.name și order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Filtrați comenzile cu buy_time >= această dată ISO 8601" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Filtrează comenzile cu buy_time <= această dată ISO 8601" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Filtrare după UUID exact al comenzii" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Filtrați după ID-ul exact al comenzii care poate fi citit de către om" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" +"Filtrare în funcție de adresa de e-mail a utilizatorului (potrivire exactă " +"insensibilă la majuscule)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Filtrare după UUID-ul utilizatorului" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "" +"Filtrare în funcție de starea comenzii (potrivire a substringurilor fără " +"deosebire de majuscule)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Ordonați după unul dintre: uuid, human_readable_id, user_email, user, " +"status, created, modified, buy_time, random. Prefixați cu \"-\" pentru " +"ordine descrescătoare (de exemplu, \"-buy_time\")." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Recuperarea unei singure categorii (vedere detaliată)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Crearea unui atribut" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Nu funcționează pentru utilizatorii care nu fac parte din personal." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Ștergerea unui atribut" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "Rescrieți o categorie existentă salvând non-editabile" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Prețul de achiziție la momentul comenzii" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -380,19 +430,19 @@ msgstr "" "achiziția este finalizată utilizând soldul utilizatorului; Dacă se " "utilizează `force_payment`, este inițiată o tranzacție." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "achiziționarea unei comenzi fără crearea unui cont" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizează achiziția comenzii pentru un utilizator neînregistrat." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Adăugați un produs la comandă" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -400,11 +450,11 @@ msgstr "" "Adaugă un produs la o comandă folosind `product_uuid` și `attributes` " "furnizate." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "Adăugați o listă de produse la comandă, cantitățile nu vor conta" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -412,11 +462,11 @@ msgstr "" "Adaugă o listă de produse la o comandă folosind `product_uuid` și " "`attributes` furnizate." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Eliminați un produs din comandă" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -424,12 +474,12 @@ msgstr "" "Elimină un produs dintr-o comandă folosind `product_uuid` și `attributes` " "furnizate." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "" "Eliminați un produs din comandă, cantitățile nu vor fi luate în considerare" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -437,82 +487,82 @@ msgstr "" "Îndepărtează o listă de produse dintr-o comandă folosind `product_uuid` și " "`attributes` furnizate." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "Lista tuturor atributelor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Pentru utilizatorii care nu fac parte din personal, sunt returnate doar " "propriile liste de dorințe." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperarea unui singur atribut (vedere detaliată)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Crearea unui atribut" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Nu funcționează pentru utilizatorii care nu fac parte din personal." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Ștergerea unui atribut" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rescrierea unui atribut existent cu salvarea elementelor needitabile" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unui atribut existent salvând elementele " "needitabile" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Adăugați un produs la comandă" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Adaugă un produs la o listă de dorințe folosind `product_uuid` furnizat" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Eliminați un produs din lista de dorințe" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Înlătură un produs dintr-o listă de dorințe folosind `product_uuid` furnizat" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Adăugați mai multe produse la lista de dorințe" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Adaugă mai multe produse la o listă de dorințe folosind `product_uuids` " "furnizat" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Eliminați un produs din comandă" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Îndepărtează mai multe produse dintr-o listă de dorințe folosind " "`product_uuids` furnizat" -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -532,59 +582,55 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "Listează toate produsele (vizualizare simplă)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(exact) UUID al produsului" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(icontains) Denumirea produsului" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(listă) Numele categoriilor, fără deosebire de majuscule" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(exact) UUID al categoriei" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(listă) Nume de etichete, fără diferențiere de majuscule" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Prețul minim al acțiunilor" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Prețul maxim al acțiunilor" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(exact) Numai produse active" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Denumire comercială" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Cantitatea minimă de stoc" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(exact) Limbajul produsului" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. fizic" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -592,64 +638,69 @@ 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:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Recuperarea unui singur produs (vedere detaliată)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "UUID sau Slug al produsului" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Creați un produs" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 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:425 +#: core/docs/drf/viewsets.py:478 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:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Ștergeți un produs" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "listează toate feedback-urile permise pentru un produs" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "Enumerați toate adresele" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Recuperarea unei singure adrese" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Creați o adresă nouă" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Ștergeți o adresă" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Actualizarea unei adrese întregi" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Actualizarea parțială a unei adrese" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Autocompletare adresă de intrare" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "docker compose exec app poetry run python manage.py deepl_translate -l en-gb" @@ -657,10 +708,64 @@ msgstr "" "it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" "hans -a core -a geo -a plăți -a vibes_auth -a blog" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limitează cantitatea de rezultate, 1 < limit < 10, implicit: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "lista tuturor feedback-urilor (vizualizare simplă)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "recuperați un singur feedback (vizualizare detaliată)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "creați un feedback" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "ștergeți un feedback" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "rescrierea unui feedback existent cu salvarea elementelor needitabile" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" +"Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " +"needitabile" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "lista tuturor relațiilor comandă-produs (vedere simplă)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "recuperarea unei singure relații comandă-produs (vedere detaliată)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "crearea unei noi relații comandă-produs" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "să înlocuiască o relație comandă-produs existentă" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "actualizarea parțială a unei relații comandă-produs existente" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "ștergeți o relație comandă-produs" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "adăugarea sau eliminarea feedback-ului într-o relație comandă-produs" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Nu a fost furnizat niciun termen de căutare." @@ -695,7 +800,6 @@ msgstr "Adăugați un produs la comandă" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Comanda {order_uuid} nu a fost găsită" @@ -718,7 +822,7 @@ msgstr "" "Vă rugăm să furnizați fie order_uuid sau order_hr_id - se exclud reciproc!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Metoda order.buy() a generat un tip greșit: {type(instance)!s}" @@ -772,7 +876,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Șirul de adrese original furnizat de utilizator" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nu există: {uuid}" @@ -942,7 +1046,7 @@ msgstr "Coduri promoționale" msgid "products on sale" msgstr "Produse scoase la vânzare" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Promoții" @@ -958,11 +1062,11 @@ msgstr "Furnizor" msgid "product" msgstr "Produs" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Produse dorite" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Liste de dorințe" @@ -970,7 +1074,7 @@ msgstr "Liste de dorințe" msgid "tagged products" msgstr "Produse etichetate" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Etichete de produs" @@ -1118,8 +1222,8 @@ msgstr "Atributul acestei valori" msgid "the specific product associated with this attribute's value" msgstr "Produsul specific asociat cu valoarea acestui atribut" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Produs asociat" @@ -1232,7 +1336,7 @@ msgstr "Furnizați o denumire clară de identificare a produsului" msgid "product name" msgstr "Denumirea produsului" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Adăugați o descriere detaliată a produsului" @@ -1335,7 +1439,7 @@ msgstr "Stadiul actual al comenzii în ciclul său de viață" msgid "order status" msgstr "Stadiul comenzii" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "Structura JSON a notificărilor care urmează să fie afișate utilizatorilor, " @@ -1378,66 +1482,66 @@ msgid "a user must have only one pending order at a time" msgstr "" "Un utilizator trebuie să aibă un singur ordin în așteptare la un moment dat!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "Nu puteți adăuga produse la o comandă care nu este în așteptare" -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "Nu puteți adăuga produse inactive la comandă" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "Nu puteți adăuga mai multe produse decât cele disponibile în stoc" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} nu există: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Nu puteți elimina produse dintr-o comandă care nu este o comandă în curs" -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nu există cu interogarea <{query}>" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Codul promoțional nu există" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "" "Puteți cumpăra numai produse fizice cu adresa de expediere specificată!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "Adresa nu există" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Nu puteți achiziționa în acest moment, vă rugăm să încercați din nou în " "câteva minute." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Valoare forță invalidă" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "Nu puteți achiziționa o comandă goală!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Insuficiența fondurilor pentru finalizarea comenzii" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1445,7 +1549,7 @@ msgstr "" "nu puteți cumpăra fără înregistrare, vă rugăm să furnizați următoarele " "informații: nume client, e-mail client, număr de telefon client" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1453,182 +1557,192 @@ msgstr "" "Metodă de plată invalidă: {payment_method} de la " "{available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "Prețul plătit de client pentru acest produs la momentul achiziției" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Prețul de achiziție la momentul comenzii" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarii interne pentru administratori cu privire la acest produs comandat" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Observații interne" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "Notificări pentru utilizatori" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "Reprezentarea JSON a atributelor acestui element" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Atribute de produs ordonate" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Trimitere la comanda mamă care conține acest produs" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Ordinul părinților" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "Produsul specific asociat cu această linie de comandă" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Cantitatea acestui produs specific din comandă" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Cantitatea produsului" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Starea actuală a acestui produs în comandă" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Starea liniei de produse" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "acțiune greșită specificată pentru feedback: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "" +"Nu puteți elimina produse dintr-o comandă care nu este o comandă în curs" + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Identificator intern de etichetă pentru eticheta produsului" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Nume etichetă" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "Nume ușor de utilizat pentru eticheta produsului" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Nume afișare etichetă" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Etichetă produs" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "Furnizați text alternativ pentru imagine pentru accesibilitate" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Textul alt al imaginii" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Încărcați fișierul de imagine pentru acest produs" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Imaginea produsului" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Determină ordinea în care sunt afișate imaginile" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Prioritatea afișării" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "Produsul pe care îl reprezintă această imagine" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Imagini ale produsului" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "Cod unic utilizat de un utilizator pentru a răscumpăra o reducere" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Cod promoțional de identificare" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "Valoarea fixă a reducerii aplicate dacă procentul nu este utilizat" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Valoarea fixă a reducerii" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentul de reducere aplicat dacă suma fixă nu este utilizată" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Reducere procentuală" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Data la care expiră codul promoțional" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "Timpul final de valabilitate" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Timestamp de la care acest cod promoțional este valabil" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Ora de începere a valabilității" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Momentul în care codul promoțional a fost utilizat, gol dacă nu a fost " "utilizat încă" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Timestamp de utilizare" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "Utilizatorul atribuit acestui cod promoțional, dacă este cazul" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Utilizator atribuit" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Cod promoțional" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Coduri promoționale" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1636,195 +1750,202 @@ msgstr "" "Trebuie definit un singur tip de reducere (sumă sau procent), dar nu ambele " "sau niciuna." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "Codul promoțional a fost deja utilizat" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tip de reducere invalid pentru codul promoțional {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Procentul de reducere pentru produsele selectate" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Procent de reducere" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Furnizați un nume unic pentru această promoție" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Numele promoției" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Descrierea promoției" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Selectați ce produse sunt incluse în această promoție" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Produse incluse" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Promovare" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "Furnizorul care furnizează acest stoc de produse" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Furnizor asociat" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Prețul final pentru client după majorări" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Prețul de vânzare" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "Produsul asociat cu această intrare în stoc" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "Prețul plătit vânzătorului pentru acest produs" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Prețul de achiziție al furnizorului" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Cantitatea disponibilă a produsului în stoc" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Cantitate în stoc" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuit de furnizor pentru identificarea produsului" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "SKU al furnizorului" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "Fișier digital asociat cu acest stoc, dacă este cazul" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Fișier digital" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Intrări pe stoc" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Produse pe care utilizatorul le-a marcat ca fiind dorite" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "Utilizatorul care deține această listă de dorințe" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Proprietarul listei de dorințe" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Lista dorințelor" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Descărcare" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Descărcări" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "Nu puteți descărca un bun digital pentru o comandă nefinalizată" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Documentar" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Documentare" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Nerezolvat" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Linia de adresă pentru client" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Linia de adresă" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Strada" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "Districtul" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "Oraș" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Regiunea" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Cod poștal" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "Țara" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Punct de geolocație (longitudine, latitudine)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Răspuns JSON complet de la geocoder pentru această adresă" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Răspuns JSON stocat de la serviciul de geocodare" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Adresă" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Adrese" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"trebuie să furnizați un comentariu, un rating și uuid-ul produsului comandat" +" pentru a adăuga feedback." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Eroare în timpul creării codului promoțional: {e!s}" @@ -2059,7 +2180,7 @@ msgstr "Puteți descărca activul digital o singură dată" msgid "favicon not found" msgstr "favicon nu a fost găsit" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Eroare de geocodare: {e}" diff --git a/core/locale/ru_RU/LC_MESSAGES/django.mo b/core/locale/ru_RU/LC_MESSAGES/django.mo index f41c3db5..e1b7863d 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 5aa3c177..7b9103fe 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -83,7 +83,7 @@ msgstr "Изображение" msgid "images" msgstr "Изображения" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "Наличие" @@ -111,11 +111,11 @@ msgstr "Основная информация" msgid "important dates" msgstr "Важные даты" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "Заказать товар" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "Заказать товары" @@ -220,159 +220,209 @@ msgstr "" "Приобретите заказ как бизнес, используя предоставленные `продукты` с " "`product_uuid` и `attributes`." -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "Список всех групп атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "Получение одной группы атрибутов (подробный просмотр)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "Создайте группу атрибутов" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "Удаление группы атрибутов" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Переписать существующую группу атрибутов с сохранением нередактируемых " "элементов" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Переписывание некоторых полей существующей группы атрибутов с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "Список всех атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "Получение одного атрибута (подробный просмотр)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "Создайте атрибут" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "Удалить атрибут" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "Переписать существующий атрибут, сохранив нередактируемый" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Переписывание некоторых полей существующего атрибута с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "Список всех значений атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "Получение значения одного атрибута (подробный просмотр)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "Создание значения атрибута" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "Удалить значение атрибута" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Перезапись существующего значения атрибута с сохранением нередактируемых " "значений" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Переписывание некоторых полей существующего значения атрибута с сохранением " "нередактируемых значений" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "Список всех категорий (простой вид)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "Получение одной категории (подробный просмотр)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "Создайте категорию" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "Удалить категорию" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "Список всех категорий (простой вид)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "" "Для пользователей, не являющихся сотрудниками, возвращаются только их " "собственные заказы." -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"Поиск подстроки с учетом регистра в human_readable_id, " +"order_products.product.name и order_products.product.partnumber" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "Отфильтруйте ордера с buy_time >= этому времени ISO 8601" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "Отфильтруйте ордера с buy_time <= этому времени ISO 8601" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "Фильтр по точному UUID заказа" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "Фильтр по точному человекочитаемому идентификатору заказа" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "" +"Фильтр по электронной почте пользователя (точное совпадение без учета " +"регистра)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "Фильтр по UUID пользователя" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "" +"Фильтр по статусу заказа (нечувствительное к регистру подстрочное " +"соответствие)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"Упорядочивайте по одному из следующих признаков: uuid, human_readable_id, " +"user_email, user, status, created, modified, buy_time, random. Префикс '-' " +"для нисходящего порядка (например, '-buy_time')." + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "Получение одной категории (подробный просмотр)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "Создайте атрибут" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "Не работает для нештатных пользователей." -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "Удалить атрибут" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "Покупная цена на момент заказа" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -382,19 +432,19 @@ msgstr "" "завершается с использованием баланса пользователя; если используется " "`force_payment`, инициируется транзакция." -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "приобретение заказа без создания учетной записи" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "завершает покупку заказа для незарегистрированного пользователя." -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "Добавить товар в заказ" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -402,11 +452,11 @@ msgstr "" "Добавляет товар в заказ, используя предоставленные `product_uuid` и " "`attributes`." -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "Добавьте список продуктов для заказа, количество не учитывается" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -414,11 +464,11 @@ msgstr "" "Добавляет список товаров в заказ, используя предоставленные `product_uuid` и" " `attributes`." -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "Удалить продукт из заказа" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -426,11 +476,11 @@ msgstr "" "Удаляет товар из заказа, используя предоставленные `product_uuid` и " "`attributes`." -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "Удалите продукт из заказа, количество не будет учитываться" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -438,82 +488,82 @@ msgstr "" "Удаляет список товаров из заказа, используя предоставленные `product_uuid` и" " `attributes`." -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "Список всех атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Для пользователей, не являющихся сотрудниками, возвращаются только их " "собственные списки желаний." -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "Получение одного атрибута (подробный просмотр)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "Создайте атрибут" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "Не работает для нештатных пользователей." -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "Удалить атрибут" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "Переписать существующий атрибут, сохранив нередактируемый" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Переписывание некоторых полей существующего атрибута с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "Добавить товар в заказ" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Добавляет товар в список желаний, используя предоставленный `product_uuid`." -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "Удалить продукт из списка желаний" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Удаляет продукт из списка желаний, используя предоставленный `product_uuid`." -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "Добавьте много товаров в список желаний" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Добавляет множество товаров в список желаний, используя предоставленные " "`product_uuids`." -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "Удалить продукт из заказа" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Удаляет множество товаров из списка желаний, используя предоставленные " "`product_uuids`." -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -533,59 +583,55 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "Список всех продуктов (простой вид)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(точный) UUID продукта" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(иконки) Название продукта" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(список) Названия категорий, без учета регистра" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(точный) UUID категории" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(список) Имена тегов, нечувствительные к регистру" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) Минимальная цена акции" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) Максимальная цена акции" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(точно) Только активные продукты" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) Торговое название" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) Минимальное количество на складе" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(точный) Артикул" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(точно) Цифровые и физические" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -593,72 +639,132 @@ msgstr "" "Список полей для сортировки, разделенных запятыми. Для сортировки по убыванию используйте префикс `-`. \n" "**Разрешенные:** uuid, рейтинг, название, slug, created, modified, price, random" -#: core/docs/drf/viewsets.py:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "Получение одного продукта (подробный просмотр)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "UUID или Slug продукта" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "Создать продукт" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Переписать существующий продукт, сохранив нередактируемые поля" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Обновление некоторых полей существующего продукта с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "Удалить продукт" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "список всех разрешенных отзывов о продукте" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "Перечислите все адреса" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "Получение одного адреса" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "Создайте новый адрес" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "Удалить адрес" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "Обновление всего адреса" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "Частичное обновление адреса" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "Автозаполнение ввода адреса" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Строка запроса сырых данных, пожалуйста, дополните ее данными с конечной " "точки geo-IP" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "ограничивает количество результатов, 1 < limit < 10, по умолчанию: 5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "список всех отзывов (простой вид)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "получить один отзыв (подробный просмотр)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "создать отзыв" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "удалить отзыв" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "" +"Переписать существующую категорию с сохранением нередактируемых объектов" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "" +"Переписать некоторые поля существующей категории с сохранением " +"нередактируемых полей" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "список всех отношений \"заказ-продукт\" (простой вид)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "получить одно отношение \"заказ-продукт\" (подробный просмотр)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "создать новое отношение \"заказ-продукт" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "заменить существующее отношение \"заказ-продукт" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "частично обновить существующее отношение \"заказ-продукт" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "удалить отношение \"заказ-продукт" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "добавлять или удалять отзывы о связи заказ-продукт" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Поисковый запрос не предоставлен." @@ -693,7 +799,6 @@ msgstr "Добавить товар в заказ" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Заказ {order_uuid} не найден" @@ -717,7 +822,7 @@ msgstr "" "варианты!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Неправильный тип получен из метода order.buy(): {type(instance)!s}" @@ -771,7 +876,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Оригинальная строка адреса, предоставленная пользователем" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} не существует: {uuid}" @@ -941,7 +1046,7 @@ msgstr "Промокоды" msgid "products on sale" msgstr "Продукты в продаже" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "Акции" @@ -957,11 +1062,11 @@ msgstr "Поставщик" msgid "product" msgstr "Продукт" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "Продукты из списка желаний" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "Списки желаний" @@ -969,7 +1074,7 @@ msgstr "Списки желаний" msgid "tagged products" msgstr "Tagged products" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "Теги товара" @@ -1117,8 +1222,8 @@ msgstr "Атрибут этого значения" msgid "the specific product associated with this attribute's value" msgstr "Конкретный продукт, связанный со значением этого атрибута" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "Сопутствующий товар" @@ -1230,7 +1335,7 @@ msgstr "Обеспечьте четкое идентификационное н msgid "product name" msgstr "Название продукта" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "Добавьте подробное описание продукта" @@ -1330,7 +1435,7 @@ msgstr "Текущий статус заказа в его жизненном ц msgid "order status" msgstr "Статус заказа" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "" "JSON-структура уведомлений для отображения пользователям, в административном" @@ -1372,66 +1477,66 @@ msgstr "Заказать" msgid "a user must have only one pending order at a time" msgstr "Пользователь может одновременно иметь только один отложенный ордер!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "Вы не можете добавить товары в заказ, который не является отложенным." -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "Вы не можете добавить неактивные товары в заказ" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "Вы не можете добавить больше товаров, чем есть на складе" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} не существует: {product_uuid}" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Вы не можете удалить товары из заказа, который не является отложенным." -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} не существует в запросе <{query}>." -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "Промокод не существует" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "" "Вы можете купить физические товары только с указанным адресом доставки!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "Адрес не существует" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "В данный момент вы не можете совершить покупку, пожалуйста, повторите " "попытку через несколько минут." -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "Недопустимое значение силы" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "Вы не можете приобрести пустой заказ!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "Недостаточно средств для выполнения заказа" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1439,192 +1544,201 @@ msgstr "" "Вы не можете купить без регистрации, пожалуйста, предоставьте следующую " "информацию: имя клиента, электронная почта клиента, номер телефона клиента" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Неверный способ оплаты: {payment_method} от {available_payment_methods}!" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "Цена, уплаченная клиентом за данный продукт на момент покупки" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "Покупная цена на момент заказа" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "" "Внутренние комментарии для администраторов об этом заказанном продукте" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "Внутренние комментарии" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "Уведомления пользователей" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "JSON-представление атрибутов этого элемента" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "Атрибуты заказанного продукта" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "Ссылка на родительский заказ, содержащий данный продукт" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "Родительский приказ" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "Конкретный продукт, связанный с этой линией заказа" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "Количество данного товара в заказе" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "Количество продукта" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "Текущий статус этого продукта в заказе" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "Состояние продуктовой линейки" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "указано неверное действие для обратной связи: {action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "Вы не можете отозвать заказ, который не был получен" + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "Внутренний идентификатор тега для тега продукта" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "Название тега" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "Удобное название для метки продукта" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "Отображаемое имя тега" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "Метка продукта" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "" "Предоставьте альтернативный текст для изображения, чтобы обеспечить " "доступность" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "Альтовый текст изображения" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "Загрузите файл изображения для этого продукта" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "Изображение продукта" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "Определяет порядок отображения изображений" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "Приоритет отображения" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "Продукт, который представлен на этом изображении" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "Изображения продуктов" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "Уникальный код, используемый пользователем для получения скидки" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "Идентификатор промо-кода" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "Фиксированная сумма скидки, применяемая, если процент не используется" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "Фиксированная сумма скидки" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Процентная скидка, применяемая, если фиксированная сумма не используется" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "Процентная скидка" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "Временная метка, когда истекает срок действия промокода" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "Время окончания срока действия" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "Время, с которого действует этот промокод" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "Время начала действия" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Временная метка, когда был использован промокод, пустая, если он еще не " "использовался" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "Временная метка использования" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "Пользователь, назначенный на этот промокод, если применимо" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "Назначенный пользователь" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "Промокод" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "Промокоды" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1632,195 +1746,202 @@ msgstr "" "Следует определить только один тип скидки (сумма или процент), но не оба или" " ни один из них." -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "Промокоды" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Неверный тип скидки для промокода {self.uuid}" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "Процентная скидка на выбранные продукты" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "Процент скидки" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "Укажите уникальное имя для этой акции" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "Название акции" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "Описание акции" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "Выберите, какие продукты участвуют в этой акции" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "Включенные продукты" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "Продвижение" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "Поставщик, поставляющий данный товар на склад" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "Ассоциированный поставщик" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "Окончательная цена для покупателя после наценок" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "Цена продажи" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "Продукт, связанный с этой складской записью" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "Цена, уплаченная продавцу за этот продукт" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "Цена покупки у поставщика" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "Доступное количество продукта на складе" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "Количество на складе" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "Присвоенный поставщиком SKU для идентификации продукта" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "SKU поставщика" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "Цифровой файл, связанный с этой акцией, если применимо" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "Цифровой файл" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "Проводки по запасам" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "Продукты, которые пользователь отметил как желаемые" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "Пользователь, владеющий этим списком желаний" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "Владелец вишлиста" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "Список желаний" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "Скачать" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "Скачать" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "Вы не можете загрузить цифровой актив для незавершенного заказа" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "Документальный фильм" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "Документальные фильмы" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "Неразрешенные" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "Адресная строка для клиента" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "Адресная строка" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "Улица" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "Округ" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "Город" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "Регион" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "Почтовый индекс" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "Страна" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "Геолокационная точка(долгота, широта)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "Полный JSON-ответ от геокодера для этого адреса" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "Сохраненный JSON-ответ от сервиса геокодирования" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "Адрес" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "Адреса" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "" +"чтобы добавить отзыв, необходимо указать комментарий, рейтинг и uuid " +"продукта заказа." + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "Ошибка при создании промокода: {e!s}" @@ -2056,7 +2177,7 @@ msgstr "Вы можете загрузить цифровой актив тол msgid "favicon not found" msgstr "favicon не найден" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Ошибка геокодирования: {e}" diff --git a/core/locale/zh_Hans/LC_MESSAGES/django.mo b/core/locale/zh_Hans/LC_MESSAGES/django.mo index 20d6397f..5bda6d42 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 0cf557e3..07f09da5 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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -79,7 +79,7 @@ msgstr "图片" msgid "images" msgstr "图片" -#: core/admin.py:162 core/models.py:1156 +#: core/admin.py:162 core/models.py:1180 msgid "stock" msgstr "库存" @@ -107,11 +107,11 @@ msgstr "基本信息" msgid "important dates" msgstr "重要日期" -#: core/admin.py:253 core/models.py:863 +#: core/admin.py:253 core/models.py:874 msgid "order product" msgstr "订购产品" -#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:875 msgid "order products" msgstr "订购产品" @@ -213,261 +213,305 @@ msgid "" "`product_uuid` and `attributes`." msgstr "使用提供的带有 `product_uuid` 和 `attributes` 的 `products` 作为企业购买订单。" -#: core/docs/drf/viewsets.py:38 +#: core/docs/drf/viewsets.py:43 msgid "list all attribute groups (simple view)" msgstr "列出所有属性组(简单视图)" -#: core/docs/drf/viewsets.py:42 +#: core/docs/drf/viewsets.py:47 msgid "retrieve a single attribute group (detailed view)" msgstr "检索单个属性组(详细视图)" -#: core/docs/drf/viewsets.py:46 +#: core/docs/drf/viewsets.py:51 msgid "create an attribute group" msgstr "创建属性组" -#: core/docs/drf/viewsets.py:50 +#: core/docs/drf/viewsets.py:55 msgid "delete an attribute group" msgstr "删除属性组" -#: core/docs/drf/viewsets.py:54 +#: core/docs/drf/viewsets.py:59 msgid "rewrite an existing attribute group saving non-editables" msgstr "重写保存不可编辑的现有属性组" -#: core/docs/drf/viewsets.py:58 +#: core/docs/drf/viewsets.py:63 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "重写现有属性组的某些字段,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:65 +#: core/docs/drf/viewsets.py:70 msgid "list all attributes (simple view)" msgstr "列出所有属性(简单视图)" -#: core/docs/drf/viewsets.py:69 +#: core/docs/drf/viewsets.py:74 msgid "retrieve a single attribute (detailed view)" msgstr "检索单个属性(详细视图)" -#: core/docs/drf/viewsets.py:73 +#: core/docs/drf/viewsets.py:78 msgid "create an attribute" msgstr "创建属性" -#: core/docs/drf/viewsets.py:77 +#: core/docs/drf/viewsets.py:82 msgid "delete an attribute" msgstr "删除属性" -#: core/docs/drf/viewsets.py:81 +#: core/docs/drf/viewsets.py:86 msgid "rewrite an existing attribute saving non-editables" msgstr "重写现有属性,保存不可编辑属性" -#: core/docs/drf/viewsets.py:85 +#: core/docs/drf/viewsets.py:90 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "重写现有属性的某些字段,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:92 +#: core/docs/drf/viewsets.py:97 msgid "list all attribute values (simple view)" msgstr "列出所有属性值(简单视图)" -#: core/docs/drf/viewsets.py:96 +#: core/docs/drf/viewsets.py:101 msgid "retrieve a single attribute value (detailed view)" msgstr "读取单个属性值(详细视图)" -#: core/docs/drf/viewsets.py:100 +#: core/docs/drf/viewsets.py:105 msgid "create an attribute value" msgstr "创建属性值" -#: core/docs/drf/viewsets.py:104 +#: core/docs/drf/viewsets.py:109 msgid "delete an attribute value" msgstr "删除属性值" -#: core/docs/drf/viewsets.py:108 +#: core/docs/drf/viewsets.py:113 msgid "rewrite an existing attribute value saving non-editables" msgstr "重写现有属性值,保存不可编辑属性" -#: core/docs/drf/viewsets.py:112 +#: core/docs/drf/viewsets.py:117 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "重写现有属性值的某些字段,保存不可编辑的属性值" -#: core/docs/drf/viewsets.py:119 +#: core/docs/drf/viewsets.py:124 msgid "list all categories (simple view)" msgstr "列出所有类别(简单视图)" -#: core/docs/drf/viewsets.py:123 +#: core/docs/drf/viewsets.py:128 msgid "retrieve a single category (detailed view)" msgstr "检索单个类别(详细视图)" -#: core/docs/drf/viewsets.py:127 +#: core/docs/drf/viewsets.py:132 msgid "create a category" msgstr "创建类别" -#: core/docs/drf/viewsets.py:131 +#: core/docs/drf/viewsets.py:136 msgid "delete a category" msgstr "删除类别" -#: core/docs/drf/viewsets.py:135 +#: core/docs/drf/viewsets.py:140 msgid "rewrite an existing category saving non-editables" msgstr "重写现有类别,保存不可编辑内容" -#: core/docs/drf/viewsets.py:139 +#: core/docs/drf/viewsets.py:144 msgid "rewrite some fields of an existing category saving non-editables" msgstr "重写现有类别的某些字段,保存不可编辑内容" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:151 msgid "list all orders (simple view)" msgstr "列出所有类别(简单视图)" -#: core/docs/drf/viewsets.py:147 +#: core/docs/drf/viewsets.py:152 msgid "for non-staff users, only their own orders are returned." msgstr "对于非工作人员用户,只有他们自己的订单才会被退回。" -#: core/docs/drf/viewsets.py:151 +#: core/docs/drf/viewsets.py:158 +msgid "" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" +msgstr "" +"在 human_readable_id、order_products.product.name 和 " +"order_products.product.partnumber 中进行不区分大小写的子串搜索" + +#: core/docs/drf/viewsets.py:165 +msgid "Filter orders with buy_time >= this ISO 8601 datetime" +msgstr "过滤买入时间 >= 此 ISO 8601 日期的订单" + +#: core/docs/drf/viewsets.py:170 +msgid "Filter orders with buy_time <= this ISO 8601 datetime" +msgstr "过滤买入时间 <= 此 ISO 8601 日期的订单" + +#: core/docs/drf/viewsets.py:175 +msgid "Filter by exact order UUID" +msgstr "按准确订单 UUID 筛选" + +#: core/docs/drf/viewsets.py:180 +msgid "Filter by exact human-readable order ID" +msgstr "根据准确的人工可读订单 ID 进行筛选" + +#: core/docs/drf/viewsets.py:185 +msgid "Filter by user's email (case-insensitive exact match)" +msgstr "按用户电子邮件过滤(不区分大小写精确匹配)" + +#: core/docs/drf/viewsets.py:190 +msgid "Filter by user's UUID" +msgstr "按用户的 UUID 筛选" + +#: core/docs/drf/viewsets.py:195 +msgid "Filter by order status (case-insensitive substring match)" +msgstr "按订单状态筛选(不区分大小写的子串匹配)" + +#: core/docs/drf/viewsets.py:201 +msgid "" +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." +msgstr "" +"按以下一项排序:uuid、human_readable_id、user_email、user、status、created、modified、buy_time、random。前缀\"-\"表示降序(例如\"-buy_time\")。" + +#: core/docs/drf/viewsets.py:210 msgid "retrieve a single order (detailed view)" msgstr "检索单个类别(详细视图)" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:214 msgid "create an order" msgstr "创建属性" -#: core/docs/drf/viewsets.py:156 +#: core/docs/drf/viewsets.py:215 msgid "doesn't work for non-staff users." msgstr "不适用于非工作人员用户。" -#: core/docs/drf/viewsets.py:160 +#: core/docs/drf/viewsets.py:219 msgid "delete an order" msgstr "删除属性" -#: core/docs/drf/viewsets.py:164 +#: core/docs/drf/viewsets.py:223 msgid "rewrite an existing order saving non-editables" msgstr "重写现有类别,保存不可编辑内容" -#: core/docs/drf/viewsets.py:168 +#: core/docs/drf/viewsets.py:227 msgid "rewrite some fields of an existing order saving non-editables" msgstr "重写现有类别的某些字段,保存不可编辑内容" -#: core/docs/drf/viewsets.py:172 +#: core/docs/drf/viewsets.py:231 msgid "purchase an order" msgstr "订购时的购买价格" -#: core/docs/drf/viewsets.py:174 +#: core/docs/drf/viewsets.py:233 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "完成订单购买。如果使用 \"force_balance\",则使用用户的余额完成购买;如果使用 \"force_payment\",则启动交易。" -#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 +#: core/docs/drf/viewsets.py:245 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "无需创建账户即可购买订单" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:246 msgid "finalizes the order purchase for a non-registered user." msgstr "完成非注册用户的订单购买。" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:254 msgid "add product to order" msgstr "在订单中添加产品" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:255 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 将产品添加到订单中。" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:260 msgid "add a list of products to order, quantities will not count" msgstr "添加要订购的产品列表,不计算数量" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:261 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 将产品列表添加到订单中。" -#: core/docs/drf/viewsets.py:207 +#: core/docs/drf/viewsets.py:266 msgid "remove product from order" msgstr "从订单中删除产品" -#: core/docs/drf/viewsets.py:208 +#: core/docs/drf/viewsets.py:267 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 从订单中删除产品。" -#: core/docs/drf/viewsets.py:213 +#: core/docs/drf/viewsets.py:272 msgid "remove product from order, quantities will not count" msgstr "从订单中删除产品,不计算数量" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:273 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "使用提供的 `product_uuid` 和 `attributes` 从订单中删除产品列表。" -#: core/docs/drf/viewsets.py:222 +#: core/docs/drf/viewsets.py:281 msgid "list all wishlists (simple view)" msgstr "列出所有属性(简单视图)" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:282 msgid "for non-staff users, only their own wishlists are returned." msgstr "对于非工作人员用户,只返回他们自己的愿望清单。" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:286 msgid "retrieve a single wishlist (detailed view)" msgstr "检索单个属性(详细视图)" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:290 msgid "create an wishlist" msgstr "创建属性" -#: core/docs/drf/viewsets.py:232 +#: core/docs/drf/viewsets.py:291 msgid "Doesn't work for non-staff users." msgstr "不适用于非工作人员用户。" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:295 msgid "delete an wishlist" msgstr "删除属性" -#: core/docs/drf/viewsets.py:240 +#: core/docs/drf/viewsets.py:299 msgid "rewrite an existing wishlist saving non-editables" msgstr "重写现有属性,保存不可编辑属性" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:303 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "重写现有属性的某些字段,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:307 msgid "add product to wishlist" msgstr "在订单中添加产品" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:308 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "使用提供的 `product_uuid` 将产品添加到愿望清单中" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:313 msgid "remove product from wishlist" msgstr "从愿望清单中删除产品" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:314 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "使用提供的 `product_uuid` 从愿望清单中删除产品" -#: core/docs/drf/viewsets.py:260 +#: core/docs/drf/viewsets.py:319 msgid "add many products to wishlist" msgstr "将许多产品添加到愿望清单" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:320 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 将许多产品添加到愿望清单中" -#: core/docs/drf/viewsets.py:266 +#: core/docs/drf/viewsets.py:325 msgid "remove many products from wishlist" msgstr "从订单中删除产品" -#: core/docs/drf/viewsets.py:267 +#: core/docs/drf/viewsets.py:326 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 从愿望清单中删除多个产品" -#: core/docs/drf/viewsets.py:274 +#: core/docs/drf/viewsets.py:333 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -487,59 +531,55 @@ msgstr "" "color=exact-red`、`size=gt-10`、`features=in-[\"wifi\"、\"bluetooth\"]`、\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:349 msgid "list all products (simple view)" msgstr "列出所有产品(简单视图)" -#: core/docs/drf/viewsets.py:295 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Product UUID" msgstr "(产品 UUID" -#: core/docs/drf/viewsets.py:301 +#: core/docs/drf/viewsets.py:360 msgid "(icontains) Product name" msgstr "(图示) 产品名称" -#: core/docs/drf/viewsets.py:307 +#: core/docs/drf/viewsets.py:366 msgid "(list) Category names, case-insensitive" msgstr "(列表) 类别名称,不区分大小写" -#: core/docs/drf/viewsets.py:313 +#: core/docs/drf/viewsets.py:372 msgid "(exact) Category UUID" msgstr "(类别 UUID" -#: core/docs/drf/viewsets.py:319 +#: core/docs/drf/viewsets.py:378 msgid "(list) Tag names, case-insensitive" msgstr "(标签名称,不区分大小写" -#: core/docs/drf/viewsets.py:325 +#: core/docs/drf/viewsets.py:384 msgid "(gte) Minimum stock price" msgstr "(gte) 最低股价" -#: core/docs/drf/viewsets.py:331 +#: core/docs/drf/viewsets.py:390 msgid "(lte) Maximum stock price" msgstr "(lte) 最高股价" -#: core/docs/drf/viewsets.py:337 +#: core/docs/drf/viewsets.py:396 msgid "(exact) Only active products" msgstr "(准确)只有活性产品" -#: core/docs/drf/viewsets.py:343 +#: core/docs/drf/viewsets.py:402 msgid "(iexact) Brand name" msgstr "(iexact) 品牌名称" -#: core/docs/drf/viewsets.py:355 +#: core/docs/drf/viewsets.py:414 msgid "(gt) Minimum stock quantity" msgstr "(gt) 最低库存量" -#: core/docs/drf/viewsets.py:361 -msgid "(exact) Product slug" -msgstr "(准确) 产品标题" - -#: core/docs/drf/viewsets.py:367 +#: core/docs/drf/viewsets.py:420 msgid "(exact) Digital vs. physical" msgstr "(准确)数字与实物" -#: core/docs/drf/viewsets.py:374 +#: core/docs/drf/viewsets.py:427 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -547,68 +587,125 @@ msgstr "" "用逗号分隔的要排序的字段列表。前缀为 `-` 表示降序。 \n" "**允许:** uuid、评分、名称、标签、创建、修改、价格、随机" -#: core/docs/drf/viewsets.py:388 +#: core/docs/drf/viewsets.py:441 msgid "retrieve a single product (detailed view)" msgstr "检索单个产品(详细视图)" -#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 -#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:446 core/docs/drf/viewsets.py:468 +#: core/docs/drf/viewsets.py:483 core/docs/drf/viewsets.py:498 +#: core/docs/drf/viewsets.py:513 msgid "Product UUID or slug" msgstr "产品 UUID 或 Slug" -#: core/docs/drf/viewsets.py:403 +#: core/docs/drf/viewsets.py:456 msgid "create a product" msgstr "创建产品" -#: core/docs/drf/viewsets.py:410 +#: core/docs/drf/viewsets.py:463 msgid "rewrite an existing product, preserving non-editable fields" msgstr "重写现有产品,保留不可编辑字段" -#: core/docs/drf/viewsets.py:425 +#: core/docs/drf/viewsets.py:478 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "更新现有产品的某些字段,保留不可编辑的字段" -#: core/docs/drf/viewsets.py:440 +#: core/docs/drf/viewsets.py:493 msgid "delete a product" msgstr "删除产品" -#: core/docs/drf/viewsets.py:458 +#: core/docs/drf/viewsets.py:508 +msgid "lists all permitted feedbacks for a product" +msgstr "列出产品的所有允许反馈" + +#: core/docs/drf/viewsets.py:526 msgid "list all addresses" msgstr "列出所有地址" -#: core/docs/drf/viewsets.py:465 +#: core/docs/drf/viewsets.py:533 msgid "retrieve a single address" msgstr "检索单个地址" -#: core/docs/drf/viewsets.py:472 +#: core/docs/drf/viewsets.py:540 msgid "create a new address" msgstr "创建新地址" -#: core/docs/drf/viewsets.py:480 +#: core/docs/drf/viewsets.py:548 msgid "delete an address" msgstr "删除地址" -#: core/docs/drf/viewsets.py:487 +#: core/docs/drf/viewsets.py:555 msgid "update an entire address" msgstr "更新整个地址" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:563 msgid "partially update an address" msgstr "部分更新地址" -#: core/docs/drf/viewsets.py:503 +#: core/docs/drf/viewsets.py:571 msgid "autocomplete address suggestions" msgstr "自动完成地址输入" -#: core/docs/drf/viewsets.py:508 +#: core/docs/drf/viewsets.py:576 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "原始数据查询字符串,请附加来自地理 IP 端点的数据" -#: core/docs/drf/viewsets.py:514 +#: core/docs/drf/viewsets.py:582 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "限制结果数量,1 < limit < 10,默认:5" +#: core/docs/drf/viewsets.py:595 +msgid "list all feedbacks (simple view)" +msgstr "列出所有反馈(简单视图)" + +#: core/docs/drf/viewsets.py:599 +msgid "retrieve a single feedback (detailed view)" +msgstr "检索单个反馈(详细视图)" + +#: core/docs/drf/viewsets.py:603 +msgid "create a feedback" +msgstr "创建反馈" + +#: core/docs/drf/viewsets.py:607 +msgid "delete a feedback" +msgstr "删除反馈" + +#: core/docs/drf/viewsets.py:611 +msgid "rewrite an existing feedback saving non-editables" +msgstr "重写现有的反馈,保存不可编辑的内容" + +#: core/docs/drf/viewsets.py:615 +msgid "rewrite some fields of an existing feedback saving non-editables" +msgstr "重写现有反馈的某些字段,保存不可编辑的内容" + +#: core/docs/drf/viewsets.py:622 +msgid "list all order–product relations (simple view)" +msgstr "列出所有订单-产品关系(简单视图)" + +#: core/docs/drf/viewsets.py:629 +msgid "retrieve a single order–product relation (detailed view)" +msgstr "检索单一订单-产品关系(详细视图)" + +#: core/docs/drf/viewsets.py:636 +msgid "create a new order–product relation" +msgstr "创建新的订单-产品关系" + +#: core/docs/drf/viewsets.py:643 +msgid "replace an existing order–product relation" +msgstr "替换现有的订单-产品关系" + +#: core/docs/drf/viewsets.py:650 +msgid "partially update an existing order–product relation" +msgstr "部分更新现有的订单-产品关系" + +#: core/docs/drf/viewsets.py:657 +msgid "delete an order–product relation" +msgstr "删除订单-产品关系" + +#: core/docs/drf/viewsets.py:664 +msgid "add or remove feedback on an order–product relation" +msgstr "添加或删除订单与产品关系中的反馈信息" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "未提供搜索条件。" @@ -643,7 +740,6 @@ msgstr "在订单中添加产品" #: core/graphene/mutations.py:100 core/graphene/mutations.py:126 #: core/graphene/mutations.py:228 core/graphene/mutations.py:274 -#: core/viewsets.py:285 #, python-brace-format msgid "order {order_uuid} not found" msgstr "未找到订单 {order_uuid}" @@ -665,7 +761,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "请提供 order_uuid 或 order_hr_id(互斥)!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:283 +#: core/graphene/mutations.py:475 core/viewsets.py:348 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy() 方法中的类型有误:{type(instance)!s}" @@ -717,7 +813,7 @@ msgstr "请以字符串形式发送属性,格式如 attr1=value1,attr2=value2" msgid "original address string provided by the user" msgstr "用户提供的原始地址字符串" -#: core/graphene/mutations.py:572 +#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:351 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} 不存在:{uuid}不存在" @@ -881,7 +977,7 @@ msgstr "促销代码" msgid "products on sale" msgstr "销售产品" -#: core/graphene/object_types.py:425 core/models.py:1097 +#: core/graphene/object_types.py:425 core/models.py:1121 msgid "promotions" msgstr "促销活动" @@ -897,11 +993,11 @@ msgstr "供应商" msgid "product" msgstr "产品" -#: core/graphene/object_types.py:441 core/models.py:1167 +#: core/graphene/object_types.py:441 core/models.py:1191 msgid "wishlisted products" msgstr "心愿单上的产品" -#: core/graphene/object_types.py:447 core/models.py:1184 +#: core/graphene/object_types.py:447 core/models.py:1208 msgid "wishlists" msgstr "愿望清单" @@ -909,7 +1005,7 @@ msgstr "愿望清单" msgid "tagged products" msgstr "标签产品" -#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:952 msgid "product tags" msgstr "产品标签" @@ -1055,8 +1151,8 @@ msgstr "该值的属性" msgid "the specific product associated with this attribute's value" msgstr "与该属性值相关的特定产品" -#: core/models.py:145 core/models.py:840 core/models.py:954 -#: core/models.py:1123 +#: core/models.py:145 core/models.py:851 core/models.py:978 +#: core/models.py:1147 msgid "associated product" msgstr "相关产品" @@ -1168,7 +1264,7 @@ msgstr "为产品提供一个明确的标识名称" msgid "product name" msgstr "产品名称" -#: core/models.py:308 core/models.py:1085 +#: core/models.py:308 core/models.py:1109 msgid "add a detailed description of the product" msgstr "添加产品的详细描述" @@ -1265,7 +1361,7 @@ msgstr "订单在其生命周期中的当前状态" msgid "order status" msgstr "订单状态" -#: core/models.py:482 core/models.py:817 +#: core/models.py:482 core/models.py:828 msgid "json structure of notifications to display to users" msgstr "向用户显示的通知的 JSON 结构,在管理用户界面中使用表格视图" @@ -1305,440 +1401,454 @@ msgstr "订购" msgid "a user must have only one pending order at a time" msgstr "用户每次只能有一个挂单!" -#: core/models.py:555 +#: core/models.py:559 msgid "you cannot add products to an order that is not a pending one" msgstr "您不能向非待处理订单添加产品" -#: core/models.py:560 +#: core/models.py:564 msgid "you cannot add inactive products to order" msgstr "您不能在订单中添加非活动产品" -#: core/models.py:577 +#: core/models.py:581 msgid "you cannot add more products than available in stock" msgstr "添加的产品数量不能超过现有库存" -#: core/models.py:586 core/models.py:606 core/models.py:630 -#: core/models.py:1194 core/models.py:1206 +#: core/models.py:590 core/models.py:610 core/models.py:634 +#: core/models.py:1218 core/models.py:1230 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} 不存在:{product_uuid} 不存在" -#: core/models.py:590 core/models.py:614 core/models.py:622 +#: core/models.py:594 core/models.py:618 core/models.py:626 msgid "you cannot remove products from an order that is not a pending one" msgstr "您不能从非待处理订单中删除产品" -#: core/models.py:610 +#: core/models.py:614 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "查询 <{query}> 时 {name} 不存在" -#: core/models.py:641 +#: core/models.py:645 msgid "promocode does not exist" msgstr "促销代码不存在" -#: core/models.py:650 +#: core/models.py:654 msgid "you can only buy physical products with shipping address specified" msgstr "您只能购买指定送货地址的实物产品!" -#: core/models.py:669 +#: core/models.py:673 msgid "address does not exist" msgstr "地址不存在" -#: core/models.py:680 core/models.py:721 +#: core/models.py:684 core/models.py:727 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "您现在无法购买,请稍后再试。" -#: core/models.py:683 +#: core/models.py:687 msgid "invalid force value" msgstr "力值无效" -#: core/models.py:688 core/models.py:724 +#: core/models.py:692 core/models.py:730 msgid "you cannot purchase an empty order!" msgstr "您不能购买空单!" -#: core/models.py:703 +#: core/models.py:707 msgid "insufficient funds to complete the order" msgstr "资金不足,无法完成订单" -#: core/models.py:733 +#: core/models.py:739 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "未经注册不能购买,请提供以下信息:客户姓名、客户电子邮件、客户电话号码" -#: core/models.py:742 +#: core/models.py:748 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "付款方式无效:来自 {available_payment_methods} 的 {payment_method} !" -#: core/models.py:805 +#: core/models.py:816 msgid "the price paid by the customer for this product at purchase time" msgstr "客户购买该产品时支付的价格" -#: core/models.py:806 +#: core/models.py:817 msgid "purchase price at order time" msgstr "订购时的购买价格" -#: core/models.py:811 +#: core/models.py:822 msgid "internal comments for admins about this ordered product" msgstr "管理员对该订购产品的内部评论" -#: core/models.py:812 +#: core/models.py:823 msgid "internal comments" msgstr "内部意见" -#: core/models.py:818 +#: core/models.py:829 msgid "user notifications" msgstr "用户通知" -#: core/models.py:823 +#: core/models.py:834 msgid "json representation of this item's attributes" msgstr "该项属性的 JSON 表示形式" -#: core/models.py:824 +#: core/models.py:835 msgid "ordered product attributes" msgstr "有序的产品属性" -#: core/models.py:829 +#: core/models.py:840 msgid "reference to the parent order that contains this product" msgstr "对包含该产品的父订单的引用" -#: core/models.py:830 +#: core/models.py:841 msgid "parent order" msgstr "父顺序" -#: core/models.py:839 +#: core/models.py:850 msgid "the specific product associated with this order line" msgstr "与该订单项目相关的具体产品" -#: core/models.py:846 +#: core/models.py:857 msgid "quantity of this specific product in the order" msgstr "订单中该特定产品的数量" -#: core/models.py:847 +#: core/models.py:858 msgid "product quantity" msgstr "产品数量" -#: core/models.py:854 +#: core/models.py:865 msgid "current status of this product in the order" msgstr "订单中该产品的当前状态" -#: core/models.py:855 +#: core/models.py:866 msgid "product line status" msgstr "产品系列状态" -#: core/models.py:913 +#: core/models.py:918 +#, python-brace-format +msgid "wrong action specified for feedback: {action}" +msgstr "为反馈指定了错误的操作:{action}" + +#: core/models.py:926 +msgid "you cannot feedback an order which is not received" +msgstr "您不能反馈未收到的订单" + +#: core/models.py:937 msgid "internal tag identifier for the product tag" msgstr "产品标签的内部标签标识符" -#: core/models.py:914 +#: core/models.py:938 msgid "tag name" msgstr "标签名称" -#: core/models.py:918 +#: core/models.py:942 msgid "user-friendly name for the product tag" msgstr "方便用户使用的产品标签名称" -#: core/models.py:919 +#: core/models.py:943 msgid "tag display name" msgstr "标签显示名称" -#: core/models.py:927 +#: core/models.py:951 msgid "product tag" msgstr "产品标签" -#: core/models.py:936 +#: core/models.py:960 msgid "provide alternative text for the image for accessibility" msgstr "为图像提供替代文字,以便于访问" -#: core/models.py:937 +#: core/models.py:961 msgid "image alt text" msgstr "图片 alt 文本" -#: core/models.py:940 +#: core/models.py:964 msgid "upload the image file for this product" msgstr "上传该产品的图片文件" -#: core/models.py:941 core/models.py:966 +#: core/models.py:965 core/models.py:990 msgid "product image" msgstr "产品图片" -#: core/models.py:947 +#: core/models.py:971 msgid "determines the order in which images are displayed" msgstr "确定图像的显示顺序" -#: core/models.py:948 +#: core/models.py:972 msgid "display priority" msgstr "显示优先级" -#: core/models.py:953 +#: core/models.py:977 msgid "the product that this image represents" msgstr "该图片所代表的产品" -#: core/models.py:967 +#: core/models.py:991 msgid "product images" msgstr "产品图片" -#: core/models.py:977 +#: core/models.py:1001 msgid "unique code used by a user to redeem a discount" msgstr "用户用于兑换折扣的唯一代码" -#: core/models.py:978 +#: core/models.py:1002 msgid "promo code identifier" msgstr "促销代码标识符" -#: core/models.py:985 +#: core/models.py:1009 msgid "fixed discount amount applied if percent is not used" msgstr "如果不使用百分比,则使用固定折扣额" -#: core/models.py:986 +#: core/models.py:1010 msgid "fixed discount amount" msgstr "固定折扣额" -#: core/models.py:992 +#: core/models.py:1016 msgid "percentage discount applied if fixed amount is not used" msgstr "未使用固定金额时适用的折扣百分比" -#: core/models.py:993 +#: core/models.py:1017 msgid "percentage discount" msgstr "折扣百分比" -#: core/models.py:998 +#: core/models.py:1022 msgid "timestamp when the promocode expires" msgstr "促销代码过期的时间戳" -#: core/models.py:999 +#: core/models.py:1023 msgid "end validity time" msgstr "结束有效时间" -#: core/models.py:1004 +#: core/models.py:1028 msgid "timestamp from which this promocode is valid" msgstr "该促销代码有效的时间戳" -#: core/models.py:1005 +#: core/models.py:1029 msgid "start validity time" msgstr "开始有效时间" -#: core/models.py:1010 +#: core/models.py:1034 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "使用促销代码的时间戳,如果尚未使用,则留空" -#: core/models.py:1011 +#: core/models.py:1035 msgid "usage timestamp" msgstr "使用时间戳" -#: core/models.py:1016 +#: core/models.py:1040 msgid "user assigned to this promocode if applicable" msgstr "分配给此促销代码的用户(如适用" -#: core/models.py:1017 +#: core/models.py:1041 msgid "assigned user" msgstr "指定用户" -#: core/models.py:1024 +#: core/models.py:1048 msgid "promo code" msgstr "促销代码" -#: core/models.py:1025 +#: core/models.py:1049 msgid "promo codes" msgstr "促销代码" -#: core/models.py:1032 +#: core/models.py:1056 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "只能定义一种折扣类型(金额或百分比),而不能同时定义两种类型或两者都不定义。" -#: core/models.py:1047 +#: core/models.py:1071 msgid "promocode already used" msgstr "促销代码已被使用" -#: core/models.py:1061 +#: core/models.py:1085 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "促销代码 {self.uuid} 的折扣类型无效" -#: core/models.py:1073 +#: core/models.py:1097 msgid "percentage discount for the selected products" msgstr "所选产品的折扣百分比" -#: core/models.py:1074 +#: core/models.py:1098 msgid "discount percentage" msgstr "折扣百分比" -#: core/models.py:1079 +#: core/models.py:1103 msgid "provide a unique name for this promotion" msgstr "为该促销活动提供一个独特的名称" -#: core/models.py:1080 +#: core/models.py:1104 msgid "promotion name" msgstr "推广名称" -#: core/models.py:1086 +#: core/models.py:1110 msgid "promotion description" msgstr "促销说明" -#: core/models.py:1091 +#: core/models.py:1115 msgid "select which products are included in this promotion" msgstr "选择促销活动包括哪些产品" -#: core/models.py:1092 +#: core/models.py:1116 msgid "included products" msgstr "包括产品" -#: core/models.py:1096 +#: core/models.py:1120 msgid "promotion" msgstr "促销活动" -#: core/models.py:1111 +#: core/models.py:1135 msgid "the vendor supplying this product stock" msgstr "提供该产品库存的供应商" -#: core/models.py:1112 +#: core/models.py:1136 msgid "associated vendor" msgstr "相关供应商" -#: core/models.py:1116 +#: core/models.py:1140 msgid "final price to the customer after markups" msgstr "加价后给客户的最终价格" -#: core/models.py:1117 +#: core/models.py:1141 msgid "selling price" msgstr "销售价格" -#: core/models.py:1122 +#: core/models.py:1146 msgid "the product associated with this stock entry" msgstr "与该库存条目相关的产品" -#: core/models.py:1130 +#: core/models.py:1154 msgid "the price paid to the vendor for this product" msgstr "为该产品支付给供应商的价格" -#: core/models.py:1131 +#: core/models.py:1155 msgid "vendor purchase price" msgstr "供应商购买价格" -#: core/models.py:1135 +#: core/models.py:1159 msgid "available quantity of the product in stock" msgstr "产品的可用库存量" -#: core/models.py:1136 +#: core/models.py:1160 msgid "quantity in stock" msgstr "库存数量" -#: core/models.py:1140 +#: core/models.py:1164 msgid "vendor-assigned SKU for identifying the product" msgstr "供应商指定的 SKU,用于识别产品" -#: core/models.py:1141 +#: core/models.py:1165 msgid "vendor sku" msgstr "供应商 SKU" -#: core/models.py:1147 +#: core/models.py:1171 msgid "digital file associated with this stock if applicable" msgstr "与该库存相关的数字文件(如适用" -#: core/models.py:1148 +#: core/models.py:1172 msgid "digital file" msgstr "数字文件" -#: core/models.py:1157 +#: core/models.py:1181 msgid "stock entries" msgstr "库存条目" -#: core/models.py:1166 +#: core/models.py:1190 msgid "products that the user has marked as wanted" msgstr "用户标记为想要的产品" -#: core/models.py:1174 +#: core/models.py:1198 msgid "user who owns this wishlist" msgstr "拥有此愿望清单的用户" -#: core/models.py:1175 +#: core/models.py:1199 msgid "wishlist owner" msgstr "心愿单所有者" -#: core/models.py:1183 +#: core/models.py:1207 msgid "wishlist" msgstr "愿望清单" -#: core/models.py:1228 +#: core/models.py:1252 msgid "download" msgstr "下载" -#: core/models.py:1229 +#: core/models.py:1253 msgid "downloads" msgstr "下载" -#: core/models.py:1237 +#: core/models.py:1261 msgid "you can not download a digital asset for a non-finished order" msgstr "您无法下载未完成订单的数字资产" -#: core/models.py:1249 +#: core/models.py:1273 msgid "documentary" msgstr "纪录片" -#: core/models.py:1250 +#: core/models.py:1274 msgid "documentaries" msgstr "纪录片" -#: core/models.py:1260 +#: core/models.py:1284 msgid "unresolved" msgstr "未解决" -#: core/models.py:1269 +#: core/models.py:1293 msgid "address line for the customer" msgstr "客户地址栏" -#: core/models.py:1270 +#: core/models.py:1294 msgid "address line" msgstr "地址栏" -#: core/models.py:1272 +#: core/models.py:1296 msgid "street" msgstr "街道" -#: core/models.py:1273 +#: core/models.py:1297 msgid "district" msgstr "地区" -#: core/models.py:1274 +#: core/models.py:1298 msgid "city" msgstr "城市" -#: core/models.py:1275 +#: core/models.py:1299 msgid "region" msgstr "地区" -#: core/models.py:1276 +#: core/models.py:1300 msgid "postal code" msgstr "邮政编码" -#: core/models.py:1277 +#: core/models.py:1301 msgid "country" msgstr "国家" -#: core/models.py:1280 +#: core/models.py:1304 msgid "geolocation point: (longitude, latitude)" msgstr "地理位置点(经度、纬度)" -#: core/models.py:1283 +#: core/models.py:1307 msgid "full JSON response from geocoder for this address" msgstr "地理编码器对此地址的完整 JSON 响应" -#: core/models.py:1285 +#: core/models.py:1309 msgid "stored JSON response from the geocoding service" msgstr "存储的来自地理编码服务的 JSON 响应" -#: core/models.py:1292 +#: core/models.py:1316 msgid "address" msgstr "地址" -#: core/models.py:1293 +#: core/models.py:1317 msgid "addresses" msgstr "地址" +#: core/serializers/utility.py:76 +msgid "" +"you must provide a comment, rating, and order product uuid to add feedback." +msgstr "您必须提供评论、评级和订单产品 uuid 才能添加反馈。" + #: core/signals.py:59 msgid "error during promocode creation: {e!s}" msgstr "创建促销代码时出错:{e!s}" @@ -1960,7 +2070,7 @@ msgstr "您只能下载一次数字资产" msgid "favicon not found" msgstr "未找到 favicon" -#: core/viewsets.py:589 +#: core/viewsets.py:680 #, python-brace-format msgid "Geocoding error: {e}" msgstr "地理编码错误:{e}" diff --git a/core/management/commands/fix_fuzzy.py b/core/management/commands/fix_fuzzy.py new file mode 100644 index 00000000..86bbfb1e --- /dev/null +++ b/core/management/commands/fix_fuzzy.py @@ -0,0 +1,80 @@ +import os + +from django.conf import settings +from django.core.management.base import BaseCommand + + +class Command(BaseCommand): + help = ( + "Traverse all .po files under BASE_DIR (or a given base-dir), " + "remove 'fuzzy' flags, drop '#| msgid' comments, and reset msgstr to empty." + ) + + def add_arguments(self, parser): + parser.add_argument( + '-b', '--base-dir', + default=settings.BASE_DIR, + help="Root directory to start searching for .po files (default: settings.BASE_DIR)." + ) + + def handle(self, *args, **options): + base_dir = options['base_dir'] + for root, dirs, files in os.walk(base_dir): + for fname in files: + if not fname.endswith('.po'): + continue + path = os.path.join(root, fname) + self.stdout.write(f"→ Processing {path}") + self._clean_po_file(path) + + def _clean_po_file(self, filepath): + with open(filepath, 'r', encoding='utf-8') as f: + lines = f.readlines() + + entries, curr = [], [] + for line in lines: + if line.strip() == '': + if curr: + entries.append(curr) + curr = [] + else: + curr.append(line) + if curr: + entries.append(curr) + + new_lines = [] + changed = False + + for ent in entries: + if ent and ent[0].startswith('msgid ""'): + new_lines.extend(ent) + new_lines.append('\n') + continue + + fuzzy_idx = next( + (i for i, l in enumerate(ent) if l.startswith('#,') and 'fuzzy' in l), + None + ) + if fuzzy_idx is not None: + flag_line = ent[fuzzy_idx] + remaining = [f.strip() for f in flag_line[2:].split(',') if f.strip() != 'fuzzy'] + if remaining: + ent[fuzzy_idx] = '#, ' + ', '.join(remaining) + '\n' + else: + del ent[fuzzy_idx] + + ent = [l for l in ent if not l.startswith('#| msgid')] + + ent = ['msgstr ""\n' if l.startswith('msgstr') else l for l in ent] + + changed = True + + new_lines.extend(ent) + new_lines.append('\n') + + if changed: + with open(filepath, 'w', encoding='utf-8') as f: + f.writelines(new_lines) + self.stdout.write(self.style.SUCCESS(f" → Updated {filepath}")) + else: + self.stdout.write(f" (no fuzzy entries found)") diff --git a/payments/locale/ar_AR/LC_MESSAGES/django.po b/payments/locale/ar_AR/LC_MESSAGES/django.po index 75438b77..d3c1097f 100644 --- a/payments/locale/ar_AR/LC_MESSAGES/django.po +++ b/payments/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/cs_CZ/LC_MESSAGES/django.po b/payments/locale/cs_CZ/LC_MESSAGES/django.po index 68d6d684..37c28f47 100644 --- a/payments/locale/cs_CZ/LC_MESSAGES/django.po +++ b/payments/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/da_DK/LC_MESSAGES/django.po b/payments/locale/da_DK/LC_MESSAGES/django.po index f5c2a4ec..fb2e15de 100644 --- a/payments/locale/da_DK/LC_MESSAGES/django.po +++ b/payments/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/de_DE/LC_MESSAGES/django.po b/payments/locale/de_DE/LC_MESSAGES/django.po index bbb5124e..642e1fae 100644 --- a/payments/locale/de_DE/LC_MESSAGES/django.po +++ b/payments/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/en_GB/LC_MESSAGES/django.po b/payments/locale/en_GB/LC_MESSAGES/django.po index 46d92d2a..be23bf55 100644 --- a/payments/locale/en_GB/LC_MESSAGES/django.po +++ b/payments/locale/en_GB/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -# ,fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/en_US/LC_MESSAGES/django.po b/payments/locale/en_US/LC_MESSAGES/django.po index e4c19c88..605f7fe0 100644 --- a/payments/locale/en_US/LC_MESSAGES/django.po +++ b/payments/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/es_ES/LC_MESSAGES/django.po b/payments/locale/es_ES/LC_MESSAGES/django.po index 5fafb5be..eb789a41 100644 --- a/payments/locale/es_ES/LC_MESSAGES/django.po +++ b/payments/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/fr_FR/LC_MESSAGES/django.po b/payments/locale/fr_FR/LC_MESSAGES/django.po index 7a85ea71..d0474963 100644 --- a/payments/locale/fr_FR/LC_MESSAGES/django.po +++ b/payments/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/hi_IN/LC_MESSAGES/django.po b/payments/locale/hi_IN/LC_MESSAGES/django.po index cd0fd58d..e6b856d2 100644 --- a/payments/locale/hi_IN/LC_MESSAGES/django.po +++ b/payments/locale/hi_IN/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" diff --git a/payments/locale/it_IT/LC_MESSAGES/django.po b/payments/locale/it_IT/LC_MESSAGES/django.po index 201010cf..f7937d89 100644 --- a/payments/locale/it_IT/LC_MESSAGES/django.po +++ b/payments/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/ja_JP/LC_MESSAGES/django.po b/payments/locale/ja_JP/LC_MESSAGES/django.po index 1d3d037c..dc961aa1 100644 --- a/payments/locale/ja_JP/LC_MESSAGES/django.po +++ b/payments/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/kk_KZ/LC_MESSAGES/django.po b/payments/locale/kk_KZ/LC_MESSAGES/django.po index cd0fd58d..e6b856d2 100644 --- a/payments/locale/kk_KZ/LC_MESSAGES/django.po +++ b/payments/locale/kk_KZ/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" diff --git a/payments/locale/nl_NL/LC_MESSAGES/django.po b/payments/locale/nl_NL/LC_MESSAGES/django.po index b45c9b88..33cbeb36 100644 --- a/payments/locale/nl_NL/LC_MESSAGES/django.po +++ b/payments/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/pt_BR/LC_MESSAGES/django.po b/payments/locale/pt_BR/LC_MESSAGES/django.po index b81096f2..3ef95010 100644 --- a/payments/locale/pt_BR/LC_MESSAGES/django.po +++ b/payments/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/ro_RO/LC_MESSAGES/django.po b/payments/locale/ro_RO/LC_MESSAGES/django.po index ba49fa6d..2643b3ac 100644 --- a/payments/locale/ro_RO/LC_MESSAGES/django.po +++ b/payments/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/ru_RU/LC_MESSAGES/django.po b/payments/locale/ru_RU/LC_MESSAGES/django.po index c6941993..4235133b 100644 --- a/payments/locale/ru_RU/LC_MESSAGES/django.po +++ b/payments/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/payments/locale/zh_Hans/LC_MESSAGES/django.po b/payments/locale/zh_Hans/LC_MESSAGES/django.po index 47a3fabe..5cc0756a 100644 --- a/payments/locale/zh_Hans/LC_MESSAGES/django.po +++ b/payments/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" diff --git a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po index bd873ab7..fc189b84 100644 --- a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -100,20 +100,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "التعامل مع تحميل الصورة الرمزية للمستخدم" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "تأكيد إعادة تعيين كلمة مرور المستخدم" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "كلمات المرور غير متطابقة" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "تنشيط حساب مستخدم" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "رابط التفعيل غير صالح أو أن الحساب مفعل بالفعل" diff --git a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po b/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po index e0635ba1..4c96ab95 100644 --- a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -98,20 +98,20 @@ msgstr "Obnovení hesla uživatele odesláním e-mailu s obnovením hesla." msgid "handle avatar upload for a user" msgstr "Zpracování nahrávání avataru pro uživatele" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Potvrzení obnovení hesla uživatele" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Hesla se neshodují" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Aktivace účtu uživatele" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "Aktivační odkaz je neplatný nebo je účet již aktivován" diff --git a/vibes_auth/locale/da_DK/LC_MESSAGES/django.po b/vibes_auth/locale/da_DK/LC_MESSAGES/django.po index e0587979..94678e78 100644 --- a/vibes_auth/locale/da_DK/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -100,20 +100,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "Håndter upload af avatar for en bruger" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Bekræft nulstilling af en brugers adgangskode" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Adgangskoderne stemmer ikke overens" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Aktivér en brugers konto" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "Aktiveringslinket er ugyldigt, eller kontoen er allerede aktiveret" diff --git a/vibes_auth/locale/de_DE/LC_MESSAGES/django.po b/vibes_auth/locale/de_DE/LC_MESSAGES/django.po index 2add1c35..5f6695e4 100644 --- a/vibes_auth/locale/de_DE/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -101,20 +101,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "Avatar-Upload für einen Benutzer verwalten" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Bestätigen Sie das Zurücksetzen des Passworts eines Benutzers" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Passwörter stimmen nicht überein" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Aktivieren eines Benutzerkontos" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "Aktivierungslink ist ungültig oder Konto bereits aktiviert" diff --git a/vibes_auth/locale/en_GB/LC_MESSAGES/django.po b/vibes_auth/locale/en_GB/LC_MESSAGES/django.po index ecac6063..3a709f79 100644 --- a/vibes_auth/locale/en_GB/LC_MESSAGES/django.po +++ b/vibes_auth/locale/en_GB/LC_MESSAGES/django.po @@ -3,12 +3,11 @@ # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -103,20 +102,20 @@ msgstr "Reset a user's password by sending a reset password email" msgid "handle avatar upload for a user" msgstr "Handle avatar upload for a user" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Passwords do not match" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Activate a user's account" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "Activation link is invalid or account already activated" diff --git a/vibes_auth/locale/en_US/LC_MESSAGES/django.po b/vibes_auth/locale/en_US/LC_MESSAGES/django.po index 16ab1d4e..f19e3d94 100644 --- a/vibes_auth/locale/en_US/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -98,20 +98,20 @@ msgstr "Reset a user's password by sending a reset password email" msgid "handle avatar upload for a user" msgstr "Handle avatar upload for a user" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Passwords do not match" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Activate a user's account" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "Activation link is invalid or account already activated" diff --git a/vibes_auth/locale/es_ES/LC_MESSAGES/django.po b/vibes_auth/locale/es_ES/LC_MESSAGES/django.po index 5f5c66f0..03b073d3 100644 --- a/vibes_auth/locale/es_ES/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -100,20 +100,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "Gestionar la subida de avatares de un usuario" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Confirmar el restablecimiento de la contraseña de un usuario" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Las contraseñas no coinciden" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Activar la cuenta de un usuario" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "El enlace de activación no es válido o la cuenta ya está activada" diff --git a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po index 933f7ce8..33d03599 100644 --- a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -102,20 +102,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "Gérer le téléchargement d'un avatar pour un utilisateur" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Confirmer la réinitialisation du mot de passe d'un utilisateur" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Les mots de passe ne correspondent pas" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Activer le compte d'un utilisateur" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "Le lien d'activation n'est pas valide ou le compte est déjà activé" diff --git a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po index 2904516b..fd1393e3 100644 --- a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po +++ b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po @@ -3,12 +3,11 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -102,20 +101,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "" diff --git a/vibes_auth/locale/it_IT/LC_MESSAGES/django.po b/vibes_auth/locale/it_IT/LC_MESSAGES/django.po index c91acb60..617f6454 100644 --- a/vibes_auth/locale/it_IT/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -101,20 +101,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "Gestire il caricamento dell'avatar per un utente" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Confermare la reimpostazione della password di un utente" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Le password non corrispondono" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Attivare l'account di un utente" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "Il link di attivazione non è valido o l'account è già stato attivato." diff --git a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po index 6878d6b2..a50ce9f5 100644 --- a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -98,20 +98,20 @@ msgstr "パスワード再設定メールを送信して、ユーザーのパス msgid "handle avatar upload for a user" msgstr "ユーザーのアバターアップロードを処理する" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "ユーザーのパスワード・リセットを確認する" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "パスワードが一致しない" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "ユーザーアカウントの有効化" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "" "アクティベーションリンクが無効であるか、アカウントがすでにアクティベーション" diff --git a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po index 2904516b..fd1393e3 100644 --- a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po +++ b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po @@ -3,12 +3,11 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -102,20 +101,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "" diff --git a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po index 2a1338b0..6f8d501d 100644 --- a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -100,20 +100,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "Avatar uploaden voor een gebruiker afhandelen" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Bevestig het resetten van het wachtwoord van een gebruiker" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Wachtwoorden komen niet overeen" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Een gebruikersaccount activeren" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "Activeringslink is ongeldig of account is al geactiveerd" diff --git a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po b/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po index 13e0f5df..ef4bd4ef 100644 --- a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -100,20 +100,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "Obsługa przesyłania awatara dla użytkownika" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Potwierdzenie zresetowania hasła użytkownika" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Hasła nie są zgodne" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Aktywacja konta użytkownika" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "Link aktywacyjny jest nieprawidłowy lub konto zostało już aktywowane." diff --git a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po index c76161b2..0ba3f168 100644 --- a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -99,20 +99,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "Manipular o upload do avatar de um usuário" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Confirmar a redefinição de senha de um usuário" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "As senhas não correspondem" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Ativar a conta de um usuário" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "O link de ativação é inválido ou a conta já está ativada" diff --git a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po index 6ed4bc7a..2ef17757 100644 --- a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -101,20 +101,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "Gestionarea încărcării avatarului pentru un utilizator" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Confirmați resetarea parolei unui utilizator" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Parolele nu se potrivesc" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Activați contul unui utilizator" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "Linkul de activare este invalid sau contul este deja activat" diff --git a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po index a8898c69..1ab4ac34 100644 --- a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -100,20 +100,20 @@ msgstr "" msgid "handle avatar upload for a user" msgstr "Обработка загрузки аватара для пользователя" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "Подтверждение сброса пароля пользователя" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Пароли не совпадают" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "Активация учетной записи пользователя" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "Ссылка на активацию недействительна или аккаунт уже активирован" diff --git a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po index 7d236ddf..13bf9e79 100644 --- a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/vibes_auth/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-06-07 14:58+0100\n" +"POT-Creation-Date: 2025-06-08 19:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -98,20 +98,20 @@ msgstr "通过发送重置密码电子邮件重置用户密码" msgid "handle avatar upload for a user" msgstr "处理用户的头像上传" -#: vibes_auth/docs/drf/viewsets.py:46 +#: vibes_auth/docs/drf/viewsets.py:53 msgid "confirm a user's password reset" msgstr "确认用户密码重置" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 +#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "密码不匹配" -#: vibes_auth/docs/drf/viewsets.py:55 +#: vibes_auth/docs/drf/viewsets.py:62 msgid "activate a user's account" msgstr "激活用户帐户" -#: vibes_auth/docs/drf/viewsets.py:59 +#: vibes_auth/docs/drf/viewsets.py:66 msgid "activation link is invalid or account already activated" msgstr "激活链接无效或账户已激活"